r5sdk/r5dev/tier0/cvar.cpp
Amos c292d8ad46 Implement new ConVar features
Slight cleanup with new ConVar features to be used throughout the SDK
2022-01-09 16:18:35 +01:00

110 lines
5.2 KiB
C++

#include "core/stdafx.h"
#include "tier0/cvar.h"
#include "tier0/IConVar.h"
#include "engine/sys_dll2.h"
//-----------------------------------------------------------------------------
// ENGINE |
ConVar* cm_debug_cmdquery = new ConVar();
ConVar* cm_return_false_cmdquery_all = new ConVar();
ConVar* cm_return_false_cmdquery_cheats = new ConVar();
ConVar* r_debug_overlay_nodecay = new ConVar();
//-----------------------------------------------------------------------------
// SERVER |
ConVar* sv_showconnecting = new ConVar();
ConVar* sv_pylonvisibility = new ConVar();
//-----------------------------------------------------------------------------
// CLIENT |
ConVar* cl_drawconsoleoverlay = new ConVar();
ConVar* cl_consoleoverlay_lines = new ConVar();
ConVar* cl_consoleoverlay_offset_x = new ConVar();
ConVar* cl_consoleoverlay_offset_y = new ConVar();
ConVar* cl_showsimstats = new ConVar();
ConVar* cl_simstats_offset_x = new ConVar();
ConVar* cl_simstats_offset_y = new ConVar();
ConVar* cl_showgpustats = new ConVar();
ConVar* cl_gpustats_offset_x = new ConVar();
ConVar* cl_gpustats_offset_y = new ConVar();
//-----------------------------------------------------------------------------
// FILESYSTEM |
ConVar* fs_warning_level_native = new ConVar();
ConVar* fs_packedstore_entryblock_stats = new ConVar();
//-----------------------------------------------------------------------------
// MATERIALSYSTEM |
ConVar* mat_showdxoutput = new ConVar();
//-----------------------------------------------------------------------------
// SQUIRREL |
ConVar* sq_showrsonloading = new ConVar();
ConVar* sq_showscriptloading = new ConVar();
ConVar* sq_showvmoutput = new ConVar();
ConVar* sq_showvmwarning = new ConVar();
//-----------------------------------------------------------------------------
// NETCHANNEL |
ConVar* net_userandomkey = new ConVar();
ConVar* r5net_matchmaking_hostname = new ConVar();
ConVar* r5net_show_debug = new ConVar();
//-----------------------------------------------------------------------------
// Purpose: finds base commands.
// Input : *pszCommandName -
//-----------------------------------------------------------------------------
ConCommandBase* CCVar::FindCommandBase(const char* pszCommandName)
{
using OriginalFn = ConCommandBase * (__thiscall*)(CCVar*, const char*);
return (*reinterpret_cast<OriginalFn**>(this))[14](this, pszCommandName);
}
//-----------------------------------------------------------------------------
// Purpose: finds ConVars.
// Input : *pszVarName -
//-----------------------------------------------------------------------------
ConVar* CCVar::FindVar(const char* pszVarName)
{
using OriginalFn = ConVar * (__thiscall*)(CCVar*, const char*);
return (*reinterpret_cast<OriginalFn**>(this))[16](this, pszVarName);
}
//-----------------------------------------------------------------------------
// Purpose: finds ConCommands.
// Input : *pszCommandName -
//-----------------------------------------------------------------------------
ConCommand* CCVar::FindCommand(const char* pszCommandName)
{
using OriginalFn = ConCommand* (__thiscall*)(CCVar*, const char*);
return (*reinterpret_cast<OriginalFn**>(this))[18](this, pszCommandName);
}
//-----------------------------------------------------------------------------
// Purpose: iterates over all ConVars
//-----------------------------------------------------------------------------
CCVarIteratorInternal* CCVar::FactoryInternalIterator()
{
using OriginalFn = CCVarIteratorInternal * (__thiscall*)(CCVar*);
return (*reinterpret_cast<OriginalFn**>(this))[41](this);
}
//-----------------------------------------------------------------------------
// Purpose: returns all ConVars
//-----------------------------------------------------------------------------
std::unordered_map<std::string, ConCommandBase*> CCVar::DumpToMap()
{
std::stringstream ss;
CCVarIteratorInternal* itint = FactoryInternalIterator(); // Allocatd 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;
}
///////////////////////////////////////////////////////////////////////////////
CCVar* g_pCvar = reinterpret_cast<CCVar*>(p_CEngineAPI_Connect.FindPatternSelf("48 8D 0D", ADDRESS::Direction::DOWN, 40).ResolveRelativeAddressSelf(0x3, 0x7).GetPtr());