Fix achievements button guide reappearing for Yes/No prompts (#193)

This commit is contained in:
Hyper 2025-01-25 21:16:43 +00:00 committed by GitHub
parent 5321ee0fba
commit c1988e9323
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 7 deletions

View file

@ -48,8 +48,7 @@ namespace SWA
class CHudPause : public CGameObject class CHudPause : public CGameObject
{ {
public: public:
xpointer<void> m_pVftable; SWA_INSERT_PADDING(0x30);
SWA_INSERT_PADDING(0x2C);
RCPtr<CProject> m_rcPause; RCPtr<CProject> m_rcPause;
RCPtr<CScene> m_rcBg; RCPtr<CScene> m_rcBg;
RCPtr<CScene> m_rcBg1; RCPtr<CScene> m_rcBg1;
@ -58,12 +57,32 @@ namespace SWA
RCPtr<CScene> m_rcBg1Select_2; RCPtr<CScene> m_rcBg1Select_2;
RCPtr<CScene> m_rcStatusTitle; RCPtr<CScene> m_rcStatusTitle;
RCPtr<CScene> m_rcFooterA; RCPtr<CScene> m_rcFooterA;
SWA_INSERT_PADDING(0x5C); SWA_INSERT_PADDING(0x59);
bool m_IsVisible;
SWA_INSERT_PADDING(0x02);
be<EActionType> m_Action; be<EActionType> m_Action;
be<EMenuType> m_Menu; be<EMenuType> m_Menu;
be<EStatusType> m_Status; be<EStatusType> m_Status;
be<ETransitionType> m_Transition; be<ETransitionType> m_Transition;
SWA_INSERT_PADDING(0x20); SWA_INSERT_PADDING(0x04);
be<uint32_t> m_Submenu;
SWA_INSERT_PADDING(0x18);
bool m_IsShown; bool m_IsShown;
}; };
SWA_ASSERT_OFFSETOF(CHudPause, m_rcPause, 0xEC);
SWA_ASSERT_OFFSETOF(CHudPause, m_rcBg, 0xF4);
SWA_ASSERT_OFFSETOF(CHudPause, m_rcBg1, 0xFC);
SWA_ASSERT_OFFSETOF(CHudPause, m_rcBg1_2, 0x104);
SWA_ASSERT_OFFSETOF(CHudPause, m_rcBg1Select, 0x10C);
SWA_ASSERT_OFFSETOF(CHudPause, m_rcBg1Select_2, 0x114);
SWA_ASSERT_OFFSETOF(CHudPause, m_rcStatusTitle, 0x11C);
SWA_ASSERT_OFFSETOF(CHudPause, m_rcFooterA, 0x124);
SWA_ASSERT_OFFSETOF(CHudPause, m_IsVisible, 0x185);
SWA_ASSERT_OFFSETOF(CHudPause, m_Action, 0x188);
SWA_ASSERT_OFFSETOF(CHudPause, m_Menu, 0x18C);
SWA_ASSERT_OFFSETOF(CHudPause, m_Status, 0x190);
SWA_ASSERT_OFFSETOF(CHudPause, m_Transition, 0x194);
SWA_ASSERT_OFFSETOF(CHudPause, m_Submenu, 0x19C);
SWA_ASSERT_OFFSETOF(CHudPause, m_IsShown, 0x1B8);
} }

View file

@ -135,7 +135,6 @@ PPC_FUNC(sub_824B0930)
} }
} }
// TODO: disable Start button closing menu.
if (AchievementMenu::s_isVisible) if (AchievementMenu::s_isVisible)
{ {
// HACK: wait for transition to finish before restoring control. // HACK: wait for transition to finish before restoring control.
@ -154,7 +153,6 @@ PPC_FUNC(sub_824B0930)
if (OptionsMenu::CanClose() && pInputState->GetPadState().IsTapped(SWA::eKeyState_B)) if (OptionsMenu::CanClose() && pInputState->GetPadState().IsTapped(SWA::eKeyState_B))
{ {
OptionsMenu::Close(); OptionsMenu::Close();
GuestToHostFunction<int>(sub_824AFD28, pHudPause, 0, 0, 0, 1); GuestToHostFunction<int>(sub_824AFD28, pHudPause, 0, 0, 0, 1);
__imp__sub_824B0930(ctx, base); __imp__sub_824B0930(ctx, base);
} }
@ -165,7 +163,7 @@ PPC_FUNC(sub_824B0930)
const auto ms_IsRenderHud = (bool*)g_memory.Translate(0x8328BB26); const auto ms_IsRenderHud = (bool*)g_memory.Translate(0x8328BB26);
if (*ms_IsRenderHud && pHudPause->m_IsShown && pHudPause->m_Transition == SWA::eTransitionType_Undefined) if (*ms_IsRenderHud && pHudPause->m_IsShown && !pHudPause->m_Submenu && pHudPause->m_Transition == SWA::eTransitionType_Undefined)
{ {
ButtonGuide::Open(Button(Localise("Achievements_Name"), EButtonIcon::Back, EButtonAlignment::Left, EFontQuality::Low)); ButtonGuide::Open(Button(Localise("Achievements_Name"), EButtonIcon::Back, EButtonAlignment::Left, EFontQuality::Low));
g_isClosed = false; g_isClosed = false;