Add HUD fixes
This commit is contained in:
@@ -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<UWBP_InGameHUDLayout_C*>(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() {
|
||||
|
||||
Reference in New Issue
Block a user