From 4aca1bae8725b8bb14b3725d187a71f0fee6fe0e Mon Sep 17 00:00:00 2001 From: EricPlayZ Date: Sat, 3 Feb 2024 20:40:17 +0200 Subject: [PATCH] Added Menu Scale slider --- .../source/ImGui/impl/d3d11_impl.cpp | 10 +++---- .../source/ImGui/impl/d3d12_impl.cpp | 12 ++++---- .../source/ImGuiEx/ImGuiEx.cpp | 28 +++++++++++++++++++ .../source/ImGuiEx/ImGuiEx.h | 3 +- .../source/config/config.cpp | 1 + DL2GameOverhaulScript/source/menu/menu.cpp | 14 ++++++++-- DL2GameOverhaulScript/source/menu/menu.h | 1 + Extra Files/Default Config/EGameTools.ini | 1 + 8 files changed, 55 insertions(+), 15 deletions(-) diff --git a/DL2GameOverhaulScript/source/ImGui/impl/d3d11_impl.cpp b/DL2GameOverhaulScript/source/ImGui/impl/d3d11_impl.cpp index 20f5af7..912a81a 100644 --- a/DL2GameOverhaulScript/source/ImGui/impl/d3d11_impl.cpp +++ b/DL2GameOverhaulScript/source/ImGui/impl/d3d11_impl.cpp @@ -1,10 +1,10 @@ -#include -#include -#include -#include +#include #include -#include "..\..\menu\menu.h" +#include +#include +#include #include "..\..\kiero.h" +#include "..\..\menu\menu.h" #include "d3d11_impl.h" #include "win32_impl.h" diff --git a/DL2GameOverhaulScript/source/ImGui/impl/d3d12_impl.cpp b/DL2GameOverhaulScript/source/ImGui/impl/d3d12_impl.cpp index 915c91a..d2cbe7a 100644 --- a/DL2GameOverhaulScript/source/ImGui/impl/d3d12_impl.cpp +++ b/DL2GameOverhaulScript/source/ImGui/impl/d3d12_impl.cpp @@ -1,11 +1,11 @@ -#include -#include -#include -#include -#include +#include #include -#include "..\..\menu\menu.h" +#include +#include +#include +#include #include "..\..\kiero.h" +#include "..\..\menu\menu.h" #include "d3d12_impl.h" #include "win32_impl.h" diff --git a/DL2GameOverhaulScript/source/ImGuiEx/ImGuiEx.cpp b/DL2GameOverhaulScript/source/ImGuiEx/ImGuiEx.cpp index f03bf79..2fdfbb8 100644 --- a/DL2GameOverhaulScript/source/ImGuiEx/ImGuiEx.cpp +++ b/DL2GameOverhaulScript/source/ImGuiEx/ImGuiEx.cpp @@ -3,6 +3,34 @@ #include "..\core.h" namespace ImGui { + static ImGuiStyle defStyle{}; + void StyleScaleAllSizes(ImGuiStyle* style, float scale_factor) { + style->WindowPadding = ImFloor(defStyle.WindowPadding * scale_factor); + style->WindowRounding = ImFloor(defStyle.WindowRounding * scale_factor); + style->WindowMinSize = ImFloor(defStyle.WindowMinSize * scale_factor); + style->ChildRounding = ImFloor(defStyle.ChildRounding * scale_factor); + style->PopupRounding = ImFloor(defStyle.PopupRounding * scale_factor); + style->FramePadding = ImFloor(defStyle.FramePadding * scale_factor); + style->FrameRounding = ImFloor(defStyle.FrameRounding * scale_factor); + style->ItemSpacing = ImFloor(defStyle.ItemSpacing * scale_factor); + style->ItemInnerSpacing = ImFloor(defStyle.ItemInnerSpacing * scale_factor); + style->CellPadding = ImFloor(defStyle.CellPadding * scale_factor); + style->TouchExtraPadding = ImFloor(defStyle.TouchExtraPadding * scale_factor); + style->IndentSpacing = ImFloor(defStyle.IndentSpacing * scale_factor); + style->ColumnsMinSpacing = ImFloor(defStyle.ColumnsMinSpacing * scale_factor); + style->ScrollbarSize = ImFloor(defStyle.ScrollbarSize * scale_factor); + style->ScrollbarRounding = ImFloor(defStyle.ScrollbarRounding * scale_factor); + style->GrabMinSize = ImFloor(defStyle.GrabMinSize * scale_factor); + style->GrabRounding = ImFloor(defStyle.GrabRounding * scale_factor); + style->LogSliderDeadzone = ImFloor(defStyle.LogSliderDeadzone * scale_factor); + style->TabRounding = ImFloor(defStyle.TabRounding * scale_factor); + style->TabMinWidthForCloseButton = (defStyle.TabMinWidthForCloseButton != FLT_MAX) ? ImFloor(defStyle.TabMinWidthForCloseButton * scale_factor) : FLT_MAX; + style->SeparatorTextPadding = ImFloor(defStyle.SeparatorTextPadding * scale_factor); + style->DisplayWindowPadding = ImFloor(defStyle.DisplayWindowPadding * scale_factor); + style->DisplaySafeAreaPadding = ImFloor(defStyle.DisplaySafeAreaPadding * scale_factor); + style->MouseCursorScale = ImFloor(defStyle.MouseCursorScale * scale_factor); + } + bool Checkbox(const char* label, Option* v) { ImGuiWindow* window = GetCurrentWindow(); if (window->SkipItems) diff --git a/DL2GameOverhaulScript/source/ImGuiEx/ImGuiEx.h b/DL2GameOverhaulScript/source/ImGuiEx/ImGuiEx.h index 75a96d6..d095e81 100644 --- a/DL2GameOverhaulScript/source/ImGuiEx/ImGuiEx.h +++ b/DL2GameOverhaulScript/source/ImGuiEx/ImGuiEx.h @@ -2,5 +2,6 @@ #include "..\core.h" namespace ImGui { - bool Checkbox(const char* label, Option* v); + extern void StyleScaleAllSizes(ImGuiStyle* style, float scale_factor); + extern bool Checkbox(const char* label, Option* v); } \ No newline at end of file diff --git a/DL2GameOverhaulScript/source/config/config.cpp b/DL2GameOverhaulScript/source/config/config.cpp index def927d..6217c7c 100644 --- a/DL2GameOverhaulScript/source/config/config.cpp +++ b/DL2GameOverhaulScript/source/config/config.cpp @@ -4021,6 +4021,7 @@ namespace Config { }; static const auto configVariablesDefault = std::to_array({ { "Menu", "Transparency", 99.0f, &Menu::transparency, Float }, + { "Menu", "Scale", 1.0f, &Menu::scale, Float }, { "Menu:Keybinds", "MenuToggleKey", std::string("VK_F5"), &Menu::menuToggle, String}, { "Menu:Keybinds", "GodModeToggleKey", std::string("VK_F6"), &Menu::Player::godMode, String}, { "Menu:Keybinds", "FreezePlayerToggleKey", std::string("VK_F7"), &Menu::Player::freezePlayer, String}, diff --git a/DL2GameOverhaulScript/source/menu/menu.cpp b/DL2GameOverhaulScript/source/menu/menu.cpp index 31fb19d..209ad2c 100644 --- a/DL2GameOverhaulScript/source/menu/menu.cpp +++ b/DL2GameOverhaulScript/source/menu/menu.cpp @@ -1,19 +1,23 @@ +#define IMGUI_DEFINE_MATH_OPERATORS #include -#include +#include #include "menu.h" namespace Menu { - static const ImGuiWindowFlags windowFlags = ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_AlwaysAutoResize; + static const ImGuiWindowFlags windowFlags = ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_HorizontalScrollbar; static const ImVec2 minWndSize = ImVec2(0.0f, 0.0f); - static const ImVec2 maxWndSize = ImVec2(900.0f, 675.0f); + static const ImVec2 defMaxWndSize = ImVec2(900.0f, 675.0f); + static ImVec2 maxWndSize = defMaxWndSize; KeyBindOption menuToggle = KeyBindOption(VK_F5); float transparency = 99.0f; + float scale = 1.0f; void Render() { ImGuiStyle* style = &ImGui::GetStyle(); style->Colors[ImGuiCol_WindowBg] = ImVec4(style->Colors[ImGuiCol_WindowBg].x, style->Colors[ImGuiCol_WindowBg].y, style->Colors[ImGuiCol_WindowBg].z, static_cast(transparency) / 100.0f); + maxWndSize = defMaxWndSize * scale; ImGui::SetNextWindowSizeConstraints(minWndSize, maxWndSize); ImGui::Begin("EGameTools", &menuToggle.value, windowFlags); { if (ImGui::BeginTabBar("##MainTabBar")) { @@ -30,6 +34,10 @@ namespace Menu { ImGui::Hotkey("Menu Toggle Key", menuToggle); ImGui::SliderFloat("Menu Transparency", &transparency, 0.0f, 100.0f, "%.1f%%", ImGuiSliderFlags_AlwaysClamp); + if (ImGui::SliderFloat("Menu Scale", &scale, 1.0f, 2.5f, "%.1f%%", ImGuiSliderFlags_AlwaysClamp)) { + ImGui::StyleScaleAllSizes(style, scale); + ImGui::GetIO().FontGlobalScale = scale; + } ImGui::End(); } } diff --git a/DL2GameOverhaulScript/source/menu/menu.h b/DL2GameOverhaulScript/source/menu/menu.h index 3ed7a52..781cf3c 100644 --- a/DL2GameOverhaulScript/source/menu/menu.h +++ b/DL2GameOverhaulScript/source/menu/menu.h @@ -18,6 +18,7 @@ namespace Menu { extern KeyBindOption menuToggle; extern float transparency; + extern float scale; extern void Render(); } \ No newline at end of file diff --git a/Extra Files/Default Config/EGameTools.ini b/Extra Files/Default Config/EGameTools.ini index 5026205..5e9a12e 100644 --- a/Extra Files/Default Config/EGameTools.ini +++ b/Extra Files/Default Config/EGameTools.ini @@ -11,6 +11,7 @@ HeightAbovePlayer=1.35 HorizontalDistanceFromPlayer=0 UseTPPModel=1 [Menu] +Scale=1 Transparency=99 [Menu:Keybinds] DisableHUDToggleKey=VK_F8