From f6b7bf28da66787b06f05ec646c37aef2b80086c Mon Sep 17 00:00:00 2001 From: m Date: Sun, 29 Aug 2021 13:48:38 -0500 Subject: [PATCH 1/3] branding --- src/component/branding.cpp | 40 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/component/branding.cpp diff --git a/src/component/branding.cpp b/src/component/branding.cpp new file mode 100644 index 00000000..ca73df1b --- /dev/null +++ b/src/component/branding.cpp @@ -0,0 +1,40 @@ +#include +#include "loader/component_loader.hpp" +#include "localized_strings.hpp" +#include "scheduler.hpp" +#include "command.hpp" +#include "game/game.hpp" + +#include +#include + +namespace branding +{ + class component final : public component_interface + { + public: + void post_unpack() override + { + localized_strings::override("MENU_SP_CAMPAIGN", "Campaign [h2-mod]"); + + scheduler::loop([]() + { + const auto x = 4; + const auto y = 4; + const auto scale = 1.0f; + float color[4] = {0.9f, 0.9f, 0.5f, 1.0f}; + const auto* text = "h2-mod"; + + auto* font = game::R_RegisterFont("fonts/defaultBold.otf", 22); + + if (!font) return; + + game::R_AddCmdDrawText(text, 0x7FFFFFFF, font, static_cast(x), + y + static_cast(font->pixelHeight) * scale, + scale, scale, 0.0f, color, 0); + }, scheduler::pipeline::renderer); + } + }; +} + +REGISTER_COMPONENT(branding::component) \ No newline at end of file From 794135ea2c7093ef02d90531ed288491c6b1bf7a Mon Sep 17 00:00:00 2001 From: m Date: Sun, 29 Aug 2021 13:49:19 -0500 Subject: [PATCH 2/3] add depndabot --- .github/dependabot.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..f1cef938 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: +- package-ecosystem: gitsubmodule + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 \ No newline at end of file From 1cd31494d5d85f6acbbe4e9e00628e2c24b6a8ac Mon Sep 17 00:00:00 2001 From: m Date: Sun, 29 Aug 2021 13:50:23 -0500 Subject: [PATCH 3/3] localized string overriding --- src/component/localized_strings.cpp | 54 +++++++++++++++++++++++++++++ src/component/localized_strings.hpp | 6 ++++ 2 files changed, 60 insertions(+) create mode 100644 src/component/localized_strings.cpp create mode 100644 src/component/localized_strings.hpp diff --git a/src/component/localized_strings.cpp b/src/component/localized_strings.cpp new file mode 100644 index 00000000..01e2253d --- /dev/null +++ b/src/component/localized_strings.cpp @@ -0,0 +1,54 @@ +#include +#include "loader/component_loader.hpp" +#include "localized_strings.hpp" +#include +#include +#include +#include "game/game.hpp" + +#include "game_console.hpp" + +namespace localized_strings +{ + namespace + { + utils::hook::detour seh_string_ed_get_string_hook; + + using localized_map = std::unordered_map; + utils::concurrency::container localized_overrides; + + const char* seh_string_ed_get_string(const char* reference) + { + return localized_overrides.access([&](const localized_map& map) + { + const auto entry = map.find(reference); + if (entry != map.end()) + { + return utils::string::va("%s", entry->second.data()); + } + + return seh_string_ed_get_string_hook.invoke(reference); + }); + } + } + + void override(const std::string& key, const std::string& value) + { + localized_overrides.access([&](localized_map& map) + { + map[key] = value; + }); + } + + class component final : public component_interface + { + public: + void post_unpack() override + { + // Change some localized strings + seh_string_ed_get_string_hook.create(game::base_address + 0x5E5FD0, &seh_string_ed_get_string); + } + }; +} + +REGISTER_COMPONENT(localized_strings::component) \ No newline at end of file diff --git a/src/component/localized_strings.hpp b/src/component/localized_strings.hpp new file mode 100644 index 00000000..01d15907 --- /dev/null +++ b/src/component/localized_strings.hpp @@ -0,0 +1,6 @@ +#pragma once + +namespace localized_strings +{ + void override(const std::string& key, const std::string& value); +} \ No newline at end of file