implement/match InfoCenter::~InfoCenter() (#457)

This commit is contained in:
Ramen2X 2024-01-18 21:00:55 -05:00 committed by GitHub
parent 61dd687f53
commit 578e48ce52
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 28 additions and 6 deletions

View file

@ -3,6 +3,7 @@
#include "decomp.h" #include "decomp.h"
#include "legostate.h" #include "legostate.h"
#include "mxstillpresenter.h";
// VTABLE: LEGO1 0x100d93a8 // VTABLE: LEGO1 0x100d93a8
// SIZE 0x94 // SIZE 0x94
@ -27,7 +28,8 @@ public:
// FUNCTION: LEGO1 0x10071830 // FUNCTION: LEGO1 0x10071830
virtual MxBool VTable0x14() override { return FALSE; } // vtable+0x14 virtual MxBool VTable0x14() override { return FALSE; } // vtable+0x14
inline MxU32 GetInfocenterBufferElement(MxS32 p_index) { return m_buffer[p_index]; } inline MxS16 GetInfocenterBufferSize() { return sizeof(m_buffer) / sizeof(m_buffer[0]); }
inline MxStillPresenter* GetInfocenterBufferElement(MxS32 p_index) { return m_buffer[p_index]; }
inline MxU32 GetUnknown0x74() { return m_unk0x74; } inline MxU32 GetUnknown0x74() { return m_unk0x74; }
inline void SetUnknown0x74(MxU32 p_unk0x74) { m_unk0x74 = p_unk0x74; } inline void SetUnknown0x74(MxU32 p_unk0x74) { m_unk0x74 = p_unk0x74; }
@ -66,7 +68,7 @@ private:
undefined m_pad[0x6c]; undefined m_pad[0x6c];
MxU32 m_unk0x74; // 0x74 MxU32 m_unk0x74; // 0x74
MxU32 m_buffer[7]; // 0x78 MxStillPresenter* m_buffer[7]; // 0x78
}; };
#endif // INFOCENTERSTATE_H #endif // INFOCENTERSTATE_H

View file

@ -112,7 +112,7 @@ MxResult LegoGameState::Save(MxULong p_slot)
MxResult result; MxResult result;
InfocenterState* infocenterState = (InfocenterState*) GameState()->GetState("InfocenterState"); InfocenterState* infocenterState = (InfocenterState*) GameState()->GetState("InfocenterState");
if (!infocenterState || infocenterState->GetInfocenterBufferElement(0) == 0) if (!infocenterState || infocenterState->GetInfocenterBufferElement(0) == NULL)
result = SUCCESS; result = SUCCESS;
else { else {
result = FAILURE; result = FAILURE;

View file

@ -11,6 +11,7 @@
#include "mxbackgroundaudiomanager.h" #include "mxbackgroundaudiomanager.h"
#include "mxnotificationmanager.h" #include "mxnotificationmanager.h"
#include "mxstillpresenter.h" #include "mxstillpresenter.h"
#include "mxticklemanager.h"
#include "mxtransitionmanager.h" #include "mxtransitionmanager.h"
DECOMP_SIZE_ASSERT(Infocenter, 0x1d8) DECOMP_SIZE_ASSERT(Infocenter, 0x1d8)
@ -46,10 +47,29 @@ Infocenter::Infocenter()
m_unk0x1d6 = 0; m_unk0x1d6 = 0;
} }
// STUB: LEGO1 0x1006ec90 // FUNCTION: LEGO1 0x1006ec90
Infocenter::~Infocenter() Infocenter::~Infocenter()
{ {
// TODO BackgroundAudioManager()->Stop();
MxS16 i = 0;
do {
if (m_infocenterState->GetInfocenterBufferElement(i) != NULL) {
m_infocenterState->GetInfocenterBufferElement(i)->Enable(FALSE);
}
i++;
} while (i < m_infocenterState->GetInfocenterBufferSize());
ControlManager()->Unregister(this);
InputManager()->UnRegister(this);
if (InputManager()->GetWorld() == this) {
InputManager()->ClearWorld();
}
NotificationManager()->Unregister(this);
TickleManager()->UnregisterClient(this);
} }
// STUB: LEGO1 0x1006ed90 // STUB: LEGO1 0x1006ed90