From 41cac0e6eb739a6a32fa00577310fb7dc191653a Mon Sep 17 00:00:00 2001 From: Emmanuel AYME Date: Wed, 11 Feb 2026 19:18:25 +0100 Subject: [PATCH] Add HUD fixes --- SpongeBogTOTT/dllmain.cpp | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/SpongeBogTOTT/dllmain.cpp b/SpongeBogTOTT/dllmain.cpp index 0a22c2f..c9e498b 100644 --- a/SpongeBogTOTT/dllmain.cpp +++ b/SpongeBogTOTT/dllmain.cpp @@ -30,6 +30,7 @@ static bool g_fix_enabled = false; static bool g_fov_fix_enabled = false; static bool g_ultrawide_fix_enabled = false; static bool g_HUD_fix_enabled = false; +static bool g_HUDHide_fix_enabled = false; static bool g_Camera_fix_enabled = false; static bool g_DOF_fix_enabled = false; static bool g_CA_fix_enabled = false; @@ -71,7 +72,7 @@ static SafetyHookMid StealthHook{}; static void FOVFixEnabled(); static void UltraWideFixEnabled(); static void HUDFixEnabled(); -static void LogHUD(); +static void LogHUD(GameFixes fix); static void DOFFixEnabled(); static void CAFixEnabled(); static void VignettingFixEnabled(); @@ -142,7 +143,8 @@ extern "C" __declspec(dllexport) void SetFixEnabled(bool enabled, bool init) { if (!init && ConstrainAspectRatioaddress) UltraWideFixEnabled(); if (!init) { HUDFixEnabled(); - LogHUD(); + LogHUD(GameFixes::HUD); + LogHUD(GameFixes::HUDHide); } if (!init && DOFaddress) DOFFixEnabled(); if (!init && CAaddress) CAFixEnabled(); @@ -165,7 +167,8 @@ extern "C" __declspec(dllexport) void SetFixesEnabled(GameFixes fix, bool enable if (fix == GameFixes::ChromaticAberrations) { g_CA_fix_enabled = enabled; CAFixEnabled(); } if (fix == GameFixes::Vignetting) { g_Vignetting_fix_enabled = enabled; VignettingFixEnabled(); } if (fix == GameFixes::Fog) { g_Fog_fix_enabled = enabled; FogFixEnabled(); } - if (fix == GameFixes::HUD) { g_HUD_fix_enabled = enabled; HUDFixEnabled(); LogHUD(); } + if (fix == GameFixes::HUD) { g_HUD_fix_enabled = enabled; HUDFixEnabled(); LogHUD(GameFixes::HUD); } + if (fix == GameFixes::HUDHide) { g_HUDHide_fix_enabled = enabled; HUDFixEnabled(); LogHUD(GameFixes::HUDHide); } if (fix == GameFixes::TimeDilation) { g_TimeDilation_fix_enabled = enabled; EnableCheats(Cheat::TimeDilation); } if (fix == GameFixes::GodMode) { g_GodMode_fix_enabled = enabled; EnableCheats(Cheat::GodMode); } if (fix == GameFixes::Stealth) { g_Stealth_fix_enabled = enabled; EnableCheats(Cheat::Stealth); } @@ -204,11 +207,12 @@ static void ProcessEvent() { std::string funcName = func->GetName(); std::string objectName = object->GetName(); + if (object->Class->GetName().contains("UPL_LocationAlongArm")) { + logger->debug("{} {}", object->Class->GetName(), funcName); + } if (!objectName.contains("WBP_InGameHUDLayout_C")) return; UWBP_InGameHUDLayout_C* hudWidget = static_cast(object); if (!hudWidget) return; - ULocalPlayer* lp = nullptr; - UGameViewportClient* viewport = lp->ViewportClient; if (funcName == "Construct") { HUDLayout = hudWidget; g_GameReady = true; @@ -233,10 +237,18 @@ FMargin initialHints = {}; static bool g_offsetsInitialized = false; static void HUDFixEnabled() { if (!HUDLayout) return; + // Hide or show HUD + HUDLayout->Currency->SetVisibility(g_HUDHide_fix_enabled ? ESlateVisibility::Collapsed : ESlateVisibility::Visible); + HUDLayout->PlayerHealth->SetVisibility(g_HUDHide_fix_enabled ? ESlateVisibility::Collapsed : ESlateVisibility::Visible); + HUDLayout->PlayerInfo->SetVisibility(g_HUDHide_fix_enabled ? ESlateVisibility::Collapsed : ESlateVisibility::Visible); + HUDLayout->Objectives->SetVisibility(g_HUDHide_fix_enabled ? ESlateVisibility::Collapsed : ESlateVisibility::Visible); + HUDLayout->GameActionBar->SetVisibility(g_HUDHide_fix_enabled ? ESlateVisibility::Collapsed : ESlateVisibility::Visible); + HUDLayout->Hints->SetVisibility(g_HUDHide_fix_enabled ? ESlateVisibility::Collapsed : ESlateVisibility::Visible); + HUDLayout->BossHealthBar->SetVisibility(g_HUDHide_fix_enabled ? ESlateVisibility::Collapsed : ESlateVisibility::Visible); + if (g_HUDHide_fix_enabled) return; auto ApplyOrGetOffset = [](UUIExtensionPointWidget* widget, float left = 0, float right = 0) -> FMargin { if (!widget || !widget->Slot) return FMargin(); - // Browse up to CanvasPanelSlot UWidget* current = widget; while (current) { @@ -271,7 +283,7 @@ static void HUDFixEnabled() { ApplyOrGetOffset(HUDLayout->PlayerInfo, g_HUDOffsets); ApplyOrGetOffset(HUDLayout->Objectives, g_HUDOffsets); ApplyOrGetOffset(HUDLayout->GameActionBar, g_HUDOffsets); - ApplyOrGetOffset(HUDLayout->Hints, g_HUDOffsets); + ApplyOrGetOffset(HUDLayout->Hints, initialGameActionBar.Left - g_HUDOffsets); } else { // Restore HUD position ApplyOrGetOffset(HUDLayout->Currency, initialCurrency.Left); @@ -284,9 +296,9 @@ static void HUDFixEnabled() { } } -static void LogHUD() { // Log toggle state - if (g_HUD_fix_enabled) logger->info("HUD fix enabled"); - else logger->info("HUD fix disabled"); +static void LogHUD(GameFixes fix) { // Log toggle state + if (fix == GameFixes::HUD) logger->info("HUD fix {}", g_HUD_fix_enabled ? "enabled" : "disabled"); + if (fix == GameFixes::HUDHide) logger->info("HUD hide fix {}", g_HUDHide_fix_enabled ? "enabled" : "disabled"); } static void FOVFixEnabled() {