aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDedicatedTest/cvar.cpp
diff options
context:
space:
mode:
authorKawe Mazidjatari <48657826+Mauler125@users.noreply.github.com>2022-02-23 22:27:08 +0100
committerGitHub <noreply@github.com>2022-02-23 18:27:08 -0300
commit4f28a07d0562ca905bbcdb010b69604c330194bb (patch)
tree32ce0e8b0eff10cba6944a561e3538931a6033b6 /NorthstarDedicatedTest/cvar.cpp
parent8c9f34283f8670dda98959d0785d682e6f652a93 (diff)
downloadNorthstarLauncher-4f28a07d0562ca905bbcdb010b69604c330194bb.tar.gz
NorthstarLauncher-4f28a07d0562ca905bbcdb010b69604c330194bb.zip
ConVar class rebuild (#90)
* Implement CCvar class with mapped out vtable funcs * Rebuilded ConVar class + code overhaul to use new system * ConVar class is now properly mapped out for r2 (0x80 in size). * Reimplemented and exposed all frequently used ConVar class methods to the SDK. * Implement frequently used CCvar class methods. * Implement all CCVarIteratorInternal class methods. * Performed additional cleanup over the SDK to use new system instead. * ConVar class improvements + rebuilded ConCommand struct * Fix actual struct size for ConCommand
Diffstat (limited to 'NorthstarDedicatedTest/cvar.cpp')
-rw-r--r--NorthstarDedicatedTest/cvar.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/NorthstarDedicatedTest/cvar.cpp b/NorthstarDedicatedTest/cvar.cpp
new file mode 100644
index 00000000..7f8c35d7
--- /dev/null
+++ b/NorthstarDedicatedTest/cvar.cpp
@@ -0,0 +1,65 @@
+#include "pch.h"
+#include "cvar.h"
+#include "convar.h"
+#include "concommand.h"
+
+//-----------------------------------------------------------------------------
+// Purpose: finds base commands.
+// Input : *pszCommandName -
+//-----------------------------------------------------------------------------
+ConCommandBase* CCvar::FindCommandBase(const char* pszCommandName)
+{
+ static int index = 14;
+ return CallVFunc<ConCommandBase*>(index, this, pszCommandName);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: finds ConVars.
+// Input : *pszVarName -
+//-----------------------------------------------------------------------------
+ConVar* CCvar::FindVar(const char* pszVarName)
+{
+ static int index = 16;
+ return CallVFunc<ConVar*>(index, this, pszVarName);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: finds ConCommands.
+// Input : *pszCommandName -
+//-----------------------------------------------------------------------------
+ConCommand* CCvar::FindCommand(const char* pszCommandName)
+{
+ static int index = 18;
+ return CallVFunc<ConCommand*>(index, this, pszCommandName);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: iterates over all ConVars
+//-----------------------------------------------------------------------------
+CCVarIteratorInternal* CCvar::FactoryInternalIterator()
+{
+ static int index = 41;
+ return CallVFunc<CCVarIteratorInternal*>(index, this);
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: returns all ConVars
+//-----------------------------------------------------------------------------
+std::unordered_map<std::string, ConCommandBase*> CCvar::DumpToMap()
+{
+ std::stringstream ss;
+ CCVarIteratorInternal* itint = FactoryInternalIterator(); // Allocate new InternalIterator.
+
+ std::unordered_map<std::string, ConCommandBase*> allConVars;
+
+ for (itint->SetFirst(); itint->IsValid(); itint->Next()) // Loop through all instances.
+ {
+ ConCommandBase* pCommand = itint->Get();
+ const char* pszCommandName = pCommand->m_pszName;
+ allConVars[pszCommandName] = pCommand;
+ }
+
+ return allConVars;
+}
+SourceInterface<CCvar>* g_pCVarInterface;
+CCvar* g_pCVar; \ No newline at end of file