diff --git a/src/client/component/ui.cpp b/src/client/component/ui.cpp new file mode 100644 index 00000000..3841d57f --- /dev/null +++ b/src/client/component/ui.cpp @@ -0,0 +1,47 @@ +#include +#include "loader/component_loader.hpp" + +#include "game/game.hpp" +#include "game/dvars.hpp" + +#include "scheduler.hpp" + +#include + +namespace ui +{ + namespace + { + utils::hook::detour cg_draw2d_hook; + void cg_draw2d_stub(__int64 a1) + { + if (dvars::cg_draw2D && !dvars::cg_draw2D->current.enabled) + { + return; + } + + cg_draw2d_hook.invoke(a1); + } + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + if (game::environment::is_dedi()) + { + return; + } + + scheduler::once([]() + { + dvars::cg_draw2D = game::Dvar_RegisterBool("cg_draw2D", true, game::DVAR_FLAG_NONE, "Draw 2D screen elements"); + }, scheduler::main); + + cg_draw2d_hook.create(0x781D90_b, cg_draw2d_stub); + } + }; +} + +REGISTER_COMPONENT(ui::component) \ No newline at end of file diff --git a/src/client/game/dvars.cpp b/src/client/game/dvars.cpp index 95812f34..16624944 100644 --- a/src/client/game/dvars.cpp +++ b/src/client/game/dvars.cpp @@ -23,6 +23,8 @@ namespace dvars game::dvar_t* lui_debug = nullptr; + game::dvar_t* cg_draw2D = nullptr; + game::dvar_t* r_fullbright = nullptr; game::dvar_t* bg_bounces = nullptr; diff --git a/src/client/game/dvars.hpp b/src/client/game/dvars.hpp index 0f5d59d0..8c049d9b 100644 --- a/src/client/game/dvars.hpp +++ b/src/client/game/dvars.hpp @@ -19,6 +19,8 @@ namespace dvars extern game::dvar_t* lui_debug; + extern game::dvar_t* cg_draw2D; + extern game::dvar_t* r_fullbright; extern game::dvar_t* bg_bounces;