Skip to content

Commit

Permalink
Store dvar names & descriptions in resources
Browse files Browse the repository at this point in the history
  • Loading branch information
alicealys committed Dec 13, 2023
1 parent 0ccde76 commit ce12f0d
Show file tree
Hide file tree
Showing 10 changed files with 9,437 additions and 11,749 deletions.
21 changes: 21 additions & 0 deletions src/client/component/dvars.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
#include "loader/component_loader.hpp"

#include "dvars.hpp"
#include "console.hpp"

#include "game/game.hpp"
#include "game/dvars.hpp"

#include <utils/hook.hpp>

Expand Down Expand Up @@ -541,6 +543,25 @@ namespace dvars
class component final : public component_interface
{
public:
void post_start() override
{
try
{
const auto list_json = utils::nt::load_resource(DVAR_LIST);
const auto list = nlohmann::json::parse(list_json);
for (const auto& [_0, dvar_info] : list.items())
{
const auto name = dvar_info[0].get<std::string>();
const auto description = dvar_info[1].get<std::string>();
dvars::insert_dvar_info(name, description);
}
}
catch (const std::exception& e)
{
console::error("Failed to parse dvar list: %s\n", e.what());
}
}

void post_unpack() override
{
dvar_register_bool_hook.create(SELECT_VALUE(0x419220_b, 0x182340_b), &dvar_register_bool);
Expand Down
8 changes: 4 additions & 4 deletions src/client/component/game_console.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -181,12 +181,12 @@ namespace game_console
{
input = utils::string::to_lower(input);

for (const auto& dvar : dvars::dvar_list)
for (const auto& [hash, dvar] : dvars::dvar_map)
{
auto name = utils::string::to_lower(dvar.name);
if (game::Dvar_FindVar(name.data()) && utils::string::match_compare(input, name, exact))
{
suggestions.push_back(dvar);
suggestions.emplace_back(dvar);
}

if (exact && suggestions.size() > 1)
Expand All @@ -197,7 +197,7 @@ namespace game_console

if (suggestions.size() == 0 && game::Dvar_FindVar(input.data()))
{
suggestions.push_back({input, ""});
suggestions.emplace_back(input, "");
}

game::cmd_function_s* cmd = (*game::cmd_functions);
Expand All @@ -209,7 +209,7 @@ namespace game_console

if (utils::string::match_compare(input, name, exact))
{
suggestions.push_back({cmd->name, ""});
suggestions.emplace_back(cmd->name, "");
}

if (exact && suggestions.size() > 1)
Expand Down
2 changes: 1 addition & 1 deletion src/client/component/party.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1157,4 +1157,4 @@ namespace party
};
}

REGISTER_COMPONENT(party::component)
REGISTER_COMPONENT(party::component)
4 changes: 2 additions & 2 deletions src/client/component/patches.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ namespace patches

void cg_set_client_dvar_from_server_stub(void* clientNum, void* cgameGlob, const char* dvar_hash, const char* value)
{
int hash = atoi(dvar_hash);
const auto hash = std::atoi(dvar_hash);
auto* dvar = game::Dvar_FindMalleableVar(hash);

if (hash == game::generateHashValue("cg_fov") ||
Expand Down Expand Up @@ -223,7 +223,7 @@ namespace patches
utils::hook::detour init_network_dvars_hook;
void init_network_dvars_stub(game::dvar_t* dvar)
{
static const auto hash = game::generateHashValue("r_tonemapHighlightRange");
constexpr auto hash = dvars::generate_hash("r_tonemapHighlightRange");
if (dvar->hash == hash)
{
init_network_dvars_hook.invoke<void>(dvar);
Expand Down
Loading

0 comments on commit ce12f0d

Please sign in to comment.