From 08faeb135db5a89cba484caa00876427205cbbd0 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Tue, 23 Sep 2025 10:06:15 -0700 Subject: [PATCH] feat(console): implement ConsoleInitializeClientCVar --- src/console/CVar.cpp | 18 ++++++++++++++++++ src/console/CVar.hpp | 2 ++ src/console/CVarHandlers.cpp | 25 +++++++++++++++++++++++++ src/console/CVarHandlers.hpp | 14 ++++++++++++++ src/console/Client.cpp | 10 +++++++++- 5 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 src/console/CVarHandlers.cpp create mode 100644 src/console/CVarHandlers.hpp diff --git a/src/console/CVar.cpp b/src/console/CVar.cpp index 424e5a2..94da790 100644 --- a/src/console/CVar.cpp +++ b/src/console/CVar.cpp @@ -1,9 +1,27 @@ #include "console/CVar.hpp" +#include "console/Command.hpp" +#include "console/CVarHandlers.hpp" #include +bool CVar::m_initialized; bool CVar::m_needsSave; TSHashTable CVar::s_registeredCVars; +void CVar::Initialize() { + CVar::m_initialized = true; + + char basePath[STORM_MAX_PATH]; + // TODO + // SFile::GetBasePath(basePath, 260); + // SStrPrintf(basePath, sizeof(basePath), "%s%s\\", basePath, "WTF"); + // s_CreatePathDirectories(basePath); + + ConsoleCommandRegister("set", CVarSetCommandHandler, DEFAULT, "Set the value of a CVar"); + ConsoleCommandRegister("cvar_reset", CVarResetCommandHandler, DEFAULT, "Set the value of a CVar to it's startup value"); + ConsoleCommandRegister("cvar_default", CVarDefaultCommandHandler, DEFAULT, "Set the value of a CVar to it's coded default value"); + ConsoleCommandRegister("cvarlist", CVarListCommandHandler, DEFAULT, "List cvars"); +} + CVar* CVar::Lookup(const char* name) { return name ? CVar::s_registeredCVars.Ptr(name) diff --git a/src/console/CVar.hpp b/src/console/CVar.hpp index f37b1e7..9d7ee6f 100644 --- a/src/console/CVar.hpp +++ b/src/console/CVar.hpp @@ -8,10 +8,12 @@ class CVar : public TSHashObject { public: // Static variables + static bool m_initialized; static TSHashTable s_registeredCVars; static bool m_needsSave; // Static functions + static void Initialize(); static CVar* Lookup(const char* name); static CVar* Register(const char*, const char*, uint32_t, const char*, bool (*)(CVar*, const char*, const char*, void*), uint32_t, bool, void*, bool); diff --git a/src/console/CVarHandlers.cpp b/src/console/CVarHandlers.cpp new file mode 100644 index 0000000..37fd9d2 --- /dev/null +++ b/src/console/CVarHandlers.cpp @@ -0,0 +1,25 @@ +#include "console/CVarHandlers.hpp" + +int32_t CVarDefaultCommandHandler(const char* command, const char* arguments) { + // TODO + + return 0; +} + +int32_t CVarListCommandHandler(const char* command, const char* arguments) { + // TODO + + return 0; +} + +int32_t CVarSetCommandHandler(const char* command, const char* arguments) { + // TODO + + return 0; +} + +int32_t CVarResetCommandHandler(const char* command, const char* arguments) { + // TODO + + return 0; +} diff --git a/src/console/CVarHandlers.hpp b/src/console/CVarHandlers.hpp new file mode 100644 index 0000000..f0cbb6f --- /dev/null +++ b/src/console/CVarHandlers.hpp @@ -0,0 +1,14 @@ +#ifndef CONSOLE_C_VAR_HANDLERS_HPP +#define CONSOLE_C_VAR_HANDLERS_HPP + +#include + +int32_t CVarDefaultCommandHandler(const char* command, const char* arguments); + +int32_t CVarListCommandHandler(const char* command, const char* arguments); + +int32_t CVarSetCommandHandler(const char* command, const char* arguments); + +int32_t CVarResetCommandHandler(const char* command, const char* arguments); + +#endif diff --git a/src/console/Client.cpp b/src/console/Client.cpp index 24a5c84..548010d 100644 --- a/src/console/Client.cpp +++ b/src/console/Client.cpp @@ -1,9 +1,17 @@ #include "console/Client.hpp" +#include "CVar.hpp" + +static const char* s_filename; void ConsoleInitializeClientCommand() { // TODO } -void ConsoleInitializeClientCVar(const char* a1) { +void ConsoleInitializeClientCVar(const char* filename) { + s_filename = filename; + + CVar::Initialize(); + // TODO + // CVar::Load(s_filename); }