diff options
author | Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> | 2022-02-23 22:27:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-23 18:27:08 -0300 |
commit | 4f28a07d0562ca905bbcdb010b69604c330194bb (patch) | |
tree | 32ce0e8b0eff10cba6944a561e3538931a6033b6 /NorthstarDedicatedTest/cvar.cpp | |
parent | 8c9f34283f8670dda98959d0785d682e6f652a93 (diff) | |
download | NorthstarLauncher-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.cpp | 65 |
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 |