Store dvar names & descriptions in resources
This commit is contained in:
parent
2f16941e8b
commit
909514707e
@ -2,7 +2,10 @@
|
|||||||
#include "loader/component_loader.hpp"
|
#include "loader/component_loader.hpp"
|
||||||
|
|
||||||
#include "game/game.hpp"
|
#include "game/game.hpp"
|
||||||
|
#include "game/dvars.hpp"
|
||||||
|
|
||||||
#include "dvars.hpp"
|
#include "dvars.hpp"
|
||||||
|
#include "console.hpp"
|
||||||
|
|
||||||
#include <utils/hook.hpp>
|
#include <utils/hook.hpp>
|
||||||
|
|
||||||
@ -70,7 +73,7 @@ namespace dvars
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T* find_dvar(std::unordered_map<std::string, T>& map, const int hash)
|
T* find_dvar(std::unordered_map<std::string, T>& map, const std::uint32_t hash)
|
||||||
{
|
{
|
||||||
for (auto i = map.begin(); i != map.end(); ++i)
|
for (auto i = map.begin(); i != map.end(); ++i)
|
||||||
{
|
{
|
||||||
@ -89,7 +92,7 @@ namespace dvars
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool find_dvar(std::unordered_set<std::string>& set, const int hash)
|
bool find_dvar(std::unordered_set<std::string>& set, const std::uint32_t hash)
|
||||||
{
|
{
|
||||||
for (auto i = set.begin(); i != set.end(); ++i)
|
for (auto i = set.begin(); i != set.end(); ++i)
|
||||||
{
|
{
|
||||||
@ -423,6 +426,25 @@ namespace dvars
|
|||||||
class component final : public component_interface
|
class component final : public component_interface
|
||||||
{
|
{
|
||||||
public:
|
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& dvar_info : list.array())
|
||||||
|
{
|
||||||
|
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
|
void post_unpack() override
|
||||||
{
|
{
|
||||||
dvar_register_bool_hook.create(0x140617BB0, &dvar_register_bool);
|
dvar_register_bool_hook.create(0x140617BB0, &dvar_register_bool);
|
||||||
|
@ -706,7 +706,7 @@ namespace game_console
|
|||||||
{
|
{
|
||||||
input = utils::string::to_lower(input);
|
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);
|
auto name = utils::string::to_lower(dvar.name);
|
||||||
if (game::Dvar_FindVar(name.data()) && match_compare(input, name, exact))
|
if (game::Dvar_FindVar(name.data()) && match_compare(input, name, exact))
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -8,13 +8,13 @@ namespace dvars
|
|||||||
{
|
{
|
||||||
struct dvar_info
|
struct dvar_info
|
||||||
{
|
{
|
||||||
dvar_info(const std::string& name, const std::string& description);
|
|
||||||
|
|
||||||
std::string name;
|
std::string name;
|
||||||
std::string description;
|
std::string description;
|
||||||
int hash;
|
std::uint32_t hash;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern std::unordered_map<std::uint32_t, dvar_info> dvar_map;
|
||||||
|
|
||||||
extern game::dvar_t* con_inputBoxColor;
|
extern game::dvar_t* con_inputBoxColor;
|
||||||
extern game::dvar_t* con_inputHintBoxColor;
|
extern game::dvar_t* con_inputHintBoxColor;
|
||||||
extern game::dvar_t* con_outputBarColor;
|
extern game::dvar_t* con_outputBarColor;
|
||||||
@ -40,12 +40,13 @@ namespace dvars
|
|||||||
WEAK game::symbol<game::dvar_t*> com_max_fps{0x14AE2C890};
|
WEAK game::symbol<game::dvar_t*> com_max_fps{0x14AE2C890};
|
||||||
WEAK game::symbol<game::dvar_t*> cg_draw_2d{0x141E39EC0};
|
WEAK game::symbol<game::dvar_t*> cg_draw_2d{0x141E39EC0};
|
||||||
|
|
||||||
extern std::vector<dvar_info> dvar_list;
|
void insert_dvar_info(const std::uint32_t hash, const std::string& name, const std::string& description);
|
||||||
|
void insert_dvar_info(const std::string& name, const std::string& description);
|
||||||
|
|
||||||
std::string dvar_get_vector_domain(const int components, const game::dvar_limits& domain);
|
std::string dvar_get_vector_domain(const int components, const game::dvar_limits& domain);
|
||||||
std::string dvar_get_domain(const game::dvar_type type, const game::dvar_limits& domain);
|
std::string dvar_get_domain(const game::dvar_type type, const game::dvar_limits& domain);
|
||||||
std::string dvar_get_description(const std::string& name);
|
std::string dvar_get_description(const std::string& name);
|
||||||
std::optional<dvar_info> get_dvar_info_from_hash(const int hash);
|
std::optional<dvar_info> get_dvar_info_from_hash(const std::uint32_t hash);
|
||||||
|
|
||||||
game::dvar_t* register_int(const std::string& name, int value, int min, int max,
|
game::dvar_t* register_int(const std::string& name, int value, int min, int max,
|
||||||
unsigned int flags, const std::string& description);
|
unsigned int flags, const std::string& description);
|
||||||
|
@ -75,11 +75,11 @@ namespace game
|
|||||||
WEAK symbol<const char*(const dvar_t* dvar)> Dvar_DisplayableValue{0x140618EA0};
|
WEAK symbol<const char*(const dvar_t* dvar)> Dvar_DisplayableValue{0x140618EA0};
|
||||||
WEAK symbol<const char*(dvar_t* dvar, void* a2, void* value)> Dvar_ValueToString{0x14061B8F0};
|
WEAK symbol<const char*(dvar_t* dvar, void* a2, void* value)> Dvar_ValueToString{0x14061B8F0};
|
||||||
WEAK symbol<void(int hash, const char* name, const char* buffer)> Dvar_SetCommand{0x14061A5C0};
|
WEAK symbol<void(int hash, const char* name, const char* buffer)> Dvar_SetCommand{0x14061A5C0};
|
||||||
WEAK symbol<void(const char* dvarName, const char* string, DvarSetSource source)> Dvar_SetFromStringFromSource{0x14061A910};
|
WEAK symbol<void(const dvar_t* dvar, const char* string, DvarSetSource source)> Dvar_SetFromStringFromSource{0x14061A910};
|
||||||
WEAK symbol<void(const dvar_t* dvar, const char* value)> Dvar_SetString{0x14061ABF0};
|
WEAK symbol<void(const dvar_t* dvar, const char* value)> Dvar_SetString{0x14061ABF0};
|
||||||
WEAK symbol<void(const dvar_t* dvar, DvarSetSource source)> Dvar_Reset{0x140619FE0};
|
WEAK symbol<void(const dvar_t* dvar, DvarSetSource source)> Dvar_Reset{0x140619FE0};
|
||||||
|
|
||||||
WEAK symbol<int(const char* fname)> generateHashValue{0x140343D20};
|
WEAK symbol<unsigned int(const char* fname)> generateHashValue{0x140343D20};
|
||||||
|
|
||||||
WEAK symbol<bool()> CL_IsCgameInitialized{0x1403CA0C0};
|
WEAK symbol<bool()> CL_IsCgameInitialized{0x1403CA0C0};
|
||||||
WEAK symbol<void(const char* text, int maxChars, Font_s* font, float x, float y, float xScale, float yScale,
|
WEAK symbol<void(const char* text, int maxChars, Font_s* font, float x, float y, float xScale, float yScale,
|
||||||
|
@ -12,3 +12,5 @@
|
|||||||
#define LUI_UPDATER 304
|
#define LUI_UPDATER 304
|
||||||
|
|
||||||
#define LUA_JSON 305
|
#define LUA_JSON 305
|
||||||
|
|
||||||
|
#define DVAR_LIST 306
|
||||||
|
@ -102,6 +102,8 @@ LUI_UPDATER RCDATA "resources/ui_scripts/updater.lua"
|
|||||||
|
|
||||||
LUA_JSON RCDATA "resources/json.lua"
|
LUA_JSON RCDATA "resources/json.lua"
|
||||||
|
|
||||||
|
DVAR_LIST RCDATA "resources/dvar_list.json"
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
TLS_DLL RCDATA "../../build/bin/x64/Debug/tlsdll.dll"
|
TLS_DLL RCDATA "../../build/bin/x64/Debug/tlsdll.dll"
|
||||||
#else
|
#else
|
||||||
|
10802
src/client/resources/dvar_list.json
Normal file
10802
src/client/resources/dvar_list.json
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user