Cleanup gui stuff
This commit is contained in:
parent
758b2d2006
commit
c3e6b21176
@ -4,30 +4,25 @@
|
||||
#include "game/game.hpp"
|
||||
#include "game/dvars.hpp"
|
||||
|
||||
#include "scheduler.hpp"
|
||||
#include "command.hpp"
|
||||
#include "component/scheduler.hpp"
|
||||
#include "component/command.hpp"
|
||||
#include "component/fastfiles.hpp"
|
||||
#include "gui.hpp"
|
||||
#include "fastfiles.hpp"
|
||||
|
||||
#include <utils/string.hpp>
|
||||
#include <utils/hook.hpp>
|
||||
|
||||
namespace asset_list
|
||||
namespace gui::asset_list
|
||||
{
|
||||
namespace
|
||||
{
|
||||
bool shown_assets[game::XAssetType::ASSET_TYPE_COUNT];
|
||||
bool shown_assets[game::XAssetType::ASSET_TYPE_COUNT]{};
|
||||
std::string asset_type_filter;
|
||||
std::string assets_name_filter[game::XAssetType::ASSET_TYPE_COUNT];
|
||||
|
||||
void on_frame()
|
||||
void render_window()
|
||||
{
|
||||
static auto* enabled = &gui::enabled_menus["asset_list"];
|
||||
if (!*enabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ImGui::Begin("Asset list", enabled);
|
||||
|
||||
ImGui::InputText("asset type", &asset_type_filter);
|
||||
@ -92,9 +87,9 @@ namespace asset_list
|
||||
public:
|
||||
void post_unpack() override
|
||||
{
|
||||
gui::on_frame(on_frame);
|
||||
gui::register_menu("asset_list", "Asset List", render_window);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
REGISTER_COMPONENT(asset_list::component)
|
||||
REGISTER_COMPONENT(gui::asset_list::component)
|
@ -4,8 +4,8 @@
|
||||
#include "game/game.hpp"
|
||||
#include "game/dvars.hpp"
|
||||
|
||||
#include "scheduler.hpp"
|
||||
#include "command.hpp"
|
||||
#include "component/scheduler.hpp"
|
||||
#include "component/command.hpp"
|
||||
#include "gui.hpp"
|
||||
|
||||
#include "game/scripting/lua/context.hpp"
|
||||
@ -693,7 +693,8 @@ namespace gui::debug
|
||||
public:
|
||||
void post_unpack() override
|
||||
{
|
||||
gui::on_frame(draw_window);
|
||||
gui::register_menu("debug", "Debug", draw_window);
|
||||
|
||||
gui::on_frame([]()
|
||||
{
|
||||
if (!game::SV_Loaded() || cl_paused->current.integer)
|
@ -4,10 +4,10 @@
|
||||
#include "game/game.hpp"
|
||||
#include "game/dvars.hpp"
|
||||
|
||||
#include "scheduler.hpp"
|
||||
#include "command.hpp"
|
||||
#include "component/scheduler.hpp"
|
||||
#include "component/command.hpp"
|
||||
#include "component/scripting.hpp"
|
||||
#include "gui.hpp"
|
||||
#include "scripting.hpp"
|
||||
|
||||
#include "game/scripting/execution.hpp"
|
||||
|
||||
@ -807,14 +807,8 @@ namespace gui::entity_list
|
||||
ImGui::End();
|
||||
}
|
||||
|
||||
void on_frame()
|
||||
void render_window()
|
||||
{
|
||||
static auto* enabled = &gui::enabled_menus["entity_list"];
|
||||
if (!*enabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
data_.access([](data_t& data)
|
||||
{
|
||||
if (!game::CL_IsCgameInitialized())
|
||||
@ -845,7 +839,8 @@ namespace gui::entity_list
|
||||
public:
|
||||
void post_unpack() override
|
||||
{
|
||||
gui::on_frame(on_frame);
|
||||
gui::register_menu("entity_list", "Entity List", render_window);
|
||||
|
||||
scheduler::loop([]()
|
||||
{
|
||||
try
|
@ -4,9 +4,9 @@
|
||||
#include "game/game.hpp"
|
||||
#include "game/dvars.hpp"
|
||||
|
||||
#include "scheduler.hpp"
|
||||
#include "component/scheduler.hpp"
|
||||
#include "component/console.hpp"
|
||||
#include "gui.hpp"
|
||||
#include "console.hpp"
|
||||
|
||||
#include <utils/string.hpp>
|
||||
#include <utils/hook.hpp>
|
||||
@ -34,9 +34,17 @@ namespace gui
|
||||
LPARAM lParam;
|
||||
};
|
||||
|
||||
struct menu_t
|
||||
{
|
||||
std::string name;
|
||||
std::string title;
|
||||
std::function<void()> render;
|
||||
};
|
||||
|
||||
utils::concurrency::container<std::vector<frame_callback>> on_frame_callbacks;
|
||||
utils::concurrency::container<std::deque<notification_t>> notifications;
|
||||
utils::concurrency::container<std::vector<event>> event_queue;
|
||||
std::vector<menu_t> menus;
|
||||
|
||||
ID3D11Device* device;
|
||||
ID3D11DeviceContext* device_context;
|
||||
@ -161,11 +169,10 @@ namespace gui
|
||||
{
|
||||
if (ImGui::BeginMenu("Windows"))
|
||||
{
|
||||
menu_checkbox("Asset list", "asset_list");
|
||||
menu_checkbox("Entity list", "entity_list");
|
||||
menu_checkbox("Console", "console");
|
||||
menu_checkbox("Script console", "script_console");
|
||||
menu_checkbox("Debug", "debug");
|
||||
for (const auto& menu : menus)
|
||||
{
|
||||
menu_checkbox(menu.title, menu.name);
|
||||
}
|
||||
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
@ -210,21 +217,6 @@ namespace gui
|
||||
return result;
|
||||
}
|
||||
|
||||
void dxgi_swap_chain_present_stub(utils::hook::assembler& a)
|
||||
{
|
||||
a.pushad64();
|
||||
a.call_aligned(gui_on_frame);
|
||||
a.popad64();
|
||||
|
||||
a.mov(r8d, esi);
|
||||
a.mov(edx, r15d);
|
||||
a.mov(rcx, rdi);
|
||||
a.call(rbx);
|
||||
a.mov(ecx, eax);
|
||||
|
||||
a.jmp(0x1407A14D1);
|
||||
}
|
||||
|
||||
utils::hook::detour wnd_proc_hook;
|
||||
LRESULT wnd_proc_stub(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
@ -232,7 +224,7 @@ namespace gui
|
||||
{
|
||||
event_queue.access([hWnd, msg, wParam, lParam](std::vector<event>& queue)
|
||||
{
|
||||
queue.push_back({hWnd, msg, wParam, lParam});
|
||||
queue.emplace_back(hWnd, msg, wParam, lParam);
|
||||
});
|
||||
}
|
||||
|
||||
@ -271,7 +263,7 @@ namespace gui
|
||||
{
|
||||
on_frame_callbacks.access([always, callback](std::vector<frame_callback>& callbacks)
|
||||
{
|
||||
callbacks.push_back({callback, always});
|
||||
callbacks.emplace_back(callback, always);
|
||||
});
|
||||
}
|
||||
|
||||
@ -300,6 +292,21 @@ namespace gui
|
||||
gui::notification("Text copied to clipboard", utils::string::va("\"%s\"", text.data()));
|
||||
}
|
||||
|
||||
void register_menu(const std::string& name, const std::string& title,
|
||||
const std::function<void()>& callback, bool always)
|
||||
{
|
||||
menus.emplace_back(name, title, callback);
|
||||
enabled_menus[name] = false;
|
||||
|
||||
on_frame([=]
|
||||
{
|
||||
if (enabled_menus.at(name))
|
||||
{
|
||||
callback();
|
||||
}
|
||||
}, always);
|
||||
}
|
||||
|
||||
class component final : public component_interface
|
||||
{
|
||||
public:
|
@ -20,4 +20,7 @@ namespace gui
|
||||
bool is_menu_open(const std::string& name);
|
||||
void notification(const std::string& title, const std::string& text, const std::chrono::milliseconds duration = 3s);
|
||||
void copy_to_clipboard(const std::string& text);
|
||||
|
||||
void register_menu(const std::string& name, const std::string& title,
|
||||
const std::function<void()>& callback, bool always = false);
|
||||
}
|
@ -4,8 +4,8 @@
|
||||
#include "game/game.hpp"
|
||||
#include "game/dvars.hpp"
|
||||
|
||||
#include "scheduler.hpp"
|
||||
#include "command.hpp"
|
||||
#include "component/scheduler.hpp"
|
||||
#include "component/command.hpp"
|
||||
#include "gui.hpp"
|
||||
|
||||
#include "game/scripting/lua/context.hpp"
|
||||
@ -114,13 +114,8 @@ namespace gui::script_console
|
||||
return 0;
|
||||
}
|
||||
|
||||
void on_frame()
|
||||
void render_window()
|
||||
{
|
||||
if (!gui::enabled_menus["script_console"])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
menu_data.access([](menu_data_t& menu_data_)
|
||||
{
|
||||
if (!game::CL_IsCgameInitialized())
|
||||
@ -132,7 +127,8 @@ namespace gui::script_console
|
||||
static const auto input_text_flags = ImGuiInputTextFlags_EnterReturnsTrue | ImGuiInputTextFlags_CallbackCompletion |
|
||||
ImGuiInputTextFlags_CallbackHistory;
|
||||
|
||||
ImGui::Begin("Script console", &gui::enabled_menus["script_console"]);
|
||||
static auto* enabled = &gui::enabled_menus["script_console"];
|
||||
ImGui::Begin("Script console", enabled);
|
||||
|
||||
if (ImGui::BeginPopup("Options"))
|
||||
{
|
||||
@ -222,7 +218,7 @@ namespace gui::script_console
|
||||
public:
|
||||
void post_unpack() override
|
||||
{
|
||||
gui::on_frame(on_frame);
|
||||
gui::register_menu("script_console", "Script Console", render_window);
|
||||
scheduler::loop(run_commands, scheduler::pipeline::server);
|
||||
}
|
||||
};
|
@ -4,7 +4,7 @@
|
||||
#include "game/game.hpp"
|
||||
|
||||
#include "game_console.hpp"
|
||||
#include "gui.hpp"
|
||||
#include "gui/gui.hpp"
|
||||
#include "game/ui_scripting/execution.hpp"
|
||||
|
||||
#include <utils/hook.hpp>
|
||||
|
Loading…
x
Reference in New Issue
Block a user