Add HUD scaling fix

This commit is contained in:
2026-03-30 12:39:42 +02:00
parent 8de641dcc8
commit dca835e2c0

View File

@@ -27,12 +27,14 @@ static GetGameInfosStruct GetGameInfos = nullptr;
// Plugin variables for checkboxes and sliders
static bool fov_fix_enabled = false;
static bool ultrawide_fix_enabled = false;
static bool HUD_fix_enabled = false;
static bool camera_fix_enabled = false;
static bool DOF_fix_enabled = false;
static bool vignetting_fix_enabled = false;
static bool fix_enabled = false;
static int worldFOVvalue = 0;
static float cameraDistancevalue = 1.f;
static int HUDvalue = 0;
static int triggerDelayMs = 2000; // Default delay between shortcuts
// Overlays popups
@@ -42,8 +44,8 @@ static std::string log_content;
// Plugin settings
const std::string SETTINGS_FILE = "./pluginsettings.ini";
const char* FIX_VERSION = "1.0.3";
const char* FIX_INFORMATIONS = "This fix allows to:\n - Control FOV in game.\n - Control camera distance.\n - Enable ultrawide.\n - Disable depth of field in cutscenes.\n - Disable vignetting.";
const char* FIX_VERSION = "1.0.4";
const char* FIX_INFORMATIONS = "This fix allows to:\n - Control FOV in game.\n - Control camera distance.\n - Enable ultrawide.\n - Control HUD scaling.\n - Disable depth of field in cutscenes.\n - Disable vignetting.";
const char* DONATION_URL = "https://buymeacoffee.com/k4sh44";
// Scaling factor based on screen resolution
@@ -58,10 +60,11 @@ static FixToggle individualFixes[] = {
"It forces the engine to redraw the aspect by simulating shortcuts.\n"
"Use the threshold slider below to fine tune the delay between simulated shortcuts.\n"
"Increase the delay on slower PCs, decrease it on faster ones."},
{ "HUD", &HUD_fix_enabled, GameFixes::HUD },
{ "Camera", &camera_fix_enabled, GameFixes::Camera } };
// Prepare array of sliders for ImGui
static SliderFix2 sliders[3];
static SliderFix2 sliders[4];
// Load and unload game core dll functions /!\ necessary
static void LoadFixDLL(reshade::api::effect_runtime* runtime) {
@@ -84,20 +87,23 @@ static void LoadFixDLL(reshade::api::effect_runtime* runtime) {
// Apply initial values loaded from settings
if (SetValues) {
SetValues(GameSetting::FOV, worldFOVvalue);
SetValues(GameSetting::HUD, HUDvalue);
SetValues(GameSetting::CameraDistance, cameraDistancevalue);
}
if (SetFixEnabled) SetFixEnabled(fix_enabled, true);
if (SetFixes) {
SetFixes(GameFixes::FOV, fov_fix_enabled);
SetFixes(GameFixes::HUD, HUD_fix_enabled);
SetFixes(GameFixes::Camera, camera_fix_enabled);
SetFixes(GameFixes::DOF, DOF_fix_enabled);
SetFixes(GameFixes::Vignetting, vignetting_fix_enabled);
}
sliders[0] = { "In game additional FOV", "##FOVValue", SliderType::Int, &worldFOVvalue, -20, 50, GameSetting::FOV, SetValues };
sliders[1] = { "Camera distance", "##CamValue", SliderType::Float, &cameraDistancevalue, 0, 5, GameSetting::CameraDistance, SetValues, "%.1f",
sliders[1] = { "HUD scaling", "##HUDValue", SliderType::Int, &HUDvalue, -20, 40, GameSetting::HUD, SetValues };
sliders[2] = { "Camera distance", "##CamValue", SliderType::Float, &cameraDistancevalue, 0, 5, GameSetting::CameraDistance, SetValues, "%.1f",
"Value is a multiplier.\nFinal value reported below is in meters."};
sliders[2] = { "Ultrawide enforce delay", "##AltEnterValue", SliderType::Int, &triggerDelayMs, 1000, 5000, GameSetting::Threshold, SetValues, "",
sliders[3] = { "Ultrawide enforce delay", "##AltEnterValue", SliderType::Int, &triggerDelayMs, 1000, 5000, GameSetting::Threshold, SetValues, "",
"This value is a threshold in ms between the simulated alt + enter." };
}
}
@@ -114,11 +120,13 @@ static void SaveSettings() {
pluginIniFile["2#Individual fix"].setComment("Controls each fix individually");
pluginIniFile["2#Individual fix"]["FOV"] = fov_fix_enabled;
pluginIniFile["2#Individual fix"]["UltraWide"] = ultrawide_fix_enabled;
pluginIniFile["2#Individual fix"]["HUD"] = HUD_fix_enabled;
pluginIniFile["2#Individual fix"]["Camera"] = camera_fix_enabled;
pluginIniFile["2#Individual fix"]["DOF"] = DOF_fix_enabled;
pluginIniFile["2#Individual fix"]["Vignetting"] = vignetting_fix_enabled;
pluginIniFile["3#Fixes tuning"].setComment("Individual fix fine tune");
pluginIniFile["3#Fixes tuning"]["World FOV"] = worldFOVvalue;
pluginIniFile["3#Fixes tuning"]["HUD scaling"] = HUDvalue;
pluginIniFile["3#Fixes tuning"]["Camera distance"] = cameraDistancevalue;
pluginIniFile.save(SETTINGS_FILE);
@@ -132,10 +140,12 @@ static void LoadSettings() {
triggerDelayMs = pluginIniFile["1#General fix"]["TriggerDelayMs"].as<int>();
fov_fix_enabled = pluginIniFile["2#Individual fix"]["FOV"].as<bool>();
ultrawide_fix_enabled = pluginIniFile["2#Individual fix"]["UltraWide"].as<bool>();
HUD_fix_enabled = pluginIniFile["2#Individual fix"]["HUD"].as<bool>();
camera_fix_enabled = pluginIniFile["2#Individual fix"]["Camera"].as<bool>();
DOF_fix_enabled = pluginIniFile["2#Individual fix"]["DOF"].as<bool>();
vignetting_fix_enabled = pluginIniFile["2#Individual fix"]["Vignetting"].as<bool>();
worldFOVvalue = pluginIniFile["3#Fixes tuning"]["World FOV"].as<int>();
HUDvalue = pluginIniFile["3#Fixes tuning"]["HUD scaling"].as<int>();
cameraDistancevalue = pluginIniFile["3#Fixes tuning"]["Camera distance"].as<float>();
}
catch (const std::exception& e) {}
@@ -209,12 +219,9 @@ static void on_overlay_draw(reshade::api::effect_runtime* runtime) {
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0);
DrawFixCheckbox(individualFixes[0]);
DrawFixCheckbox(individualFixes[1]);
DrawFixCheckbox(individualFixes[2]);
for (int i = 0; i < 3; ++i) DrawFixCheckbox(individualFixes[i]);
ImGui::TableSetColumnIndex(1);
DrawFixCheckbox(individualFixes[3]);
DrawFixCheckbox(individualFixes[4]);
for (int i = 3; i < IM_ARRAYSIZE(individualFixes); ++i) DrawFixCheckbox(individualFixes[i]);
ImGui::EndTable();
}
@@ -226,10 +233,9 @@ static void on_overlay_draw(reshade::api::effect_runtime* runtime) {
if (ImGui::BeginTable("FixesSliders", 2, ImGuiTableFlags_SizingStretchSame)) {
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0);
DrawSlider2(sliders[0], 200);
for (int i = 0; i < 2; ++i) DrawSlider2(sliders[i], 200);
ImGui::TableSetColumnIndex(1);
DrawSlider2(sliders[1], 200);
DrawSlider2(sliders[2], 200);
for (int i = 2; i < 4; ++i) DrawSlider2(sliders[i], 200);
ImGui::EndTable();
}
ImGui::PopStyleVar();