aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDLL/concommand.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'NorthstarDLL/concommand.cpp')
-rw-r--r--NorthstarDLL/concommand.cpp53
1 files changed, 32 insertions, 21 deletions
diff --git a/NorthstarDLL/concommand.cpp b/NorthstarDLL/concommand.cpp
index 1bdda91b..6d77e137 100644
--- a/NorthstarDLL/concommand.cpp
+++ b/NorthstarDLL/concommand.cpp
@@ -1,27 +1,8 @@
#include "pch.h"
#include "concommand.h"
-#include "gameutils.h"
#include "misccommands.h"
-#include <iostream>
-
-typedef void (*ConCommandConstructorType)(
- ConCommand* newCommand, const char* name, void (*callback)(const CCommand&), const char* helpString, int flags, void* parent);
-ConCommandConstructorType conCommandConstructor;
-
-void RegisterConCommand(const char* name, void (*callback)(const CCommand&), const char* helpString, int flags)
-{
- spdlog::info("Registering ConCommand {}", name);
-
- // no need to free this ever really, it should exist as long as game does
- ConCommand* newCommand = new ConCommand;
- conCommandConstructor(newCommand, name, callback, helpString, flags, nullptr);
-}
-void InitialiseConCommands(HMODULE baseAddress)
-{
- conCommandConstructor = (ConCommandConstructorType)((char*)baseAddress + 0x415F60);
- AddMiscConCommands();
-}
+#include <iostream>
//-----------------------------------------------------------------------------
// Purpose: Returns true if this is a command
@@ -57,7 +38,7 @@ bool ConCommandBase::IsRegistered(void) const
//-----------------------------------------------------------------------------
bool ConCommandBase::IsFlagSet(int nFlags) const
{
- return false; // !TODO: Returning false on every query? (original implementation in Northstar before ConCommandBase refactor)
+ return m_nFlags & nFlags;
}
//-----------------------------------------------------------------------------
@@ -138,3 +119,33 @@ char* ConCommandBase::CopyString(const char* szFrom) const
}
return szTo;
}
+
+typedef void (*ConCommandConstructorType)(
+ ConCommand* newCommand, const char* name, FnCommandCallback_t callback, const char* helpString, int flags, void* parent);
+ConCommandConstructorType ConCommandConstructor;
+
+void RegisterConCommand(const char* name, FnCommandCallback_t callback, const char* helpString, int flags)
+{
+ spdlog::info("Registering ConCommand {}", name);
+
+ // no need to free this ever really, it should exist as long as game does
+ ConCommand* newCommand = new ConCommand;
+ ConCommandConstructor(newCommand, name, callback, helpString, flags, nullptr);
+}
+
+void RegisterConCommand(
+ const char* name, FnCommandCallback_t callback, const char* helpString, int flags, FnCommandCompletionCallback completionCallback)
+{
+ spdlog::info("Registering ConCommand {}", name);
+
+ // no need to free this ever really, it should exist as long as game does
+ ConCommand* newCommand = new ConCommand;
+ ConCommandConstructor(newCommand, name, callback, helpString, flags, nullptr);
+ newCommand->m_pCompletionCallback = completionCallback;
+}
+
+ON_DLL_LOAD("engine.dll", ConCommand, (CModule module))
+{
+ ConCommandConstructor = module.Offset(0x415F60).As<ConCommandConstructorType>();
+ AddMiscConCommands();
+}