From f8e19bfed2055e17299c0cf2bfb0d05e4bd81b76 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Sun, 6 Feb 2022 21:36:49 +0100 Subject: [PATCH 01/28] Remove custom UI stuff --- src/client/component/branding.cpp | 16 +- src/client/component/branding.hpp | 6 - src/client/component/fps.cpp | 26 +- src/client/component/fps.hpp | 6 - src/client/component/game_console.cpp | 30 +- src/client/component/game_console.hpp | 2 - src/client/component/scheduler.cpp | 5 + src/client/component/scheduler.hpp | 2 + src/client/component/ui_scripting.cpp | 99 +-- src/client/component/ui_scripting.hpp | 7 - src/client/game/ui_scripting/element.cpp | 409 ---------- src/client/game/ui_scripting/element.hpp | 85 -- src/client/game/ui_scripting/event.hpp | 1 - src/client/game/ui_scripting/execution.cpp | 67 -- src/client/game/ui_scripting/execution.hpp | 3 - src/client/game/ui_scripting/lua/context.cpp | 758 +----------------- src/client/game/ui_scripting/lua/context.hpp | 6 - src/client/game/ui_scripting/lua/engine.cpp | 366 +-------- src/client/game/ui_scripting/lua/engine.hpp | 3 - .../game/ui_scripting/lua/event_handler.cpp | 13 +- .../game/ui_scripting/lua/event_handler.hpp | 5 +- .../game/ui_scripting/lua/scheduler.cpp | 10 +- .../game/ui_scripting/lua/scheduler.hpp | 4 +- src/client/game/ui_scripting/menu.cpp | 66 -- src/client/game/ui_scripting/menu.hpp | 35 - src/common/utils/http.cpp | 18 +- src/common/utils/http.hpp | 3 +- 27 files changed, 125 insertions(+), 1926 deletions(-) delete mode 100644 src/client/component/branding.hpp delete mode 100644 src/client/component/fps.hpp delete mode 100644 src/client/game/ui_scripting/element.cpp delete mode 100644 src/client/game/ui_scripting/element.hpp delete mode 100644 src/client/game/ui_scripting/menu.cpp delete mode 100644 src/client/game/ui_scripting/menu.hpp diff --git a/src/client/component/branding.cpp b/src/client/component/branding.cpp index 9e285dab..46f0ad7f 100644 --- a/src/client/component/branding.cpp +++ b/src/client/component/branding.cpp @@ -22,14 +22,14 @@ namespace branding ui_scripting::push_value(VERSION); return 1; } - } - void draw() - { - const auto font = game::R_RegisterFont("fonts/defaultBold.otf", 22); - game::R_AddCmdDrawText("h2-mod", 0x7FFFFFFF, font, 15.f, - 15.f + static_cast(font->pixelHeight), - 1.f, 1.f, 0.f, color, 0); + void draw() + { + const auto font = game::R_RegisterFont("fonts/defaultBold.otf", 22); + game::R_AddCmdDrawText("h2-mod", 0x7FFFFFFF, font, 15.f, + 15.f + static_cast(font->pixelHeight), + 1.f, 1.f, 0.f, color, 0); + } } class component final : public component_interface @@ -37,6 +37,8 @@ namespace branding public: void post_unpack() override { + scheduler::loop(draw, scheduler::pipeline::renderer); + localized_strings::override("MENU_SP_CAMPAIGN", "H2-MOD"); localized_strings::override("MENU_SYSINFO_CUSTOMER_SUPPORT_LINK", "Github Page:"); localized_strings::override("MENU_SYSINFO_CUSTOMER_SUPPORT_URL", "https://github.com/fedddddd/h2-mod"); diff --git a/src/client/component/branding.hpp b/src/client/component/branding.hpp deleted file mode 100644 index d3ef860d..00000000 --- a/src/client/component/branding.hpp +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -namespace branding -{ - void draw(); -} \ No newline at end of file diff --git a/src/client/component/fps.cpp b/src/client/component/fps.cpp index 793a255d..ff522f5d 100644 --- a/src/client/component/fps.cpp +++ b/src/client/component/fps.cpp @@ -279,21 +279,21 @@ namespace fps game::R_AddCmdDrawText(pos_string, 0x7FFFFFFF, font, x, 60.f, 1.0f, 1.0f, 0.0f, fps_color_ok, 0); } - } - void draw() - { - check_resize(); - draw_fps(); - - if (!game::CL_IsCgameInitialized() || !game::g_entities[0].client) + void draw() { - return; - } + check_resize(); + draw_fps(); - draw_pos(); - draw_speed(); - draw_speed_graph(); + if (!game::CL_IsCgameInitialized() || !game::g_entities[0].client) + { + return; + } + + draw_pos(); + draw_speed(); + draw_speed_graph(); + } } class component final : public component_interface @@ -301,6 +301,8 @@ namespace fps public: void post_unpack() override { + scheduler::loop(draw, scheduler::pipeline::renderer); + sub_7C55D0_hook.create(0x7C55D0_b, perf_update); cg_drawSpeed = dvars::register_bool("cg_drawSpeed", 0, game::DVAR_FLAG_SAVED); diff --git a/src/client/component/fps.hpp b/src/client/component/fps.hpp deleted file mode 100644 index 6edceb69..00000000 --- a/src/client/component/fps.hpp +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -namespace fps -{ - void draw(); -} \ No newline at end of file diff --git a/src/client/component/game_console.cpp b/src/client/component/game_console.cpp index f517e3d2..78d8f401 100644 --- a/src/client/component/game_console.cpp +++ b/src/client/component/game_console.cpp @@ -354,25 +354,25 @@ namespace game_console draw_output_scrollbar(x, y, width, height); draw_output_text(x, y); } - } - void draw_console() - { - check_resize(); - - if (*game::keyCatchers & 1) + void draw_console() { - if (!(*game::keyCatchers & 1)) - { - con.output_visible = false; - } + check_resize(); - if (con.output_visible) + if (*game::keyCatchers & 1) { - draw_output_window(); - } + if (!(*game::keyCatchers & 1)) + { + con.output_visible = false; + } - draw_input(); + if (con.output_visible) + { + draw_output_window(); + } + + draw_input(); + } } } @@ -719,6 +719,8 @@ namespace game_console public: void post_unpack() override { + scheduler::loop(draw_console, scheduler::pipeline::renderer); + con.cursor = 0; con.visible_line_count = 0; con.output_visible = false; diff --git a/src/client/component/game_console.hpp b/src/client/component/game_console.hpp index 3a3b2c6d..9506da40 100644 --- a/src/client/component/game_console.hpp +++ b/src/client/component/game_console.hpp @@ -9,8 +9,6 @@ namespace game_console con_type_info = 7 }; - void draw_console(); - void print(int type, const char* fmt, ...); bool console_char_event(int local_client_num, int key); diff --git a/src/client/component/scheduler.cpp b/src/client/component/scheduler.cpp index 5c33bfa1..a266a693 100644 --- a/src/client/component/scheduler.cpp +++ b/src/client/component/scheduler.cpp @@ -97,6 +97,11 @@ namespace scheduler void r_end_frame_stub() { execute(pipeline::renderer); + if (game::Sys_IsMainThread()) + { + execute(pipeline::lui); + } + r_end_frame_hook.invoke(); } diff --git a/src/client/component/scheduler.hpp b/src/client/component/scheduler.hpp index f674475e..7e0a2e21 100644 --- a/src/client/component/scheduler.hpp +++ b/src/client/component/scheduler.hpp @@ -10,6 +10,8 @@ namespace scheduler // The game's rendering pipeline renderer, + lui, + // The game's server thread server, diff --git a/src/client/component/ui_scripting.cpp b/src/client/component/ui_scripting.cpp index aee1a555..a810606c 100644 --- a/src/client/component/ui_scripting.cpp +++ b/src/client/component/ui_scripting.cpp @@ -8,10 +8,6 @@ #include "scheduler.hpp" #include "command.hpp" -#include "game_console.hpp" -#include "fps.hpp" -#include "branding.hpp" - #include "ui_scripting.hpp" #include "game/ui_scripting/lua/engine.hpp" @@ -23,41 +19,17 @@ namespace ui_scripting { - std::unordered_map functions; - std::unordered_map methods; - namespace { std::unordered_map converted_functions; - utils::hook::detour hksi_open_lib_hook; utils::hook::detour hksi_lual_error_hook; utils::hook::detour hksi_lual_error_hook2; - utils::hook::detour hksi_add_function_hook; utils::hook::detour hks_start_hook; utils::hook::detour hks_shutdown_hook; bool error_hook_enabled = false; - void* hksi_open_lib_stub(game::hks::lua_State* s, const char* libname, game::hks::luaL_Reg* l) - { - for (auto i = l; i->name; ++i) - { - if (i->name == "__gc"s) - { - continue; - } - - const auto lower = utils::string::to_lower(i->name); - - libname - ? functions[lower] = i->function - : methods[lower] = i->function; - } - - return hksi_open_lib_hook.invoke(s, libname, l); - } - void hksi_lual_error_stub(game::hks::lua_State* s, const char* fmt, ...) { char va_buffer[2048] = {0}; @@ -86,8 +58,6 @@ namespace ui_scripting ui_scripting::lua::engine::start(); }); - functions = {}; - methods = {}; return hks_start_hook.invoke(a1); } @@ -96,18 +66,6 @@ namespace ui_scripting ui_scripting::lua::engine::stop(); hks_shutdown_hook.invoke(); } - - void hksi_add_function_stub(game::hks::lua_State* s, game::hks::lua_function f, int a3, const char* name, int a5) - { - if (name != "( lua_CFunction )LUI_CoD_LuaCall_UIExpression"s) - { - std::string name_ = name; - const auto sub = utils::string::to_lower(name_.substr(13, name_.size() - 14)); - functions[sub] = f; - } - - hksi_add_function_hook.invoke(s, f, a3, name, a5); - } } int main_function_handler(game::hks::lua_State* state) @@ -167,26 +125,6 @@ namespace ui_scripting error_hook_enabled = false; } - game::hks::lua_function find_function(const std::string& name) - { - const auto lower = utils::string::to_lower(name); - if (functions.find(lower) == functions.end()) - { - return 0; - } - return functions[lower]; - } - - game::hks::lua_function find_method(const std::string& name) - { - const auto lower = utils::string::to_lower(name); - if (methods.find(lower) == methods.end()) - { - return 0; - } - return methods[lower]; - } - void notify(const event& e) { lua::engine::notify(e); @@ -198,47 +136,12 @@ namespace ui_scripting void post_unpack() override { - scheduler::loop([]() - { - if (game::Sys_IsMainThread()) - { - ui_scripting::lua::engine::run_frame(); - } - - fps::draw(); - branding::draw(); - game_console::draw_console(); - }, scheduler::pipeline::renderer); - - command::add("reloadmenus", []() - { - scheduler::once(ui_scripting::lua::engine::start, scheduler::pipeline::renderer); - }); - - command::add("openluamenu", [](const command::params& params) - { - const std::string name = params.get(1); - scheduler::once([name]() - { - ui_scripting::lua::engine::open_menu(name); - }, scheduler::pipeline::renderer); - }); - - command::add("closeluamenu", [](const command::params& params) - { - const std::string name = params.get(1); - scheduler::once([name]() - { - ui_scripting::lua::engine::close_menu(name); - }, scheduler::pipeline::renderer); - }); + scheduler::loop(ui_scripting::lua::engine::run_frame, scheduler::pipeline::lui); hks_start_hook.create(0x328BE0_b, hks_start_stub); hks_shutdown_hook.create(0x3203B0_b, hks_shutdown_stub); - hksi_open_lib_hook.create(0x2E4530_b, hksi_open_lib_stub); hksi_lual_error_hook.create(0x2E3E40_b, hksi_lual_error_stub); hksi_lual_error_hook2.create(0x2DCB40_b, hksi_lual_error_stub); - hksi_add_function_hook.create(0x2DB570_b, hksi_add_function_stub); } }; } diff --git a/src/client/component/ui_scripting.hpp b/src/client/component/ui_scripting.hpp index ad5792af..8831d39d 100644 --- a/src/client/component/ui_scripting.hpp +++ b/src/client/component/ui_scripting.hpp @@ -1,13 +1,9 @@ #pragma once #include "game/ui_scripting/lua/value_conversion.hpp" -#include "game/ui_scripting/menu.hpp" #include "game/ui_scripting/event.hpp" namespace ui_scripting { - extern std::unordered_map functions; - extern std::unordered_map methods; - int main_function_handler(game::hks::lua_State* state); void add_converted_function(game::hks::cclosure* closure, const sol::protected_function& function); void clear_converted_functions(); @@ -15,8 +11,5 @@ namespace ui_scripting void enable_error_hook(); void disable_error_hook(); - game::hks::lua_function find_function(const std::string& name); - game::hks::lua_function find_method(const std::string& name); - void notify(const event& e); } diff --git a/src/client/game/ui_scripting/element.cpp b/src/client/game/ui_scripting/element.cpp deleted file mode 100644 index aca81b3f..00000000 --- a/src/client/game/ui_scripting/element.cpp +++ /dev/null @@ -1,409 +0,0 @@ -#include -#include "element.hpp" - -#include - -#define fps_font game::R_RegisterFont("fonts/fira_mono_regular.ttf", 25) - -namespace ui_scripting -{ - namespace - { - uint64_t next_id; - float screen_max[2]; - - struct point - { - float x; - float y; - float f2; - float f3; - }; - - struct rectangle - { - point p0; - point p1; - point p2; - point p3; - }; - - std::unordered_map font_map = - { - {"bank", "fonts/bank.ttf"}, - {"fira_mono_bold", "fonts/fira_mono_bold.ttf"}, - {"fira_mono_regular", "fonts/fira_mono_regular.ttf"}, - {"defaultbold", "fonts/defaultbold.otf"}, - {"objective", "fonts/defaultbold.otf"}, - {"default", "fonts/default.otf"}, - }; - - std::unordered_map alignment_map = - { - {"left", alignment::start}, - {"top", alignment::start}, - {"center", alignment::middle}, - {"right", alignment::end}, - {"bottom", alignment::end}, - }; - - float get_align_value(alignment align, float text_width, float w) - { - switch (align) - { - case (alignment::start): - return 0.f; - case (alignment::middle): - return (w / 2.f) - (text_width / 2.f); - case (alignment::end): - return w - text_width; - default: - return 0.f; - } - } - - void draw_image(float x, float y, float w, float h, float* transform, float* color, game::Material* material) - { - game::rectangle rect; - - rect.p0.x = x; - rect.p0.y = y; - rect.p0.f2 = 0.f; - rect.p0.f3 = 1.f; - - rect.p1.x = x + w; - rect.p1.y = y; - rect.p1.f2 = 0.f; - rect.p1.f3 = 1.f; - - rect.p2.x = x + w; - rect.p2.y = y + h; - rect.p2.f2 = 0.f; - rect.p2.f3 = 1.f; - - rect.p3.x = x; - rect.p3.y = y + h; - rect.p3.f2 = 0.f; - rect.p3.f3 = 1.f; - - game::R_DrawRectangle(&rect, transform[0], transform[1], transform[2], transform[3], color, material); - } - - void check_resize() - { - screen_max[0] = game::ScrPlace_GetViewPlacement()->realViewportSize[0]; - screen_max[1] = game::ScrPlace_GetViewPlacement()->realViewportSize[1]; - } - - float relative(float value) - { - return ceil((value / 1920.f) * screen_max[0]); - } - - int relative(int value) - { - return (int)ceil(((float)value / 1920.f) * screen_max[0]); - } - - game::rgba float_to_rgba(const float* color) - { - game::rgba rgba; - rgba.r = (uint8_t)(color[0] * 255.f); - rgba.g = (uint8_t)(color[1] * 255.f); - rgba.b = (uint8_t)(color[2] * 255.f); - rgba.a = (uint8_t)(color[3] * 255.f); - return rgba; - } - - void draw_text(const char* text, game::Font_s* font, float x, float y, float x_scale, float y_scale, float rotation, - int style, float* color, float* second_color, float* glow_color) - { - const auto result = (uint64_t)game::R_AddCmdDrawText(text, 0x7FFFFFFF, font, x, y, x_scale, y_scale, rotation, color, style); - if (result) - { - *reinterpret_cast(result + 188) = glow_color[0]; - *reinterpret_cast(result + 192) = glow_color[1]; - *reinterpret_cast(result + 196) = glow_color[2]; - *reinterpret_cast(result + 200) = glow_color[3]; - *reinterpret_cast(result + 228) = float_to_rgba(second_color); - } - } - } - - element::element() - : id(next_id++) - { - } - - void element::set_horzalign(const std::string& value) - { - const auto lower = utils::string::to_lower(value); - if (alignment_map.find(lower) == alignment_map.end()) - { - this->horzalign = alignment::start; - return; - } - - const auto align = alignment_map[lower]; - this->horzalign = align; - } - - void element::set_vertalign(const std::string& value) - { - const auto lower = utils::string::to_lower(value); - if (alignment_map.find(lower) == alignment_map.end()) - { - this->vertalign = alignment::start; - return; - } - - const auto align = alignment_map[lower]; - this->vertalign = align; - } - - void element::set_text(const std::string& _text) - { - this->text = _text; - } - - void element::set_font(const std::string& _font, const int _fontsize) - { - this->fontsize = _fontsize; - const auto lowercase = utils::string::to_lower(_font); - - if (font_map.find(lowercase) == font_map.end()) - { - this->font = "default"; - } - else - { - this->font = lowercase; - } - } - - void element::set_font(const std::string& _font) - { - const auto lowercase = utils::string::to_lower(_font); - - if (font_map.find(lowercase) == font_map.end()) - { - this->font = "default"; - } - else - { - this->font = lowercase; - } - } - - void element::set_text_offset(float _x, float _y) - { - this->text_offset[0] = _x; - this->text_offset[1] = _y; - } - - void element::set_scale(float _x, float _y) - { - this->x_scale = _x; - this->y_scale = _y; - } - - void element::set_rotation(float _rotation) - { - this->rotation = _rotation; - } - - void element::set_style(int _style) - { - this->style = _style; - } - - void element::set_background_color(float r, float g, float b, float a) - { - this->background_color[0] = r; - this->background_color[1] = g; - this->background_color[2] = b; - this->background_color[3] = a; - } - - void element::set_color(float r, float g, float b, float a) - { - this->color[0] = r; - this->color[1] = g; - this->color[2] = b; - this->color[3] = a; - } - - void element::set_second_color(float r, float g, float b, float a) - { - this->use_gradient = true; - this->second_color[0] = r; - this->second_color[1] = g; - this->second_color[2] = b; - this->second_color[3] = a; - } - - void element::set_glow_color(float r, float g, float b, float a) - { - this->glow_color[0] = r; - this->glow_color[1] = g; - this->glow_color[2] = b; - this->glow_color[3] = a; - } - - void element::set_border_material(const std::string& _material) - { - this->border_material = _material; - } - - void element::set_border_color(float r, float g, float b, float a) - { - this->border_color[0] = r; - this->border_color[1] = g; - this->border_color[2] = b; - this->border_color[3] = a; - } - - void element::set_border_width(float top) - { - this->border_width[0] = top; - this->border_width[1] = top; - this->border_width[2] = top; - this->border_width[3] = top; - } - - void element::set_border_width(float top, float right) - { - this->border_width[0] = top; - this->border_width[1] = right; - this->border_width[2] = top; - this->border_width[3] = right; - } - - void element::set_border_width(float top, float right, float bottom) - { - this->border_width[0] = top; - this->border_width[1] = right; - this->border_width[2] = bottom; - this->border_width[3] = bottom; - } - - void element::set_border_width(float top, float right, float bottom, float left) - { - this->border_width[0] = top; - this->border_width[1] = right; - this->border_width[2] = bottom; - this->border_width[3] = left; - } - - void element::set_slice(float left_percent, float top_percent, float right_percent, float bottom_percent) - { - this->slice[0] = left_percent; - this->slice[1] = top_percent; - this->slice[2] = right_percent; - this->slice[3] = bottom_percent; - } - - void element::set_material(const std::string& _material) - { - this->material = _material; - } - - void element::set_rect(const float _x, const float _y, const float _w, const float _h) - { - this->x = _x; - this->y = _y; - this->w = _w; - this->h = _h; - } - - void element::render() const - { - check_resize(); - - if (this->background_color[3] > 0) - { - const auto background_material = game::Material_RegisterHandle(this->material.data()); - - draw_image( - relative(this->x) + relative(this->border_width[3]), - relative(this->y) + relative(this->border_width[0]), - relative(this->w) - relative(this->border_width[1]) - relative(this->border_width[3]), - relative(this->h) - relative(this->border_width[0]) - relative(this->border_width[2]), - (float*)this->slice, - (float*)this->background_color, - background_material - ); - } - - if (this->border_color[3] > 0) - { - const auto _border_material = game::Material_RegisterHandle(this->border_material.data()); - - draw_image( - relative(this->x), - relative(this->y), - relative(this->w), - relative(this->border_width[0]), - (float*)this->slice, - (float*)this->border_color, - _border_material - ); - - draw_image( - relative(this->x) + relative(this->w) - relative(this->border_width[1]), - relative(this->y) + relative(this->border_width[0]), - relative(this->border_width[1]), - relative(this->h) - relative(this->border_width[0]) - relative(this->border_width[2]), - (float*)this->slice, - (float*)this->border_color, - _border_material - ); - - draw_image( - relative(this->x), - relative(this->y) + relative(this->h) - relative(this->border_width[2]), - relative(this->w), - relative(this->border_width[2]), - (float*)this->slice, - (float*)this->border_color, - _border_material - ); - - draw_image( - relative(this->x), - relative(this->y) + relative(this->border_width[0]), - relative(this->border_width[3]), - relative(this->h) - relative(this->border_width[0]) - relative(this->border_width[2]), - (float*)this->slice, - (float*)this->border_color, - _border_material - ); - } - - if (!this->text.empty()) - { - const auto fontname = font_map[this->font]; - const auto _font = game::R_RegisterFont(fontname.data(), relative(this->fontsize)); - const auto text_width = game::R_TextWidth(this->text.data(), 0x7FFFFFFF, _font); - - const auto _horzalign = get_align_value(this->horzalign, (float)text_width, relative(this->w)); - const auto _vertalign = get_align_value(this->vertalign, (float)relative(this->fontsize), relative(this->h)); - - const auto _x = relative(this->x) + relative(this->text_offset[0]) + _horzalign + relative(this->border_width[3]); - const auto _y = relative(this->y) + relative(this->text_offset[1]) + _vertalign + relative(this->fontsize) + relative(this->border_width[0]); - - draw_text( - this->text.data(), - _font, - _x, _y, - this->x_scale, - this->y_scale, - this->rotation, - this->style, - (float*)this->color, - (float*)(this->use_gradient ? this->second_color : this->color), - (float*)this->glow_color - ); - } - } -} diff --git a/src/client/game/ui_scripting/element.hpp b/src/client/game/ui_scripting/element.hpp deleted file mode 100644 index 539b418b..00000000 --- a/src/client/game/ui_scripting/element.hpp +++ /dev/null @@ -1,85 +0,0 @@ -#pragma once -#include "game/game.hpp" -#include "script_value.hpp" - -namespace ui_scripting -{ - enum alignment - { - start, - middle, - end, - }; - - class element final - { - public: - element(); - - void set_horzalign(const std::string& value); - void set_vertalign(const std::string& value); - - void set_text(const std::string& text); - void set_font(const std::string& _font); - void set_font(const std::string& _font, const int _fontsize); - void set_color(float r, float g, float b, float a); - void set_second_color(float r, float g, float b, float a); - void set_glow_color(float r, float g, float b, float a); - void set_text_offset(float x, float y); - - void set_scale(float x, float y); - void set_rotation(float rotation); - void set_style(int style); - - void set_background_color(float r, float g, float b, float a); - void set_material(const std::string& material); - - void set_border_material(const std::string& material); - void set_border_color(float r, float g, float b, float a); - void set_border_width(float top); - void set_border_width(float top, float right); - void set_border_width(float top, float right, float bottom); - void set_border_width(float top, float right, float bottom, float left); - - void set_slice(float left_percent, float top_percent, float right_percent, float bottom_percent); - - void set_rect(const float _x, const float _y, const float _w, const float _h); - - uint64_t id; - - void render() const; - - bool hidden = false; - bool use_gradient = false; - - float x = 0.f; - float y = 0.f; - float w = 0.f; - float h = 0.f; - - float rotation = 0; - float x_scale = 1.f; - float y_scale = 1.f; - - int style = 0; - int fontsize = 20; - - float text_offset[2] = {0.f, 0.f}; - float color[4] = {1.f, 1.f, 1.f, 1.f}; - float second_color[4] = {1.f, 1.f, 1.f, 1.f}; - float glow_color[4] = {0.f, 0.f, 0.f, 0.f}; - float background_color[4] = {0.f, 0.f, 0.f, 0.f}; - float border_color[4] = {0.f, 0.f, 0.f, 0.f}; - float border_width[4] = {0.f, 0.f, 0.f, 0.f}; - float slice[4] = {0.f, 0.f, 1.f, 1.f}; - - alignment horzalign = alignment::start; - alignment vertalign = alignment::start; - - std::unordered_map attributes = {}; - std::string font = "default"; - std::string material = "white"; - std::string border_material = "white"; - std::string text{}; - }; -} diff --git a/src/client/game/ui_scripting/event.hpp b/src/client/game/ui_scripting/event.hpp index 4655ea77..f82c8a79 100644 --- a/src/client/game/ui_scripting/event.hpp +++ b/src/client/game/ui_scripting/event.hpp @@ -6,7 +6,6 @@ namespace ui_scripting struct event { std::string name; - const void* element{}; arguments arguments; }; } diff --git a/src/client/game/ui_scripting/execution.cpp b/src/client/game/ui_scripting/execution.cpp index 84efbce8..fff6b88e 100644 --- a/src/client/game/ui_scripting/execution.cpp +++ b/src/client/game/ui_scripting/execution.cpp @@ -158,71 +158,4 @@ namespace ui_scripting throw std::runtime_error(std::string("Error setting table field: ") + e.what()); } } - - arguments call_method(const userdata& self, const std::string& name, const arguments& arguments) - { - const auto function = ui_scripting::find_method(name); - if (!function) - { - throw std::runtime_error("Function " + name + " not found"); - } - - const auto state = *game::hks::lua_state; - state->m_apistack.top = state->m_apistack.base; - - push_value(self); - for (auto i = arguments.begin(); i != arguments.end(); ++i) - { - push_value(*i); - } - - enable_error_hook(); - const auto __ = gsl::finally([]() - { - disable_error_hook(); - }); - - try - { - const auto count = function(*game::hks::lua_state); - return get_return_values(count); - } - catch (const std::exception& e) - { - throw std::runtime_error("Error executing method " + name + ": " + e.what()); - } - } - - arguments call(const std::string& name, const arguments& arguments) - { - const auto function = ui_scripting::find_function(name); - if (!function) - { - throw std::runtime_error("Function " + name + " not found"); - } - - const auto state = *game::hks::lua_state; - state->m_apistack.top = state->m_apistack.base; - - for (auto i = arguments.begin(); i != arguments.end(); ++i) - { - push_value(*i); - } - - enable_error_hook(); - const auto __ = gsl::finally([]() - { - disable_error_hook(); - }); - - try - { - const auto count = function(*game::hks::lua_state); - return get_return_values(count); - } - catch (const std::exception& e) - { - throw std::runtime_error("Error executing function " + name + ": " + e.what()); - } - } } diff --git a/src/client/game/ui_scripting/execution.hpp b/src/client/game/ui_scripting/execution.hpp index 1ec7c8bf..24f4dd72 100644 --- a/src/client/game/ui_scripting/execution.hpp +++ b/src/client/game/ui_scripting/execution.hpp @@ -15,7 +15,4 @@ namespace ui_scripting script_value get_field(const table& self, const script_value& key); void set_field(const userdata& self, const script_value& key, const script_value& value); void set_field(const table& self, const script_value& key, const script_value& value); - - arguments call_method(const userdata& self, const std::string& name, const arguments& arguments); - arguments call(const std::string& name, const arguments& arguments); } diff --git a/src/client/game/ui_scripting/lua/context.cpp b/src/client/game/ui_scripting/lua/context.cpp index d5dadd90..69ab4f1c 100644 --- a/src/client/game/ui_scripting/lua/context.cpp +++ b/src/client/game/ui_scripting/lua/context.cpp @@ -23,14 +23,8 @@ namespace ui_scripting::lua { - std::unordered_map menus; - std::vector elements; - element ui_element; - int mouse[2]; - namespace { - const auto animation_script = utils::nt::load_resource(LUA_ANIMATION_SCRIPT); const auto json_script = utils::nt::load_resource(LUA_JSON_SCRIPT); scripting::script_value script_convert(const sol::lua_value& value) @@ -213,506 +207,6 @@ namespace ui_scripting::lua }; } - void setup_element_type(sol::state& state, event_handler& handler, scheduler& scheduler) - { - auto element_type = state.new_usertype("element", "new", []() - { - const auto el = new element(); - elements.push_back(el); - return el; - }); - - element_type["setvertalign"] = &element::set_vertalign; - element_type["sethorzalign"] = &element::set_horzalign; - element_type["setrect"] = &element::set_rect; - element_type["setfont"] = sol::overload( - static_cast(&element::set_font), - static_cast(&element::set_font) - ); - element_type["settext"] = &element::set_text; - element_type["setmaterial"] = &element::set_material; - element_type["setcolor"] = &element::set_color; - element_type["setsecondcolor"] = &element::set_second_color; - element_type["setglowcolor"] = &element::set_glow_color; - element_type["setbackcolor"] = &element::set_background_color; - element_type["setbordercolor"] = &element::set_border_color; - element_type["setborderwidth"] = sol::overload( - static_cast(&element::set_border_width), - static_cast(&element::set_border_width), - static_cast(&element::set_border_width), - static_cast(&element::set_border_width) - ); - element_type["settextoffset"] = &element::set_text_offset; - element_type["setscale"] = &element::set_scale; - element_type["setrotation"] = &element::set_rotation; - element_type["setyle"] = &element::set_style; - element_type["setslice"] = &element::set_slice; - - element_type["getrect"] = [](const sol::this_state s, element& element) - { - auto rect = sol::table::create(s.lua_state()); - rect["x"] = element.x; - rect["y"] = element.y; - rect["w"] = element.w + element.border_width[1] + element.border_width[3]; - rect["h"] = element.h + element.border_width[0] + element.border_width[2]; - - return rect; - }; - - element_type["x"] = sol::property( - [](element& element) - { - return element.x; - }, - [](element& element, float x) - { - element.x = x; - } - ); - - element_type["y"] = sol::property( - [](element& element) - { - return element.y; - }, - [](element& element, float y) - { - element.y = y; - } - ); - - element_type["w"] = sol::property( - [](element& element) - { - return element.w; - }, - [](element& element, float w) - { - element.w = w; - } - ); - - element_type["h"] = sol::property( - [](element& element) - { - return element.h; - }, - [](element& element, float h) - { - element.h = h; - } - ); - - element_type["scalex"] = sol::property( - [](element& element) - { - return element.x_scale; - }, - [](element& element, float x_scale) - { - element.x_scale = x_scale; - } - ); - - element_type["scaley"] = sol::property( - [](element& element) - { - return element.y_scale; - }, - [](element& element, float y_scale) - { - element.y_scale = y_scale; - } - ); - - element_type["rotation"] = sol::property( - [](element& element) - { - return element.rotation; - }, - [](element& element, float rotation) - { - element.rotation = rotation; - } - ); - - element_type["style"] = sol::property( - [](element& element) - { - return element.style; - }, - [](element& element, int style) - { - element.style = style; - } - ); - - element_type["color"] = sol::property( - [](element& element, const sol::this_state s) - { - auto color = sol::table::create(s.lua_state()); - color["r"] = element.color[0]; - color["g"] = element.color[1]; - color["b"] = element.color[2]; - color["a"] = element.color[3]; - return color; - }, - [](element& element, const sol::lua_table color) - { - element.color[0] = color["r"].get_type() == sol::type::number ? color["r"].get() : 0.f; - element.color[1] = color["g"].get_type() == sol::type::number ? color["g"].get() : 0.f; - element.color[2] = color["b"].get_type() == sol::type::number ? color["b"].get() : 0.f; - element.color[3] = color["a"].get_type() == sol::type::number ? color["a"].get() : 0.f; - } - ); - - element_type["secondcolor"] = sol::property( - [](element& element, const sol::this_state s) - { - auto color = sol::table::create(s.lua_state()); - color["r"] = element.second_color[0]; - color["g"] = element.second_color[1]; - color["b"] = element.second_color[2]; - color["a"] = element.second_color[3]; - return color; - }, - [](element& element, const sol::lua_table color) - { - element.use_gradient = true; - element.second_color[0] = color["r"].get_type() == sol::type::number ? color["r"].get() : 0.f; - element.second_color[1] = color["g"].get_type() == sol::type::number ? color["g"].get() : 0.f; - element.second_color[2] = color["b"].get_type() == sol::type::number ? color["b"].get() : 0.f; - element.second_color[3] = color["a"].get_type() == sol::type::number ? color["a"].get() : 0.f; - } - ); - - element_type["usegradient"] = sol::property( - [](element& element, const sol::this_state s) - { - return element.use_gradient; - }, - [](element& element, bool use_gradient) - { - element.use_gradient = use_gradient; - } - ); - - element_type["glowcolor"] = sol::property( - [](element& element, const sol::this_state s) - { - auto color = sol::table::create(s.lua_state()); - color["r"] = element.glow_color[0]; - color["g"] = element.glow_color[1]; - color["b"] = element.glow_color[2]; - color["a"] = element.glow_color[3]; - return color; - }, - [](element& element, const sol::lua_table color) - { - element.glow_color[0] = color["r"].get_type() == sol::type::number ? color["r"].get() : 0.f; - element.glow_color[1] = color["g"].get_type() == sol::type::number ? color["g"].get() : 0.f; - element.glow_color[2] = color["b"].get_type() == sol::type::number ? color["b"].get() : 0.f; - element.glow_color[3] = color["a"].get_type() == sol::type::number ? color["a"].get() : 0.f; - } - ); - - element_type["backcolor"] = sol::property( - [](element& element, const sol::this_state s) - { - auto color = sol::table::create(s.lua_state()); - color["r"] = element.background_color[0]; - color["g"] = element.background_color[1]; - color["b"] = element.background_color[2]; - color["a"] = element.background_color[3]; - return color; - }, - [](element& element, const sol::lua_table color) - { - element.background_color[0] = color["r"].get_type() == sol::type::number ? color["r"].get() : 0.f; - element.background_color[1] = color["g"].get_type() == sol::type::number ? color["g"].get() : 0.f; - element.background_color[2] = color["b"].get_type() == sol::type::number ? color["b"].get() : 0.f; - element.background_color[3] = color["a"].get_type() == sol::type::number ? color["a"].get() : 0.f; - } - ); - - element_type["bordercolor"] = sol::property( - [](element& element, const sol::this_state s) - { - auto color = sol::table::create(s.lua_state()); - color["r"] = element.border_color[0]; - color["g"] = element.border_color[1]; - color["b"] = element.border_color[2]; - color["a"] = element.border_color[3]; - return color; - }, - [](element& element, const sol::lua_table color) - { - element.border_color[0] = color["r"].get_type() == sol::type::number ? color["r"].get() : 0.f; - element.border_color[1] = color["g"].get_type() == sol::type::number ? color["g"].get() : 0.f; - element.border_color[2] = color["b"].get_type() == sol::type::number ? color["b"].get() : 0.f; - element.border_color[3] = color["a"].get_type() == sol::type::number ? color["a"].get() : 0.f; - } - ); - - element_type["borderwidth"] = sol::property( - [](element& element, const sol::this_state s) - { - auto color = sol::table::create(s.lua_state()); - color["top"] = element.border_width[0]; - color["right"] = element.border_width[1]; - color["bottom"] = element.border_width[2]; - color["left"] = element.border_width[3]; - return color; - }, - [](element& element, const sol::lua_table color) - { - element.border_width[0] = color["top"].get_type() == sol::type::number ? color["top"].get() : 0.f; - element.border_width[1] = color["right"].get_type() == sol::type::number ? color["right"].get() : element.border_width[1]; - element.border_width[2] = color["bottom"].get_type() == sol::type::number ? color["bottom"].get() : element.border_width[2]; - element.border_width[3] = color["left"].get_type() == sol::type::number ? color["left"].get() : element.border_width[3]; - } - ); - - element_type["font"] = sol::property( - [](element& element) - { - return element.font; - }, - [](element& element, const std::string& font) - { - element.set_font(font); - } - ); - - element_type["fontsize"] = sol::property( - [](element& element) - { - return element.fontsize; - }, - [](element& element, float fontsize) - { - element.fontsize = (int)fontsize; - } - ); - - element_type["onnotify"] = [&handler](element& element, const std::string& event, - const event_callback& callback) - { - event_listener listener{}; - listener.callback = callback; - listener.element = &element; - listener.event = event; - listener.is_volatile = false; - - return handler.add_event_listener(std::move(listener)); - }; - - element_type["onnotifyonce"] = [&handler](element& element, const std::string& event, - const event_callback& callback) - { - event_listener listener{}; - listener.callback = callback; - listener.element = &element; - listener.event = event; - listener.is_volatile = true; - - return handler.add_event_listener(std::move(listener)); - }; - - element_type["notify"] = [&handler](element& element, const sol::this_state s, const std::string& _event, - sol::variadic_args va) - { - event event; - event.element = &element; - event.name = _event; - - for (auto arg : va) - { - event.arguments.push_back(convert({s, arg})); - } - - notify(event); - }; - - element_type["hidden"] = sol::property( - [](element& element) - { - return element.hidden; - }, - [](element& element, bool hidden) - { - element.hidden = hidden; - } - ); - - element_type[sol::meta_function::new_index] = [](element& element, const sol::this_state s, const std::string& attribute, const sol::lua_value& value) - { - element.attributes[attribute] = convert({s, value}); - }; - - element_type[sol::meta_function::index] = [](element& element, const sol::this_state s, const std::string& attribute) - { - if (element.attributes.find(attribute) == element.attributes.end()) - { - return sol::lua_value{s, sol::lua_nil}; - } - - return sol::lua_value{s, convert(s, element.attributes[attribute])}; - }; - } - - void setup_menu_type(sol::state& state, event_handler& handler, scheduler& scheduler) - { - auto menu_type = state.new_usertype("menu"); - - menu_type["onnotify"] = [&handler](menu& menu, const std::string& event, - const event_callback& callback) - { - event_listener listener{}; - listener.callback = callback; - listener.element = &menu; - listener.event = event; - listener.is_volatile = false; - - return handler.add_event_listener(std::move(listener)); - }; - - menu_type["onnotifyonce"] = [&handler](menu& menu, const std::string& event, - const event_callback& callback) - { - event_listener listener{}; - listener.callback = callback; - listener.element = &menu; - listener.event = event; - listener.is_volatile = true; - - return handler.add_event_listener(std::move(listener)); - }; - - menu_type["notify"] = [&handler](menu& element, const sol::this_state s, const std::string& _event, - sol::variadic_args va) - { - event event; - event.element = &element; - event.name = _event; - - for (auto arg : va) - { - event.arguments.push_back(convert({s, arg})); - } - - notify(event); - }; - - menu_type["addchild"] = [](const sol::this_state s, menu& menu, element& element) - { - menu.add_child(&element); - }; - - menu_type["cursor"] = sol::property( - [](menu& menu) - { - return menu.cursor; - }, - [](menu& menu, bool cursor) - { - menu.cursor = cursor; - } - ); - - menu_type["hidden"] = sol::property( - [](menu& menu) - { - return menu.hidden; - }, - [](menu& menu, bool hidden) - { - menu.hidden = hidden; - } - ); - - menu_type["ignoreevents"] = sol::property( - [](menu& menu) - { - return menu.ignoreevents; - }, - [](menu& menu, bool ignoreevents) - { - menu.ignoreevents = ignoreevents; - } - ); - - menu_type["isopen"] = [](menu& menu) - { - return menu.visible || (menu.type == menu_type::overlay && game::Menu_IsMenuOpenAndVisible(0, menu.overlay_menu.data())); - }; - - menu_type["open"] = [&handler](menu& menu) - { - event event; - event.element = &menu; - event.name = "close"; - notify(event); - - menu.open(); - }; - - menu_type["close"] = [&handler](menu& menu) - { - event event; - event.element = &menu; - event.name = "close"; - notify(event); - - menu.close(); - }; - - menu_type["getelement"] = [](menu& menu, const sol::this_state s, const sol::lua_value& value, const std::string& attribute) - { - const auto value_ = convert({s, value}); - - for (const auto& element : menu.children) - { - if (element->attributes.find(attribute) != element->attributes.end() && element->attributes[attribute] == value_) - { - return sol::lua_value{s, element}; - } - } - - return sol::lua_value{s, sol::lua_nil}; - }; - - menu_type["getelements"] = sol::overload - ( - [](menu& menu, const sol::this_state s, const sol::lua_value& value, const std::string& attribute) - { - const auto value_ = convert({s, value}); - auto result = sol::table::create(s.lua_state()); - - for (const auto& element : menu.children) - { - if (element->attributes.find(attribute) != element->attributes.end() && element->attributes[attribute] == value_) - { - result.add(element); - } - } - - return result; - }, - [](menu& menu, const sol::this_state s) - { - auto result = sol::table::create(s.lua_state()); - - for (const auto& element : menu.children) - { - result.add(element); - } - - return result; - } - ); - } - void setup_game_type(sol::state& state, event_handler& handler, scheduler& scheduler) { struct game @@ -721,137 +215,17 @@ namespace ui_scripting::lua auto game_type = state.new_usertype("game_"); state["game"] = game(); - game_type["getmenu"] = [](const game&, const sol::this_state s, const std::string& name) - { - if (menus.find(name) == menus.end()) - { - return sol::lua_value{s, sol::lua_nil}; - } - - return sol::lua_value{s, &menus[name]}; - }; - - game_type["getelement"] = [](const game&, const sol::this_state s, const sol::lua_value& value, const std::string& attribute) - { - const auto value_ = convert({s, value}); - - for (const auto& element : elements) - { - if (element->attributes.find(attribute) != element->attributes.end() && element->attributes[attribute] == value_) - { - return sol::lua_value{s, element}; - } - } - - return sol::lua_value{s, sol::lua_nil}; - }; - - game_type["getelements"] = sol::overload - ( - [](const game&, const sol::this_state s, const sol::lua_value& value, const std::string& attribute) - { - const auto value_ = convert({s, value}); - auto result = sol::table::create(s.lua_state()); - - for (const auto& element : elements) - { - if (element->attributes.find(attribute) != element->attributes.end() && element->attributes[attribute] == value_) - { - result.add(element); - } - } - - return result; - }, - [](const game&, const sol::this_state s) - { - auto result = sol::table::create(s.lua_state()); - - for (const auto& element : elements) - { - result.add(element); - } - - return result; - } - ); - game_type["time"] = []() { const auto now = std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()); return now.count(); }; - game_type["newmenu"] = [](const game&, const std::string& name) - { - menus[name] = {}; - return &menus[name]; - }; - game_type["executecommand"] = [](const game&, const std::string& command) { command::execute(command, false); }; - game_type["luiopen"] = [](const game&, const std::string& menu) - { - ::scheduler::once([menu]() - { - ::game::LUI_OpenMenu(0, menu.data(), 0, 0, 0); - }, ::scheduler::pipeline::renderer); - }; - - game_type["newmenuoverlay"] = [](const game&, const std::string& name, const std::string& menu_name) - { - menus[name] = {}; - menus[name].type = menu_type::overlay; - menus[name].overlay_menu = menu_name; - return &menus[name]; - }; - - game_type["getmouseposition"] = [](const sol::this_state s, const game&) - { - auto pos = sol::table::create(s.lua_state()); - pos["x"] = mouse[0]; - pos["y"] = mouse[1]; - - return pos; - }; - - game_type["openmenu"] = [&handler](const game&, const std::string& name) - { - if (menus.find(name) == menus.end()) - { - return; - } - - const auto menu = &menus[name]; - - event event; - event.element = menu; - event.name = "open"; - notify(event); - - menu->open(); - }; - - game_type["closemenu"] = [&handler](const game&, const std::string& name) - { - if (menus.find(name) == menus.end()) - { - return; - } - - const auto menu = &menus[name]; - - event event; - event.element = menu; - event.name = "close"; - notify(event); - - menu->close(); - }; - game_type["onframe"] = [&scheduler](const game&, const sol::protected_function& callback) { return scheduler.add(callback, 0, false); @@ -874,7 +248,6 @@ namespace ui_scripting::lua { event_listener listener{}; listener.callback = callback; - listener.element = &ui_element; listener.event = event; listener.is_volatile = false; @@ -886,7 +259,6 @@ namespace ui_scripting::lua { event_listener listener{}; listener.callback = callback; - listener.element = &ui_element; listener.event = event; listener.is_volatile = true; @@ -991,49 +363,6 @@ namespace ui_scripting::lua (0x71B970_b)(video.data(), 64, 0); }; - game_type[sol::meta_function::index] = [](const game&, const std::string& name) - { - return [name](const game&, const sol::this_state s, sol::variadic_args va) - { - arguments arguments{}; - - for (auto arg : va) - { - arguments.push_back(convert({s, arg})); - } - - const auto values = call(name, arguments); - std::vector returns; - - for (const auto& value : values) - { - returns.push_back(convert(s, value)); - } - - return sol::as_returns(returns); - }; - }; - - game_type["call"] = [](const game&, const sol::this_state s, const std::string& name, sol::variadic_args va) - { - arguments arguments{}; - - for (auto arg : va) - { - arguments.push_back(convert({s, arg})); - } - - const auto values = call(name, arguments); - std::vector returns; - - for (const auto& value : values) - { - returns.push_back(convert(s, value)); - } - - return sol::as_returns(returns); - }; - game_type["sharedset"] = [](const game&, const std::string& key, const std::string& value) { scripting::shared_table.access([key, value](scripting::shared_table_t& table) @@ -1116,7 +445,6 @@ namespace ui_scripting::lua ::scheduler::once([result, id] { event event; - event.element = &ui_element; event.name = "http_request_done"; if (result.has_value()) @@ -1129,7 +457,7 @@ namespace ui_scripting::lua } notify(event); - }, ::scheduler::pipeline::renderer); + }, ::scheduler::pipeline::lui); }, ::scheduler::pipeline::async); return id; }; @@ -1140,25 +468,50 @@ namespace ui_scripting::lua const auto id = request_id++; ::scheduler::once([url, id, dest]() { - const auto result = utils::http::get_data(url); - ::scheduler::once([result, id, dest] + auto last_report = std::chrono::high_resolution_clock::now(); + const auto result = utils::http::get_data(url, {}, [&last_report, id](size_t progress, size_t total, float speed) { - event event; - event.element = &ui_element; - event.name = "http_request_done"; - - if (result.has_value()) + const auto now = std::chrono::high_resolution_clock::now(); + if (now - last_report < 100ms && progress < total) { - const auto write = utils::io::write_file(dest, result.value(), false); + return; + } + + last_report = now; + + ::scheduler::once([id, progress, total, speed] + { + event event; + event.name = "http_request_progress"; + event.arguments = {id, static_cast(progress), static_cast(total), speed}; + + notify(event); + }, ::scheduler::pipeline::lui); + }); + + if (result.has_value()) + { + const auto write = utils::io::write_file(dest, result.value(), false); + ::scheduler::once([result, id, write]() + { + event event; + event.name = "http_request_done"; event.arguments = {id, true, write}; - } - else - { - event.arguments = {id, false}; - } - notify(event); - }, ::scheduler::pipeline::renderer); + notify(event); + }, ::scheduler::pipeline::lui); + } + else + { + ::scheduler::once([result, id]() + { + event event; + event.name = "http_request_done"; + event.arguments = {id, false}; + + notify(event); + }, ::scheduler::pipeline::lui); + } }, ::scheduler::pipeline::async); return id; }; @@ -1243,31 +596,6 @@ namespace ui_scripting::lua } ); - for (const auto method : methods) - { - const auto name = method.first; - - userdata_type[name] = [name](const userdata& userdata, const sol::this_state s, sol::variadic_args va) - { - arguments arguments{}; - - for (auto arg : va) - { - arguments.push_back(convert({s, arg})); - } - - const auto values = call_method(userdata, name, arguments); - std::vector returns; - - for (const auto& value : values) - { - returns.push_back(convert(s, value)); - } - - return sol::as_returns(returns); - }; - } - userdata_type[sol::meta_function::index] = [](const userdata& userdata, const sol::this_state s, const std::string& name) { @@ -1344,8 +672,6 @@ namespace ui_scripting::lua state["LUI"] = state["luiglobals"]["LUI"]; state["Engine"] = state["luiglobals"]["Engine"]; state["Game"] = state["luiglobals"]["Game"]; - - state.script(animation_script); } } @@ -1365,8 +691,6 @@ namespace ui_scripting::lua setup_io(this->state_); setup_json(this->state_); setup_vector_type(this->state_); - setup_element_type(this->state_, this->event_handler_, this->scheduler_); - setup_menu_type(this->state_, this->event_handler_, this->scheduler_); setup_game_type(this->state_, this->event_handler_, this->scheduler_); setup_lui_types(this->state_, this->event_handler_, this->scheduler_); diff --git a/src/client/game/ui_scripting/lua/context.hpp b/src/client/game/ui_scripting/lua/context.hpp index 6b05116c..22c27e35 100644 --- a/src/client/game/ui_scripting/lua/context.hpp +++ b/src/client/game/ui_scripting/lua/context.hpp @@ -1,7 +1,6 @@ #pragma once #include "../event.hpp" -#include "../menu.hpp" #pragma warning(push) #pragma warning(disable: 4702) @@ -21,11 +20,6 @@ namespace ui_scripting::lua code }; - extern std::unordered_map menus; - extern std::vector elements; - extern element ui_element; - extern int mouse[2]; - class context { public: diff --git a/src/client/game/ui_scripting/lua/engine.cpp b/src/client/game/ui_scripting/lua/engine.cpp index e7450a72..759a1188 100644 --- a/src/client/game/ui_scripting/lua/engine.cpp +++ b/src/client/game/ui_scripting/lua/engine.cpp @@ -15,290 +15,27 @@ namespace ui_scripting::lua::engine { const auto updater_script = utils::nt::load_resource(LUI_UPDATER_MENU); - float screen_max[2]; - - void check_resize() - { - screen_max[0] = game::ScrPlace_GetViewPlacement()->realViewportSize[0]; - screen_max[1] = game::ScrPlace_GetViewPlacement()->realViewportSize[1]; - } - - int relative_mouse(int value) - { - return (int)ceil(((float)value / screen_max[0]) * 1920.f); - } - - int relative(int value) - { - return (int)ceil(((float)value / 1920.f) * screen_max[0]); - } - - float relative(float value) - { - return ceil((value / 1920.f) * screen_max[0]); - } - - bool point_in_rect(int px, int py, int x, int y, int w, int h) - { - return (px > x && px < x + w && py > y && py < y + h); - } - - bool is_menu_visible(const menu& menu) - { - return menu.visible && !menu.hidden || (!menu.hidden && menu.type == menu_type::overlay && game::Menu_IsMenuOpenAndVisible(0, menu.overlay_menu.data())); - } - - std::vector elements_in_point(int x, int y) - { - std::vector result; - - for (const auto& menu : menus) - { - if (!is_menu_visible(menu.second) || menu.second.ignoreevents) - { - continue; - } - - for (const auto& child : menu.second.children) - { - if (child->hidden) - { - continue; - } - - const auto in_rect = point_in_rect( - x, y, - (int)child->x, - (int)child->y, - (int)child->w + (int)child->border_width[1] + (int)child->border_width[3], - (int)child->h + (int)child->border_width[0] + (int)child->border_width[2] - ); - - if (in_rect) - { - result.push_back(child); - } - } - } - - return result; - } - void handle_key_event(const int key, const int down) { - const auto _elements = elements_in_point(mouse[0], mouse[1]); + event event; + event.name = down + ? "keydown" + : "keyup"; + event.arguments = {key}; - switch (key) - { - case game::K_MOUSE2: - case game::K_MOUSE1: - { - const auto click_name = key == game::K_MOUSE1 - ? "click" - : "rightclick"; - - const auto key_name = key == game::K_MOUSE1 - ? "mouse" - : "rightmouse"; - - { - event main_event; - main_event.element = &ui_element; - main_event.name = utils::string::va("%s%s", key_name, down ? "down" : "up"); - main_event.arguments = - { - mouse[0], - mouse[1], - }; - - engine::notify(main_event); - - for (const auto& element : _elements) - { - event event; - event.element = element; - event.name = utils::string::va("%s%s", key_name, down ? "down" : "up"); - event.arguments = - { - mouse[0], - mouse[1], - }; - - engine::notify(event); - } - } - - if (!down) - { - event main_event; - main_event.element = &ui_element; - main_event.name = click_name; - main_event.arguments = - { - mouse[0], - mouse[1], - }; - - engine::notify(main_event); - - for (const auto& element : _elements) - { - event event; - event.element = element; - event.name = click_name; - event.arguments = - { - mouse[0], - mouse[1], - }; - - engine::notify(event); - } - } - - break; - } - case game::K_MWHEELUP: - case game::K_MWHEELDOWN: - { - const auto key_name = key == game::K_MWHEELUP - ? "scrollup" - : "scrolldown"; - - if (!down) - { - break; - } - - { - event main_event; - main_event.element = &ui_element; - main_event.name = key_name; - main_event.arguments = - { - mouse[0], - mouse[1], - }; - - engine::notify(main_event); - - for (const auto& element : _elements) - { - event event; - event.element = element; - event.name = key_name; - event.arguments = {mouse[0], mouse[1]}; - - engine::notify(event); - } - } - - break; - } - default: - { - event event; - event.element = &ui_element; - event.name = down - ? "keydown" - : "keyup"; - event.arguments = {key}; - - engine::notify(event); - - break; - } - } + engine::notify(event); } void handle_char_event(const int key) { std::string key_str = {(char)key}; event event; - event.element = &ui_element; event.name = "keypress"; event.arguments = {key_str}; engine::notify(event); } - std::vector previous_elements; - void handle_mousemove_event(const int x, const int y) - { - if (mouse[0] == x && mouse[1] == y) - { - return; - } - - mouse[0] = x; - mouse[1] = y; - - { - event event; - event.element = &ui_element; - event.name = "mousemove"; - event.arguments = {x, y}; - - engine::notify(event); - } - - const auto _elements = elements_in_point(x, y); - for (const auto& element : _elements) - { - event event; - event.element = element; - event.name = "mouseover"; - - engine::notify(event); - } - - for (const auto& element : previous_elements) - { - auto found = false; - - for (const auto& _element : _elements) - { - if (element == _element) - { - found = true; - } - } - - if (!found) - { - event event; - event.element = element; - event.name = "mouseleave"; - - engine::notify(event); - } - } - - for (const auto& element : _elements) - { - auto found = false; - - for (const auto& _element : previous_elements) - { - if (element == _element) - { - found = true; - } - } - - if (!found) - { - event event; - event.element = element; - event.name = "mouseenter"; - - engine::notify(event); - } - } - - previous_elements = _elements; - } - auto& get_scripts() { static std::vector> scripts{}; @@ -327,93 +64,14 @@ namespace ui_scripting::lua::engine { get_scripts().push_back(std::make_unique(code, script_type::code)); } - - void render_menus() - { - check_resize(); - - for (auto& menu : menus) - { - if (is_menu_visible(menu.second)) - { - menu.second.render(); - } - } - } - - void close_all_menus() - { - for (auto& menu : menus) - { - if (!is_menu_visible(menu.second)) - { - continue; - } - - event event; - event.element = &menu.second; - event.name = "close"; - engine::notify(event); - - menu.second.close(); - } - } - - void clear_menus() - { - menus.clear(); - - for (const auto element : elements) - { - delete element; - } - - elements.clear(); - } - } - - void open_menu(const std::string& name) - { - if (menus.find(name) == menus.end()) - { - return; - } - - const auto menu = &menus[name]; - - event event; - event.element = menu; - event.name = "open"; - engine::notify(event); - - menu->open(); - } - - void close_menu(const std::string& name) - { - if (menus.find(name) == menus.end()) - { - return; - } - - const auto menu = &menus[name]; - - event event; - event.element = menu; - event.name = "close"; - engine::notify(event); - - menu->close(); } void start() { clear_converted_functions(); - close_all_menus(); get_scripts().clear(); - clear_menus(); - load_code(updater_script); + //load_code(updater_script); load_scripts("ui_scripts/"); load_scripts("h2-mod/ui_scripts/"); @@ -428,9 +86,7 @@ namespace ui_scripting::lua::engine void stop() { clear_converted_functions(); - close_all_menus(); get_scripts().clear(); - clear_menus(); } void ui_event(const std::string& type, const std::vector& arguments) @@ -444,11 +100,6 @@ namespace ui_scripting::lua::engine { handle_char_event(arguments[0]); } - - if (type == "mousemove") - { - handle_mousemove_event(relative_mouse(arguments[0]), relative_mouse(arguments[1])); - } } void notify(const event& e) @@ -461,9 +112,6 @@ namespace ui_scripting::lua::engine void run_frame() { - check_resize(); - render_menus(); - for (auto& script : get_scripts()) { script->run_frame(); diff --git a/src/client/game/ui_scripting/lua/engine.hpp b/src/client/game/ui_scripting/lua/engine.hpp index 8616d6f5..27c5123e 100644 --- a/src/client/game/ui_scripting/lua/engine.hpp +++ b/src/client/game/ui_scripting/lua/engine.hpp @@ -7,9 +7,6 @@ namespace ui_scripting::lua::engine void start(); void stop(); - void close_menu(const std::string& name); - void open_menu(const std::string& name); - void ui_event(const std::string&, const std::vector&); void notify(const event& e); void run_frame(); diff --git a/src/client/game/ui_scripting/lua/event_handler.cpp b/src/client/game/ui_scripting/lua/event_handler.cpp index b215fef1..8d123f29 100644 --- a/src/client/game/ui_scripting/lua/event_handler.cpp +++ b/src/client/game/ui_scripting/lua/event_handler.cpp @@ -17,9 +17,9 @@ namespace ui_scripting::lua this->remove(handle); }; - event_listener_handle_type["endon"] = [this](const event_listener_handle& handle, const element* entity, const std::string& event) + event_listener_handle_type["endon"] = [this](const event_listener_handle& handle, const std::string& event) { - this->add_endon_condition(handle, entity, event); + this->add_endon_condition(handle, event); }; } @@ -35,7 +35,7 @@ namespace ui_scripting::lua for (auto i = tasks.begin(); i != tasks.end();) { - if (i->event != event.name || i->element != event.element) + if (i->event != event.name) { ++i; continue; @@ -78,8 +78,7 @@ namespace ui_scripting::lua return {id}; } - void event_handler::add_endon_condition(const event_listener_handle& handle, const element* element, - const std::string& event) + void event_handler::add_endon_condition(const event_listener_handle& handle, const std::string& event) { auto merger = [&](task_list& tasks) { @@ -87,7 +86,7 @@ namespace ui_scripting::lua { if (task.id == handle.id) { - task.endon_conditions.emplace_back((uint64_t)element, event); + task.endon_conditions.emplace_back(event); } } }; @@ -150,7 +149,7 @@ namespace ui_scripting::lua { for (auto& condition : task.endon_conditions) { - if (condition.first == (uint64_t)event.element && condition.second == event.name) + if (condition == event.name) { task.is_deleted = true; break; diff --git a/src/client/game/ui_scripting/lua/event_handler.hpp b/src/client/game/ui_scripting/lua/event_handler.hpp index a203a23a..abf1415e 100644 --- a/src/client/game/ui_scripting/lua/event_handler.hpp +++ b/src/client/game/ui_scripting/lua/event_handler.hpp @@ -16,11 +16,10 @@ namespace ui_scripting::lua { public: std::string event = {}; - void* element{}; event_callback callback = {}; bool is_volatile = false; bool is_deleted = false; - std::vector> endon_conditions{}; + std::vector endon_conditions{}; }; class event_handler final @@ -52,7 +51,7 @@ namespace ui_scripting::lua void merge_callbacks(); void handle_endon_conditions(const event& event); - void add_endon_condition(const event_listener_handle& handle, const element* element, const std::string& event); + void add_endon_condition(const event_listener_handle& handle, const std::string& event); event_arguments build_arguments(const event& event) const; }; diff --git a/src/client/game/ui_scripting/lua/scheduler.cpp b/src/client/game/ui_scripting/lua/scheduler.cpp index 8ecb930a..99cac9a5 100644 --- a/src/client/game/ui_scripting/lua/scheduler.cpp +++ b/src/client/game/ui_scripting/lua/scheduler.cpp @@ -13,9 +13,9 @@ namespace ui_scripting::lua this->remove(handle); }; - task_handle_type["endon"] = [this](const task_handle& handle, const element* element, const std::string& event) + task_handle_type["endon"] = [this](const task_handle& handle, const std::string& event) { - this->add_endon_condition(handle, element, event); + this->add_endon_condition(handle, event); }; } @@ -27,7 +27,7 @@ namespace ui_scripting::lua { for (auto& condition : task.endon_conditions) { - if (condition.first == (uint64_t)event.element && condition.second == event.name) + if (condition == event.name) { task.is_deleted = true; break; @@ -118,7 +118,7 @@ namespace ui_scripting::lua return {id}; } - void scheduler::add_endon_condition(const task_handle& handle, const element* element, const std::string& event) + void scheduler::add_endon_condition(const task_handle& handle, const std::string& event) { auto merger = [&](task_list& tasks) { @@ -126,7 +126,7 @@ namespace ui_scripting::lua { if (task.id == handle.id) { - task.endon_conditions.emplace_back(element->id, event); + task.endon_conditions.emplace_back(event); } } }; diff --git a/src/client/game/ui_scripting/lua/scheduler.hpp b/src/client/game/ui_scripting/lua/scheduler.hpp index ac730a03..26ab9c32 100644 --- a/src/client/game/ui_scripting/lua/scheduler.hpp +++ b/src/client/game/ui_scripting/lua/scheduler.hpp @@ -19,7 +19,7 @@ namespace ui_scripting::lua std::chrono::milliseconds delay{}; bool is_volatile = false; bool is_deleted = false; - std::vector> endon_conditions{}; + std::vector endon_conditions{}; }; class scheduler final @@ -46,7 +46,7 @@ namespace ui_scripting::lua utils::concurrency::container callbacks_; std::atomic_int64_t current_task_id_ = 0; - void add_endon_condition(const task_handle& handle, const element* element, const std::string& event); + void add_endon_condition(const task_handle& handle, const std::string& event); void remove(const task_handle& handle); void merge_callbacks(); diff --git a/src/client/game/ui_scripting/menu.cpp b/src/client/game/ui_scripting/menu.cpp deleted file mode 100644 index 900c244f..00000000 --- a/src/client/game/ui_scripting/menu.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include -#include "menu.hpp" -#include "lua/engine.hpp" -#include "component/ui_scripting.hpp" - -namespace ui_scripting -{ - menu::menu() - { - } - - void menu::add_child(element* el) - { - this->children.push_back(el); - } - - void menu::open() - { - if (this->visible) - { - return; - } - - this->cursor_was_enabled = *game::keyCatchers & 0x40; - if (this->cursor) - { - *game::keyCatchers |= 0x40; - } - - this->visible = true; - } - - void menu::close() - { - if (!this->visible) - { - return; - } - - if (this->cursor && !this->cursor_was_enabled) - { - *game::keyCatchers &= ~0x40; - } - - this->visible = false; - } - - void menu::render() - { - if (this->cursor && !(*game::keyCatchers & 0x40)) - { - this->visible = false; - return; - } - - for (auto& element : this->children) - { - if (element->hidden) - { - continue; - } - - element->render(); - } - } -} diff --git a/src/client/game/ui_scripting/menu.hpp b/src/client/game/ui_scripting/menu.hpp deleted file mode 100644 index cd975c46..00000000 --- a/src/client/game/ui_scripting/menu.hpp +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once -#include "game/game.hpp" -#include "element.hpp" - -namespace ui_scripting -{ - enum menu_type - { - normal, - overlay - }; - - class menu final - { - public: - menu(); - - bool visible = false; - bool hidden = false; - bool cursor = false; - bool ignoreevents = false; - bool cursor_was_enabled = false; - - void open(); - void close(); - - void add_child(element* el); - void render(); - - menu_type type = normal; - - std::string overlay_menu; - std::vector children{}; - }; -} diff --git a/src/common/utils/http.cpp b/src/common/utils/http.cpp index 6a167260..f09bc84e 100644 --- a/src/common/utils/http.cpp +++ b/src/common/utils/http.cpp @@ -10,19 +10,25 @@ namespace utils::http { struct progress_helper { - const std::function* callback{}; + const std::function* callback{}; std::exception_ptr exception{}; + std::chrono::high_resolution_clock::time_point start{}; }; - int progress_callback(void *clientp, const curl_off_t /*dltotal*/, const curl_off_t dlnow, const curl_off_t /*ultotal*/, const curl_off_t /*ulnow*/) + int progress_callback(void *clientp, const curl_off_t dltotal, const curl_off_t dlnow, const curl_off_t /*ultotal*/, const curl_off_t /*ulnow*/) { auto* helper = static_cast(clientp); try { + const auto now = std::chrono::high_resolution_clock::now(); + const auto count = std::chrono::duration_cast< + std::chrono::milliseconds>(now - helper->start).count(); + const auto speed = (static_cast(dlnow) / static_cast(count)) * 1000.f; + if (*helper->callback) { - (*helper->callback)(dlnow); + (*helper->callback)(dlnow, dltotal, speed); } } catch(...) @@ -44,7 +50,8 @@ namespace utils::http } } - std::optional get_data(const std::string& url, const headers& headers, const std::function& callback) + std::optional get_data(const std::string& url, const headers& headers, + const std::function& callback) { curl_slist* header_list = nullptr; auto* curl = curl_easy_init(); @@ -68,6 +75,7 @@ namespace utils::http std::string buffer{}; progress_helper helper{}; helper.callback = &callback; + helper.start = std::chrono::high_resolution_clock::now(); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header_list); curl_easy_setopt(curl, CURLOPT_URL, url.data()); @@ -82,7 +90,7 @@ namespace utils::http return {std::move(buffer)}; } - if(helper.exception) + if (helper.exception) { std::rethrow_exception(helper.exception); } diff --git a/src/common/utils/http.hpp b/src/common/utils/http.hpp index b5248bc9..cac6ef91 100644 --- a/src/common/utils/http.hpp +++ b/src/common/utils/http.hpp @@ -8,6 +8,7 @@ namespace utils::http { using headers = std::unordered_map; - std::optional get_data(const std::string& url, const headers& headers = {}, const std::function& callback = {}); + std::optional get_data(const std::string& url, const headers& headers = {}, + const std::function& callback = {}); std::future> get_data_async(const std::string& url, const headers& headers = {}); } From 94beeb14c919547eb949a6ffeeadbfb2c3761cc9 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Sun, 6 Feb 2022 21:57:00 +0100 Subject: [PATCH 02/28] Check that mod is a folder and not empty --- data/ui_scripts/mods/loading.lua | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/data/ui_scripts/mods/loading.lua b/data/ui_scripts/mods/loading.lua index 85acffb1..18fab2c8 100644 --- a/data/ui_scripts/mods/loading.lua +++ b/data/ui_scripts/mods/loading.lua @@ -85,14 +85,16 @@ LUI.MenuBuilder.m_types_build["mods_menu"] = function(a1) if (io.directoryexists("mods")) then local mods = io.listfiles("mods/") for i = 1, #mods do - local name, desc = getmodname(mods[i]) + if (io.directoryexists(mods[i]) and not io.directoryisempty(mods[i])) then + local name, desc = getmodname(mods[i]) - if (mods[i] ~= modfolder) then - menu:AddButton("$_" .. name, function() - game:executecommand("loadmod " .. mods[i]) - end, nil, true, nil, { - desc_text = desc - }) + if (mods[i] ~= modfolder) then + menu:AddButton("$_" .. name, function() + game:executecommand("loadmod " .. mods[i]) + end, nil, true, nil, { + desc_text = desc + }) + end end end end From 1b1b52b5ded338d10869136da3224c5ff5dada9b Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Sun, 6 Feb 2022 22:12:36 +0100 Subject: [PATCH 03/28] Fix keybinds --- src/client/component/binding.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/client/component/binding.cpp b/src/client/component/binding.cpp index 36f9e06c..0eb88f30 100644 --- a/src/client/component/binding.cpp +++ b/src/client/component/binding.cpp @@ -5,6 +5,8 @@ #include #include +#define ORIGINAL_BIND_COUNT 110 + namespace binding { namespace @@ -24,7 +26,7 @@ namespace binding const auto* const key_button = game::Key_KeynumToString(key_index, 0, 1); auto value = game::playerKeys->keys[key_index].binding; - if (value && value < 100) + if (value && value < ORIGINAL_BIND_COUNT) { const auto len = sprintf_s(&buffer[bytes_used], (buffer_size_align - bytes_used), "bind %s \"%s\"\n", key_button, game::command_whitelist[value]); @@ -36,9 +38,9 @@ namespace binding bytes_used += len; } - else if (value >= 100) + else if (value >= ORIGINAL_BIND_COUNT) { - value -= 100; + value -= ORIGINAL_BIND_COUNT; if (static_cast(value) < custom_binds.size() && !custom_binds[value].empty()) { const auto len = sprintf_s(&buffer[bytes_used], (buffer_size_align - bytes_used), @@ -80,7 +82,7 @@ namespace binding int key_get_binding_for_cmd_stub(const char* command) { // original binds - for (auto i = 0; i <= 100; i++) + for (auto i = 0; i <= ORIGINAL_BIND_COUNT; i++) { if (game::command_whitelist[i] && !strcmp(command, game::command_whitelist[i])) { @@ -89,14 +91,14 @@ namespace binding } // custom binds - return 100 + get_binding_for_custom_command(command); + return ORIGINAL_BIND_COUNT + get_binding_for_custom_command(command); } void cl_execute_key_stub(const int local_client_num, int key, const int down, const unsigned int time) { - if (key >= 100) + if (key >= ORIGINAL_BIND_COUNT) { - key -= 100; + key -= ORIGINAL_BIND_COUNT; if (static_cast(key) < custom_binds.size() && !custom_binds[key].empty()) { From 25ad14bca13c7fed808e64dda74e11b8b61bfd86 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Sun, 6 Feb 2022 22:36:34 +0100 Subject: [PATCH 04/28] Add this back --- src/client/game/ui_scripting/lua/engine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/client/game/ui_scripting/lua/engine.cpp b/src/client/game/ui_scripting/lua/engine.cpp index 759a1188..b204a78b 100644 --- a/src/client/game/ui_scripting/lua/engine.cpp +++ b/src/client/game/ui_scripting/lua/engine.cpp @@ -71,7 +71,7 @@ namespace ui_scripting::lua::engine clear_converted_functions(); get_scripts().clear(); - //load_code(updater_script); + load_code(updater_script); load_scripts("ui_scripts/"); load_scripts("h2-mod/ui_scripts/"); From 1931759076afb725e553b4da790a88de2bba4539 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Feb 2022 22:27:36 +0000 Subject: [PATCH 05/28] Bump deps/imgui from `f07df31` to `fc84214` Bumps [deps/imgui](https://github.com/fedddddd/imgui) from `f07df31` to `fc84214`. - [Release notes](https://github.com/fedddddd/imgui/releases) - [Commits](https://github.com/fedddddd/imgui/compare/f07df31745296090ac7ecc01811f88c85766028a...fc84214988b74179b3941d35393c24ee8ba7a794) --- updated-dependencies: - dependency-name: deps/imgui dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/imgui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/imgui b/deps/imgui index f07df317..fc842149 160000 --- a/deps/imgui +++ b/deps/imgui @@ -1 +1 @@ -Subproject commit f07df31745296090ac7ecc01811f88c85766028a +Subproject commit fc84214988b74179b3941d35393c24ee8ba7a794 From 79a9c08a1c1214f0e8d1ac7c96fa5334cb78f60a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Feb 2022 22:18:20 +0000 Subject: [PATCH 06/28] Bump deps/curl from `9f1d29e` to `e3e0eb4` Bumps [deps/curl](https://github.com/curl/curl) from `9f1d29e` to `e3e0eb4`. - [Release notes](https://github.com/curl/curl/releases) - [Commits](https://github.com/curl/curl/compare/9f1d29ecacffe3e94349bcef6e9fafa62b1cc431...e3e0eb4d30000e6c4f14dae490dde94effa07991) --- updated-dependencies: - dependency-name: deps/curl dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/curl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/curl b/deps/curl index 9f1d29ec..e3e0eb4d 160000 --- a/deps/curl +++ b/deps/curl @@ -1 +1 @@ -Subproject commit 9f1d29ecacffe3e94349bcef6e9fafa62b1cc431 +Subproject commit e3e0eb4d30000e6c4f14dae490dde94effa07991 From de8bbaafe68156bb0911f386bcc38099995715f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Feb 2022 22:18:28 +0000 Subject: [PATCH 07/28] Bump deps/protobuf from `3ea30d8` to `b5ab0b7` Bumps [deps/protobuf](https://github.com/google/protobuf) from `3ea30d8` to `b5ab0b7`. - [Release notes](https://github.com/google/protobuf/releases) - [Commits](https://github.com/google/protobuf/compare/3ea30d80847cd9561db570ae7f673afc15523545...b5ab0b7a18b7336c60130f4ddb2d97c51792f896) --- updated-dependencies: - dependency-name: deps/protobuf dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/protobuf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/protobuf b/deps/protobuf index 3ea30d80..b5ab0b7a 160000 --- a/deps/protobuf +++ b/deps/protobuf @@ -1 +1 @@ -Subproject commit 3ea30d80847cd9561db570ae7f673afc15523545 +Subproject commit b5ab0b7a18b7336c60130f4ddb2d97c51792f896 From 73e59c8de1887480725f904b27d98145bc4e4d87 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Wed, 9 Feb 2022 22:35:23 +0100 Subject: [PATCH 08/28] Remove this --- src/client/resource.hpp | 1 - src/client/resource.rc | 2 - src/client/resources/animation.lua | 92 ------------------------------ 3 files changed, 95 deletions(-) delete mode 100644 src/client/resources/animation.lua diff --git a/src/client/resource.hpp b/src/client/resource.hpp index 2005d4f1..a2a1233e 100644 --- a/src/client/resource.hpp +++ b/src/client/resource.hpp @@ -21,6 +21,5 @@ #define ICON_IMAGE 313 -#define LUA_ANIMATION_SCRIPT 314 #define LUA_JSON_SCRIPT 315 #define LUI_UPDATER_MENU 316 diff --git a/src/client/resource.rc b/src/client/resource.rc index 65467a1d..6f31a48e 100644 --- a/src/client/resource.rc +++ b/src/client/resource.rc @@ -97,9 +97,7 @@ ID_ICON ICON "resources/icon.ico" MENU_MAIN RCDATA "resources/main.html" -LUA_ANIMATION_SCRIPT RCDATA "resources/animation.lua" LUA_JSON_SCRIPT RCDATA "resources/json.lua" - LUI_UPDATER_MENU RCDATA "resources/updater.lua" #ifdef _DEBUG diff --git a/src/client/resources/animation.lua b/src/client/resources/animation.lua deleted file mode 100644 index 0294c264..00000000 --- a/src/client/resources/animation.lua +++ /dev/null @@ -1,92 +0,0 @@ -function element:animate(name, state, animationtime) - local start = { - x = self.x, - y = self.y, - w = self.w, - h = self.h, - color = self.color, - backcolor = self.backcolor, - bordercolor = self.bordercolor, - borderwidth = self.borderwidth, - fontsize = self.fontsize - } - - local _end = {} - for k, v in pairs(start) do - _end[k] = state[k] or v - end - - local diffs = {} - for k, v in pairs(_end) do - if (type(v) == "table") then - local value = {} - local different = false - - for _k, _v in pairs(v) do - value[_k] = _v - start[k][_k] - if (value[_k] ~= 0) then - different = true - end - end - - if (different) then - diffs[k] = value - end - else - local value = v - start[k] - if (value ~= 0) then - diffs[k] = v - start[k] - end - end - end - - local timeout = nil - local interval = nil - local starttime = game:time() - - interval = game:onframe(function() - local time = game:time() - local percentage = (time - starttime) / animationtime - - if (percentage >= 1) then - for k, v in pairs(diffs) do - self[k] = _end[k] - end - else - for k, v in pairs(diffs) do - if (type(v) == "table") then - local value = {} - - for _k, _v in pairs(v) do - value[_k] = start[k][_k] + _v * percentage - end - - self[k] = value - else - self[k] = start[k] + v * percentage - end - end - end - end) - - timeout = game:ontimeout(function() - interval:clear() - for k, v in pairs(diffs) do - self[k] = _end[k] - end - end, animationtime) - - self:onnotifyonce("cancel_animation", function(_name) - if (name == _name) then - timeout:clear() - interval:clear() - end - end) -end - -function element:cancelanimations(name, callback) - self:notify("cancel_animation", name) - if (type(callback) == "function") then - game:ontimeout(callback, 0) - end -end \ No newline at end of file From 98dac3439bab90fe225053a1051ecb4098c0db5a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Feb 2022 22:21:27 +0000 Subject: [PATCH 09/28] Bump deps/curl from `e3e0eb4` to `3738de3` Bumps [deps/curl](https://github.com/curl/curl) from `e3e0eb4` to `3738de3`. - [Release notes](https://github.com/curl/curl/releases) - [Commits](https://github.com/curl/curl/compare/e3e0eb4d30000e6c4f14dae490dde94effa07991...3738de3bd1efd7f3769443f9cbc485bd7ea4c397) --- updated-dependencies: - dependency-name: deps/curl dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/curl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/curl b/deps/curl index e3e0eb4d..3738de3b 160000 --- a/deps/curl +++ b/deps/curl @@ -1 +1 @@ -Subproject commit e3e0eb4d30000e6c4f14dae490dde94effa07991 +Subproject commit 3738de3bd1efd7f3769443f9cbc485bd7ea4c397 From 2a9ad320db05798e50910186dd6d9c91a6ba762f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Feb 2022 22:21:28 +0000 Subject: [PATCH 10/28] Bump deps/rapidjson from `fd3dc29` to `e4bde97` Bumps [deps/rapidjson](https://github.com/Tencent/rapidjson) from `fd3dc29` to `e4bde97`. - [Release notes](https://github.com/Tencent/rapidjson/releases) - [Commits](https://github.com/Tencent/rapidjson/compare/fd3dc29a5c2852df569e1ea81dbde2c412ac5051...e4bde977440d4a00f820b6586899e48a972d2493) --- updated-dependencies: - dependency-name: deps/rapidjson dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/rapidjson | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/rapidjson b/deps/rapidjson index fd3dc29a..e4bde977 160000 --- a/deps/rapidjson +++ b/deps/rapidjson @@ -1 +1 @@ -Subproject commit fd3dc29a5c2852df569e1ea81dbde2c412ac5051 +Subproject commit e4bde977440d4a00f820b6586899e48a972d2493 From e98e10cc6e45538facf5f7f556025c14cc7e8f3f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Feb 2022 22:21:34 +0000 Subject: [PATCH 11/28] Bump deps/protobuf from `b5ab0b7` to `d5ef16c` Bumps [deps/protobuf](https://github.com/google/protobuf) from `b5ab0b7` to `d5ef16c`. - [Release notes](https://github.com/google/protobuf/releases) - [Commits](https://github.com/google/protobuf/compare/b5ab0b7a18b7336c60130f4ddb2d97c51792f896...d5ef16c6eb6ee2f2a998926b702a6c54cc4f2f88) --- updated-dependencies: - dependency-name: deps/protobuf dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/protobuf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/protobuf b/deps/protobuf index b5ab0b7a..d5ef16c6 160000 --- a/deps/protobuf +++ b/deps/protobuf @@ -1 +1 @@ -Subproject commit b5ab0b7a18b7336c60130f4ddb2d97c51792f896 +Subproject commit d5ef16c6eb6ee2f2a998926b702a6c54cc4f2f88 From c28d7d4d46cd5103132b554853957958c0067857 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Feb 2022 22:21:36 +0000 Subject: [PATCH 12/28] Bump deps/asmjit from `9a92d2f` to `23ddf56` Bumps [deps/asmjit](https://github.com/asmjit/asmjit) from `9a92d2f` to `23ddf56`. - [Release notes](https://github.com/asmjit/asmjit/releases) - [Commits](https://github.com/asmjit/asmjit/compare/9a92d2f97260749f6f29dc93e53c743448f0137a...23ddf56b00f47d8aa0c82ad225e4b3a92661da7e) --- updated-dependencies: - dependency-name: deps/asmjit dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/asmjit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/asmjit b/deps/asmjit index 9a92d2f9..23ddf56b 160000 --- a/deps/asmjit +++ b/deps/asmjit @@ -1 +1 @@ -Subproject commit 9a92d2f97260749f6f29dc93e53c743448f0137a +Subproject commit 23ddf56b00f47d8aa0c82ad225e4b3a92661da7e From f07799e0f1a45def740d1f82b83165c771858c4d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Feb 2022 22:27:41 +0000 Subject: [PATCH 13/28] Bump deps/protobuf from `d5ef16c` to `fe87de3` Bumps [deps/protobuf](https://github.com/google/protobuf) from `d5ef16c` to `fe87de3`. - [Release notes](https://github.com/google/protobuf/releases) - [Commits](https://github.com/google/protobuf/compare/d5ef16c6eb6ee2f2a998926b702a6c54cc4f2f88...fe87de31bf4a7623bb4beb6e4890ac2d33a4a402) --- updated-dependencies: - dependency-name: deps/protobuf dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/protobuf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/protobuf b/deps/protobuf index d5ef16c6..fe87de31 160000 --- a/deps/protobuf +++ b/deps/protobuf @@ -1 +1 @@ -Subproject commit d5ef16c6eb6ee2f2a998926b702a6c54cc4f2f88 +Subproject commit fe87de31bf4a7623bb4beb6e4890ac2d33a4a402 From 3c001d7e6289f3920361cd43fb4774ec8b1f28e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Feb 2022 22:27:46 +0000 Subject: [PATCH 14/28] Bump deps/curl from `3738de3` to `186340c` Bumps [deps/curl](https://github.com/curl/curl) from `3738de3` to `186340c`. - [Release notes](https://github.com/curl/curl/releases) - [Commits](https://github.com/curl/curl/compare/3738de3bd1efd7f3769443f9cbc485bd7ea4c397...186340c9cd02ae383bc6b39c353ad5317d4ee574) --- updated-dependencies: - dependency-name: deps/curl dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/curl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/curl b/deps/curl index 3738de3b..186340c9 160000 --- a/deps/curl +++ b/deps/curl @@ -1 +1 @@ -Subproject commit 3738de3bd1efd7f3769443f9cbc485bd7ea4c397 +Subproject commit 186340c9cd02ae383bc6b39c353ad5317d4ee574 From 4c01b28bab65890cb86d02a2caafb81e74dc571e Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Thu, 17 Feb 2022 20:01:13 +0100 Subject: [PATCH 15/28] Fix fov dvars --- src/client/component/patches.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/client/component/patches.cpp b/src/client/component/patches.cpp index 8d890529..8465f83d 100644 --- a/src/client/component/patches.cpp +++ b/src/client/component/patches.cpp @@ -37,14 +37,22 @@ namespace patches gscr_set_save_dvar_hook.invoke(); } + game::dvar_t* cg_fov = nullptr; + game::dvar_t* cg_fovScale = nullptr; + game::dvar_t* dvar_register_float_stub(int hash, const char* dvarName, float value, float min, float max, unsigned int flags) { static const auto cg_fov_hash = game::generateHashValue("cg_fov"); static const auto cg_fov_scale_hash = game::generateHashValue("cg_fovscale"); - if (hash == cg_fov_hash || hash == cg_fov_scale_hash) + if (hash == cg_fov_hash) { - flags = game::DvarFlags::DVAR_FLAG_SAVED; + return cg_fov; + } + + if (hash == cg_fov_scale_hash) + { + return cg_fovScale; } return dvar_register_float_hook.invoke(hash, dvarName, value, min, max, flags); @@ -75,7 +83,12 @@ namespace patches // Prevent game from overriding cg_fov and cg_fovscale values gscr_set_save_dvar_hook.create(0x504C60_b, &gscr_set_save_dvar_stub); + // Make cg_fov and cg_fovscale saved dvars + + cg_fov = dvars::register_float("cg_fov", 65.f, 40.f, 200.f, game::DvarFlags::DVAR_FLAG_SAVED); + cg_fovScale = dvars::register_float("cg_fovScale", 1.f, 0.1f, 2.f, game::DvarFlags::DVAR_FLAG_SAVED); + dvar_register_float_hook.create(game::Dvar_RegisterFloat.get(), dvar_register_float_stub); } }; From 4ab61d82420c9356d6e723756d4ea1c32786bac2 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Thu, 17 Feb 2022 20:01:40 +0100 Subject: [PATCH 16/28] Small change --- src/client/game/ui_scripting/lua/context.cpp | 9 +++++++-- src/common/utils/http.cpp | 6 +++--- src/common/utils/http.hpp | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/client/game/ui_scripting/lua/context.cpp b/src/client/game/ui_scripting/lua/context.cpp index 69ab4f1c..8c422965 100644 --- a/src/client/game/ui_scripting/lua/context.cpp +++ b/src/client/game/ui_scripting/lua/context.cpp @@ -469,7 +469,7 @@ namespace ui_scripting::lua ::scheduler::once([url, id, dest]() { auto last_report = std::chrono::high_resolution_clock::now(); - const auto result = utils::http::get_data(url, {}, [&last_report, id](size_t progress, size_t total, float speed) + const auto result = utils::http::get_data(url, {}, [&last_report, id](size_t progress, size_t total, size_t speed) { const auto now = std::chrono::high_resolution_clock::now(); if (now - last_report < 100ms && progress < total) @@ -483,7 +483,12 @@ namespace ui_scripting::lua { event event; event.name = "http_request_progress"; - event.arguments = {id, static_cast(progress), static_cast(total), speed}; + event.arguments = { + id, + static_cast(progress), + static_cast(total), + static_cast(speed) + }; notify(event); }, ::scheduler::pipeline::lui); diff --git a/src/common/utils/http.cpp b/src/common/utils/http.cpp index f09bc84e..fca7d8f3 100644 --- a/src/common/utils/http.cpp +++ b/src/common/utils/http.cpp @@ -10,7 +10,7 @@ namespace utils::http { struct progress_helper { - const std::function* callback{}; + const std::function* callback{}; std::exception_ptr exception{}; std::chrono::high_resolution_clock::time_point start{}; }; @@ -24,7 +24,7 @@ namespace utils::http const auto now = std::chrono::high_resolution_clock::now(); const auto count = std::chrono::duration_cast< std::chrono::milliseconds>(now - helper->start).count(); - const auto speed = (static_cast(dlnow) / static_cast(count)) * 1000.f; + const auto speed = dlnow / count; if (*helper->callback) { @@ -51,7 +51,7 @@ namespace utils::http } std::optional get_data(const std::string& url, const headers& headers, - const std::function& callback) + const std::function& callback) { curl_slist* header_list = nullptr; auto* curl = curl_easy_init(); diff --git a/src/common/utils/http.hpp b/src/common/utils/http.hpp index cac6ef91..9ff30737 100644 --- a/src/common/utils/http.hpp +++ b/src/common/utils/http.hpp @@ -9,6 +9,6 @@ namespace utils::http using headers = std::unordered_map; std::optional get_data(const std::string& url, const headers& headers = {}, - const std::function& callback = {}); + const std::function& callback = {}); std::future> get_data_async(const std::string& url, const headers& headers = {}); } From 841c26762afa064cfb56d2c18cf3c2d073e59872 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Thu, 17 Feb 2022 20:01:56 +0100 Subject: [PATCH 17/28] Remove runner --- premake5.lua | 32 +------------ src/client/resource.hpp | 7 ++- src/client/resource.rc | 6 --- src/runner/debugger.cpp | 95 -------------------------------------- src/runner/debugger.hpp | 15 ------ src/runner/resource.rc | 100 ---------------------------------------- src/runner/runner.cpp | 26 ----------- 7 files changed, 4 insertions(+), 277 deletions(-) delete mode 100644 src/runner/debugger.cpp delete mode 100644 src/runner/debugger.hpp delete mode 100644 src/runner/resource.rc delete mode 100644 src/runner/runner.cpp diff --git a/premake5.lua b/premake5.lua index eb07c0f6..fb906b54 100644 --- a/premake5.lua +++ b/premake5.lua @@ -280,20 +280,6 @@ resincludedirs {"$(ProjectDir)src"} dependencies.imports() -project "runner" -kind "WindowedApp" -language "C++" - -files {"./src/runner/**.rc", "./src/runner/**.hpp", "./src/runner/**.cpp", "./src/runner/resources/**.*"} - -includedirs {"./src/runner", "./src/common", "%{prj.location}/src"} - -resincludedirs {"$(ProjectDir)src"} - -links {"common"} - -dependencies.imports() - project "client" kind "ConsoleApp" language "C++" @@ -311,7 +297,7 @@ includedirs {"./src/client", "./src/common", "%{prj.location}/src"} resincludedirs {"$(ProjectDir)src"} -dependson {"tlsdll", "runner"} +dependson {"tlsdll"} links {"common"} @@ -335,22 +321,6 @@ links {"common"} resincludedirs {"$(ProjectDir)src"} -project "runner" -kind "WindowedApp" -language "C++" - -files {"./src/runner/**.rc", "./src/runner/**.hpp", "./src/runner/**.cpp", "./src/runner/resources/**.*"} - -includedirs {"./src/runner", "./src/common", "%{prj.location}/src"} - -links {"common"} - -resincludedirs {"$(ProjectDir)src"} - -links {"common"} - -dependencies.imports() - group "Dependencies" dependencies.projects() diff --git a/src/client/resource.hpp b/src/client/resource.hpp index a2a1233e..a5a6b649 100644 --- a/src/client/resource.hpp +++ b/src/client/resource.hpp @@ -17,9 +17,8 @@ #define MENU_MAIN 310 #define TLS_DLL 311 -#define RUNNER 312 -#define ICON_IMAGE 313 +#define ICON_IMAGE 312 -#define LUA_JSON_SCRIPT 315 -#define LUI_UPDATER_MENU 316 +#define LUA_JSON_SCRIPT 313 +#define LUI_UPDATER_MENU 314 diff --git a/src/client/resource.rc b/src/client/resource.rc index 6f31a48e..b42a1e0c 100644 --- a/src/client/resource.rc +++ b/src/client/resource.rc @@ -106,12 +106,6 @@ TLS_DLL RCDATA "../../build/bin/x64/Debug/tlsdll.dll" TLS_DLL RCDATA "../../build/bin/x64/Release/tlsdll.dll" #endif -#ifdef _DEBUG -RUNNER RCDATA "../../build/bin/x64/Debug/runner.exe" -#else -RUNNER RCDATA "../../build/bin/x64/Release/runner.exe" -#endif - ICON_IMAGE RCDATA "resources/icon.png" #endif // English (United States) resources diff --git a/src/runner/debugger.cpp b/src/runner/debugger.cpp deleted file mode 100644 index d58149b7..00000000 --- a/src/runner/debugger.cpp +++ /dev/null @@ -1,95 +0,0 @@ -#define WIN32_LEAN_AND_MEAN -#include -#include "debugger.hpp" - -namespace -{ - bool acquire_debug_privilege() - { - TOKEN_PRIVILEGES token_privileges; - ZeroMemory(&token_privileges, sizeof(token_privileges)); - token_privileges.PrivilegeCount = 1; - - HANDLE token; - if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &token)) - { - return false; - } - - if (!LookupPrivilegeValue(nullptr, SE_DEBUG_NAME, &token_privileges.Privileges[0].Luid)) - { - CloseHandle(token); - return false; - } - - token_privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; - - DWORD size; - if (!AdjustTokenPrivileges(token, FALSE, &token_privileges, 0, nullptr, &size)) - { - CloseHandle(token); - return false; - } - - return CloseHandle(token) != FALSE; - } -} - -debugger::debugger(const unsigned long process_id, const bool start) -{ - if (!start) - { - return; - } - - this->runner_ = std::thread([this, process_id]() - { - this->terminate_ = false; - this->run(process_id); - }); -} - -debugger::~debugger() -{ - this->terminate_ = true; - if (this->runner_.joinable()) - { - this->runner_.join(); - } -} - -void debugger::run(const unsigned long process_id) const -{ - acquire_debug_privilege(); - if (!DebugActiveProcess(process_id)) - { - return; - } - - SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL); - - DEBUG_EVENT event; - while (!this->terminate_ && WaitForDebugEvent(&event,INFINITE)) - { - if (event.dwDebugEventCode == EXCEPTION_DEBUG_EVENT) - { - ContinueDebugEvent(event.dwProcessId, event.dwThreadId, DBG_EXCEPTION_NOT_HANDLED); - continue; - } - - if (event.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT) - { - ContinueDebugEvent(event.dwProcessId, event.dwThreadId, DBG_CONTINUE); - break; - } - -#ifdef DEV_BUILD - if (event.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT) - { - OutputDebugStringA("Debugger attached!\n"); - } -#endif - - ContinueDebugEvent(event.dwProcessId, event.dwThreadId, DBG_CONTINUE); - } -} diff --git a/src/runner/debugger.hpp b/src/runner/debugger.hpp deleted file mode 100644 index 99d1073e..00000000 --- a/src/runner/debugger.hpp +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once -#include - -class debugger -{ -public: - debugger(unsigned long process_id, bool start); - ~debugger(); - -private: - volatile bool terminate_ = false; - std::thread runner_; - - void run(unsigned long process_id) const; -}; diff --git a/src/runner/resource.rc b/src/runner/resource.rc deleted file mode 100644 index ba86c6f4..00000000 --- a/src/runner/resource.rc +++ /dev/null @@ -1,100 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#pragma code_page(65001) - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "windows.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "#include ""windows.h""\r\n" - "\0" -END - -2 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,0 - PRODUCTVERSION 1,0,0,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x40004L - FILETYPE VFT_DLL - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "CompanyName", "X Labs" - VALUE "FileDescription", "Steam mod runner" - VALUE "FileVersion", "1.0.0.0" - VALUE "InternalName", "Runner" - VALUE "LegalCopyright", "All rights reserved." - VALUE "OriginalFilename", "runner.exe" - VALUE "ProductName", "runner" - VALUE "ProductVersion", "1.0.0.0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -///////////////////////////////////////////////////////////////////////////// -// -// Binary Data -// - -102 ICON "../client/resources/icon.ico" - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/src/runner/runner.cpp b/src/runner/runner.cpp deleted file mode 100644 index 01c32d2e..00000000 --- a/src/runner/runner.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#define WIN32_LEAN_AND_MEAN -#include -#include - -#include "debugger.hpp" - -int __stdcall WinMain(HINSTANCE, HINSTANCE, PSTR, int) -{ - const auto* const command = "-proc "; - const char* parent_proc = strstr(GetCommandLineA(), command); - - if (parent_proc) - { - const auto pid = DWORD(atoi(parent_proc + strlen(command))); - auto* const process_handle = OpenProcess(SYNCHRONIZE, FALSE, pid); - if (process_handle) - { - //debugger _(pid, strstr(GetCommandLineA(), "-debug ") != nullptr); - WaitForSingleObject(process_handle, INFINITE); - CloseHandle(process_handle); - return 0; - } - } - - return 1; -} From 6f9cb89b540c0fbbff6dd30482529c6e227e64d6 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Thu, 17 Feb 2022 20:22:28 +0100 Subject: [PATCH 18/28] vs2022 build --- generate.bat | 3 +- premake5.lua | 32 ++++++++++------------ src/client/game/scripting/array.cpp | 2 -- src/client/game/scripting/lua/context.cpp | 29 ++++++++++++++++++-- src/client/std_include.hpp | 1 + tools/premake5.exe | Bin 1388032 -> 1398272 bytes 6 files changed, 45 insertions(+), 22 deletions(-) diff --git a/generate.bat b/generate.bat index b9ffdf6f..8d2b86a4 100644 --- a/generate.bat +++ b/generate.bat @@ -1,3 +1,4 @@ @echo off git submodule update --init --recursive -tools\premake5 %* vs2019 \ No newline at end of file +tools\premake5 %* vs2022 +pause \ No newline at end of file diff --git a/premake5.lua b/premake5.lua index fb906b54..1818c93c 100644 --- a/premake5.lua +++ b/premake5.lua @@ -248,25 +248,23 @@ end flags {"NoIncrementalLink", "NoMinimalRebuild", "MultiProcessorCompile", "No64BitChecks"} +filter "platforms:x64" + defines {"_WINDOWS", "WIN32"} +filter {} -configuration "windows" -defines {"_WINDOWS", "WIN32"} +filter "configurations:Release" + optimize "Size" + buildoptions {"/GL"} + linkoptions { "/IGNORE:4702", "/LTCG" } + defines {"NDEBUG"} + flags {"FatalCompileWarnings"} +filter {} -configuration "Release" -optimize "Size" -buildoptions {"/GL"} -linkoptions { "/IGNORE:4702", "/LTCG" } - -defines {"NDEBUG"} - -flags {"FatalCompileWarnings"} - -configuration "Debug" -optimize "Debug" -buildoptions {"/bigobj"} -defines {"DEBUG", "_DEBUG"} - -configuration {} +filter "configurations:Debug" + optimize "Debug" + buildoptions {"/bigobj"} + defines {"DEBUG", "_DEBUG"} +filter {} project "common" kind "StaticLib" diff --git a/src/client/game/scripting/array.cpp b/src/client/game/scripting/array.cpp index 79eda843..92fe975b 100644 --- a/src/client/game/scripting/array.cpp +++ b/src/client/game/scripting/array.cpp @@ -264,8 +264,6 @@ namespace scripting void array::set(const std::string& key, const script_value& _value) const { const auto value = _value.get_raw(); - - const auto string_value = game::SL_GetString(key.data(), 0); const auto variable_id = this->get_value_id(key); if (!variable_id) diff --git a/src/client/game/scripting/lua/context.cpp b/src/client/game/scripting/lua/context.cpp index ef6e15b1..0bee5fba 100644 --- a/src/client/game/scripting/lua/context.cpp +++ b/src/client/game/scripting/lua/context.cpp @@ -30,7 +30,20 @@ namespace scripting::lua ); } - void setup_entity_type(sol::state& state, event_handler& handler, scheduler& scheduler) + void setup_io(sol::state& state) + { + state["io"]["fileexists"] = utils::io::file_exists; + state["io"]["writefile"] = utils::io::write_file; + state["io"]["filesize"] = utils::io::file_size; + state["io"]["createdirectory"] = utils::io::create_directory; + state["io"]["directoryexists"] = utils::io::directory_exists; + state["io"]["directoryisempty"] = utils::io::directory_is_empty; + state["io"]["listfiles"] = utils::io::list_files; + state["io"]["copyfolder"] = utils::io::copy_folder; + state["io"]["readfile"] = static_cast(utils::io::read_file); + } + + void setup_vector_type(sol::state& state) { state["level"] = entity{*::game::levelEntityId}; state["player"] = call("getentbynum", {0}).as(); @@ -181,6 +194,12 @@ namespace scripting::lua { return call("anglestoforward", {a}).as(); }; + } + + void setup_entity_type(sol::state& state, event_handler& handler, scheduler& scheduler) + { + state["level"] = entity{ *::game::levelEntityId }; + state["player"] = call("getentbynum", { 0 }).as(); auto entity_type = state.new_usertype("entity"); @@ -307,7 +326,10 @@ namespace scripting::lua std::vector returns = {entref.entnum, entref.classnum}; return sol::as_returns(returns); }; + } + void setup_game_type(sol::state& state, event_handler& handler, scheduler& scheduler) + { struct game { }; @@ -407,7 +429,7 @@ namespace scripting::lua return detour; }; - game_type["getfunctions"] = [entity_type](const game&, const sol::this_state s, const std::string& filename) + game_type["getfunctions"] = [](const game&, const sol::this_state s, const std::string& filename) { if (scripting::script_function_table.find(filename) == scripting::script_function_table.end()) { @@ -611,7 +633,10 @@ namespace scripting::lua return this->folder_; }; + setup_io(this->state_); + setup_vector_type(this->state_); setup_entity_type(this->state_, this->event_handler_, this->scheduler_); + setup_game_type(this->state_, this->event_handler_, this->scheduler_); printf("Loading script '%s'\n", this->folder_.data()); this->load_script("__init__"); diff --git a/src/client/std_include.hpp b/src/client/std_include.hpp index 4a095e80..b426086a 100644 --- a/src/client/std_include.hpp +++ b/src/client/std_include.hpp @@ -10,6 +10,7 @@ #pragma warning(disable: 4702) #pragma warning(disable: 4996) #pragma warning(disable: 5054) +#pragma warning(disable: 5056) #pragma warning(disable: 6011) #pragma warning(disable: 6297) #pragma warning(disable: 6385) diff --git a/tools/premake5.exe b/tools/premake5.exe index 0e4954fd99feafac6315506ec4c727a53fdaaeb8..c73da1fb0f9811be77fc7c6bbd5d98644ddddc71 100644 GIT binary patch delta 177683 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 delta 171834 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 Dk=)XL From 1f46d3a25cf46539ac782a945d3fb261ffa88ac3 Mon Sep 17 00:00:00 2001 From: fed <58637860+fedddddd@users.noreply.github.com> Date: Thu, 17 Feb 2022 20:23:41 +0100 Subject: [PATCH 19/28] Update build.yml --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1d7a1aad..6aca435d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,8 +38,8 @@ jobs: uses: microsoft/setup-msbuild@v1.0.2 - name: Generate project files - #run: tools/premake5 vs2019 --ci-build - run: tools/premake5 vs2019 + #run: tools/premake5 vs2022 --ci-build + run: tools/premake5 vs2022 - name: Set up problem matching uses: ammaraskar/msvc-problem-matcher@master @@ -64,7 +64,7 @@ jobs: deploy: name: Deploy artifacts needs: build - runs-on: ubuntu-latest + runs-on: ubuntu-2022 if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop') steps: - name: Setup main environment From 22b823563307353d5f3321038ae6d685988e5149 Mon Sep 17 00:00:00 2001 From: Federico Cecchetto Date: Thu, 17 Feb 2022 20:24:28 +0100 Subject: [PATCH 20/28] Update appveyor.yml --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 0b851994..400aa2b2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -4,8 +4,8 @@ version: "#{build} ({branch})" environment: matrix: - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 - PREMAKE_ACTION: vs2019 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 + PREMAKE_ACTION: vs2022 CI: 1 branches: From 8c84ada3413ba9e3a5d1400cffa788cb12cb1d9f Mon Sep 17 00:00:00 2001 From: fed <58637860+fedddddd@users.noreply.github.com> Date: Thu, 17 Feb 2022 20:55:54 +0100 Subject: [PATCH 21/28] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6aca435d..9a72feac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,7 @@ on: jobs: build: name: Build binaries - runs-on: windows-latest + runs-on: windows-2022 strategy: matrix: configuration: From 24849b7e0e0fe16ed2026e4113438f489ae76c03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Feb 2022 20:07:29 +0000 Subject: [PATCH 22/28] Bump deps/protobuf from `fe87de3` to `2f7ee91` Bumps [deps/protobuf](https://github.com/google/protobuf) from `fe87de3` to `2f7ee91`. - [Release notes](https://github.com/google/protobuf/releases) - [Commits](https://github.com/google/protobuf/compare/fe87de31bf4a7623bb4beb6e4890ac2d33a4a402...2f7ee91e326d95915b63918f968244cfefbc022a) --- updated-dependencies: - dependency-name: deps/protobuf dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/protobuf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/protobuf b/deps/protobuf index fe87de31..2f7ee91e 160000 --- a/deps/protobuf +++ b/deps/protobuf @@ -1 +1 @@ -Subproject commit fe87de31bf4a7623bb4beb6e4890ac2d33a4a402 +Subproject commit 2f7ee91e326d95915b63918f968244cfefbc022a From 3cef829c650890eaadd1dc037c352b61ea95ba66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Feb 2022 20:09:41 +0000 Subject: [PATCH 23/28] Bump deps/asmjit from `23ddf56` to `28c4d8c` Bumps [deps/asmjit](https://github.com/asmjit/asmjit) from `23ddf56` to `28c4d8c`. - [Release notes](https://github.com/asmjit/asmjit/releases) - [Commits](https://github.com/asmjit/asmjit/compare/23ddf56b00f47d8aa0c82ad225e4b3a92661da7e...28c4d8c528527141955006f09124ce672ddfbe3f) --- updated-dependencies: - dependency-name: deps/asmjit dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/asmjit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/asmjit b/deps/asmjit index 23ddf56b..28c4d8c5 160000 --- a/deps/asmjit +++ b/deps/asmjit @@ -1 +1 @@ -Subproject commit 23ddf56b00f47d8aa0c82ad225e4b3a92661da7e +Subproject commit 28c4d8c528527141955006f09124ce672ddfbe3f From 77b5193485563e9037411231ed7eddec478514b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Feb 2022 20:09:52 +0000 Subject: [PATCH 24/28] Bump deps/curl from `186340c` to `049f376` Bumps [deps/curl](https://github.com/curl/curl) from `186340c` to `049f376`. - [Release notes](https://github.com/curl/curl/releases) - [Commits](https://github.com/curl/curl/compare/186340c9cd02ae383bc6b39c353ad5317d4ee574...049f3765c7016a3f7a92b7f88aae6405c49b84fb) --- updated-dependencies: - dependency-name: deps/curl dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/curl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/curl b/deps/curl index 186340c9..049f3765 160000 --- a/deps/curl +++ b/deps/curl @@ -1 +1 @@ -Subproject commit 186340c9cd02ae383bc6b39c353ad5317d4ee574 +Subproject commit 049f3765c7016a3f7a92b7f88aae6405c49b84fb From 715d0ff8364dafb0dfd4031b66dccc399450e842 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 17 Feb 2022 20:09:54 +0000 Subject: [PATCH 25/28] Bump deps/libtommath from `bea9270` to `04e9d1e` Bumps [deps/libtommath](https://github.com/libtom/libtommath) from `bea9270` to `04e9d1e`. - [Release notes](https://github.com/libtom/libtommath/releases) - [Commits](https://github.com/libtom/libtommath/compare/bea9270646303baf683f4ba2ddf0d70721f0e55d...04e9d1e7a0493910b2eb5e757d623870692ada04) --- updated-dependencies: - dependency-name: deps/libtommath dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- deps/libtommath | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/libtommath b/deps/libtommath index bea92706..04e9d1e7 160000 --- a/deps/libtommath +++ b/deps/libtommath @@ -1 +1 @@ -Subproject commit bea9270646303baf683f4ba2ddf0d70721f0e55d +Subproject commit 04e9d1e7a0493910b2eb5e757d623870692ada04 From 9bf561b79d9fd2338c25e429a2d111aced48e81a Mon Sep 17 00:00:00 2001 From: fed <58637860+fedddddd@users.noreply.github.com> Date: Thu, 17 Feb 2022 21:24:46 +0100 Subject: [PATCH 26/28] whoops --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9a72feac..2274b55f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,7 +64,7 @@ jobs: deploy: name: Deploy artifacts needs: build - runs-on: ubuntu-2022 + runs-on: ubuntu-latest if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop') steps: - name: Setup main environment From d073f46f6a6dbf07e21e2ad127eaee89a271ee39 Mon Sep 17 00:00:00 2001 From: fed <58637860+fedddddd@users.noreply.github.com> Date: Thu, 17 Feb 2022 22:54:34 +0100 Subject: [PATCH 27/28] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index ddb1458a..43275b89 100644 --- a/README.md +++ b/README.md @@ -39,3 +39,10 @@ This software has been created purely for the purposes of academic research. It is not intended to be used to attack other systems. Project maintainers are not responsible or liable for misuse of the software. Use responsibly. + +## Credits + +This project is based on [iw6x](https://github.com/XLabsProject/iw6x-client) and [s1x](https://github.com/XLabsProject/s1x-client) +* [momo5502](https://github.com/momo5502) +* [JariKCoding](https://github.com/JariKCoding/CoDLuaDecompiler) +* [xensik](https://github.com/xensik/gsc-tool/) From fa6df5dcb5d44cb1c438dad094a9a48337577d5f Mon Sep 17 00:00:00 2001 From: fed <58637860+fedddddd@users.noreply.github.com> Date: Thu, 17 Feb 2022 22:54:52 +0100 Subject: [PATCH 28/28] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 43275b89..3ff4538a 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ liable for misuse of the software. Use responsibly. ## Credits -This project is based on [iw6x](https://github.com/XLabsProject/iw6x-client) and [s1x](https://github.com/XLabsProject/s1x-client) +This project is based on [IW6x](https://github.com/XLabsProject/iw6x-client) and [S1x](https://github.com/XLabsProject/s1x-client) * [momo5502](https://github.com/momo5502) * [JariKCoding](https://github.com/JariKCoding/CoDLuaDecompiler) * [xensik](https://github.com/xensik/gsc-tool/)