diff --git a/src/Components/Modules/Dvars.hpp b/src/Components/Modules/Dvars.hpp index b2ed5fd..7ad2624 100644 --- a/src/Components/Modules/Dvars.hpp +++ b/src/Components/Modules/Dvars.hpp @@ -90,9 +90,16 @@ namespace Dvars // INTEGER static Utils::function Dvar_RegisterInt_r = 0x588750; + static Utils::function + Dvar_ReregisterInt = 0x588610; inline Game::dvar_s* Dvar_RegisterInt(const char* dvar_name, const char* description, std::int32_t default_value, std::int32_t min_value, std::int32_t max_value, std::uint16_t flags) { + if (const auto& dvar = Functions::Dvar_FindVar(dvar_name); dvar) + { + Dvar_ReregisterInt(dvar, dvar_name, Game::dvar_type::integer, flags, description, default_value, 0, 0, 0, min_value, max_value); + return dvar; + } return Dvar_RegisterInt_r(dvar_name, Game::dvar_type::integer, flags, description, default_value, 0, 0, 0, min_value, max_value); } @@ -109,8 +116,7 @@ namespace Dvars Dvar_ReregisterBool(dvar, dvar_name, Game::dvar_type::boolean, flags, description, default_value, 0, 0, 0, 0, 0); return dvar; } - else - return Dvar_RegisterNewBool(dvar_name, Game::dvar_type::boolean, flags, description, default_value, 0, 0, 0, 0, 0); + return Dvar_RegisterNewBool(dvar_name, Game::dvar_type::boolean, flags, description, default_value, 0, 0, 0, 0, 0); } // ENUM @@ -126,38 +132,54 @@ namespace Dvars Dvar_ReregisterEnum(dvar, dvar_name, Game::dvar_type::enumeration, flags, description, default_value, 0, 0, 0, enum_size, enum_data); return dvar; } - else - return Dvar_RegisterNewEnum(dvar_name, Game::dvar_type::enumeration, flags, description, default_value, 0, 0, 0, enum_size, enum_data); + return Dvar_RegisterNewEnum(dvar_name, Game::dvar_type::enumeration, flags, description, default_value, 0, 0, 0, enum_size, enum_data); } // STRING static Utils::function Dvar_RegisterString_r = 0x588750; + static Utils::function + Dvar_ReregisterString = 0x588610; inline Game::dvar_s* Dvar_RegisterString(const char* dvar_name, const char* description, const char* default_value, std::uint16_t flags) { - const auto dvar = Dvars::Functions::Dvar_FindVar(dvar_name); - if (!dvar) + if (const auto& dvar = Functions::Dvar_FindVar(dvar_name); dvar) { - return Dvar_RegisterString_r(dvar_name, Game::dvar_type::string, flags, description, default_value, 0, 0, 0, 0, 0); + Dvar_ReregisterString(dvar, dvar_name, Game::dvar_type::string, flags, description, default_value, 0, 0, 0, 0, 0); + return dvar; } - - return dvar; + return Dvar_RegisterString_r(dvar_name, Game::dvar_type::string, flags, description, default_value, 0, 0, 0, 0, 0); } // VEC2 static Utils::function Dvar_RegisterVec2_r = 0x588750; + static Utils::function + Dvar_ReregisterVec2 = 0x588610; - inline Game::dvar_s* Dvar_RegisterVec2(const char* dvar_name, const char* description, float x, float y, float min_value, float max_value, std::uint16_t flags) { + inline Game::dvar_s* Dvar_RegisterVec2(const char* dvar_name, const char* description, float x, float y, float min_value, float max_value, std::uint16_t flags) + { + if (const auto& dvar = Functions::Dvar_FindVar(dvar_name); dvar) + { + Dvar_ReregisterVec2(dvar, dvar_name, Game::dvar_type::vec2, flags, description, x, y, 0, 0, min_value, max_value); + return dvar; + } return Dvar_RegisterVec2_r(dvar_name, Game::dvar_type::vec2, flags, description, x, y, 0, 0, min_value, max_value); } // VEC3 static Utils::function Dvar_RegisterVec3_r = 0x588750; + static Utils::function + Dvar_ReregisterVec3 = 0x588610; - inline Game::dvar_s* Dvar_RegisterVec3(const char* dvar_name, const char* description, float x, float y, float z, float min_value, float max_value, std::uint16_t flags) { + inline Game::dvar_s* Dvar_RegisterVec3(const char* dvar_name, const char* description, float x, float y, float z, float min_value, float max_value, std::uint16_t flags) + { + if (const auto& dvar = Functions::Dvar_FindVar(dvar_name); dvar) + { + Dvar_ReregisterVec3(dvar, dvar_name, Game::dvar_type::vec3, flags, description, x, y, z, 0, min_value, max_value); + return dvar; + } return Dvar_RegisterVec3_r(dvar_name, Game::dvar_type::vec3, flags, description, x, y, z, 0, min_value, max_value); } @@ -174,21 +196,24 @@ namespace Dvars Dvar_ReregisterVec4(dvar, dvar_name, Game::dvar_type::vec4, flags, description, x, y, z, w, min_value, max_value); return dvar; } - else - return Dvar_RegisterNewVec4(dvar_name, Game::dvar_type::vec4, flags, description, x, y, z, w, min_value, max_value); + return Dvar_RegisterNewVec4(dvar_name, Game::dvar_type::vec4, flags, description, x, y, z, w, min_value, max_value); } // FLOAT static Utils::function Dvar_RegisterFloat_r = 0x588750; + static Utils::function + Dvar_ReregisterFloat = 0x588610; - inline Game::dvar_s* Dvar_RegisterFloat(const char* dvar_name, const char* description, float default_value, float min_value, float max_value, std::uint16_t flags) { + inline Game::dvar_s* Dvar_RegisterFloat(const char* dvar_name, const char* description, float default_value, float min_value, float max_value, std::uint16_t flags) + { + if (const auto& dvar = Functions::Dvar_FindVar(dvar_name); dvar) + { + Dvar_ReregisterFloat(dvar, dvar_name, Game::dvar_type::value, flags, description, default_value, 0, 0, 0, min_value, max_value); + return dvar; + } return Dvar_RegisterFloat_r(dvar_name, Game::dvar_type::value, flags, description, default_value, 0, 0, 0, min_value, max_value); } - - //REMOVE THIS CODE!!! - static Utils::function - Dvar_RegisterNew = 0x588750; } namespace Override