diff --git a/LEGO1/lego/legoomni/include/infocenterstate.h b/LEGO1/lego/legoomni/include/infocenterstate.h index c926b97c..0d99e682 100644 --- a/LEGO1/lego/legoomni/include/infocenterstate.h +++ b/LEGO1/lego/legoomni/include/infocenterstate.h @@ -3,6 +3,7 @@ #include "decomp.h" #include "legostate.h" +#include "mxstillpresenter.h"; // VTABLE: LEGO1 0x100d93a8 // SIZE 0x94 @@ -24,7 +25,7 @@ class InfocenterState : public LegoState { return !strcmp(p_name, InfocenterState::ClassName()) || LegoState::IsA(p_name); } - inline MxU32 GetInfocenterBufferElement(MxS32 p_index) { return m_buffer[p_index]; } + inline MxStillPresenter* GetInfocenterBufferElement(MxS32 p_index) { return m_buffer[p_index]; } inline MxU32 GetUnknown0x74() { return m_unk0x74; } inline void SetUnknown0x74(MxU32 p_unk0x74) { m_unk0x74 = p_unk0x74; } @@ -63,7 +64,7 @@ class InfocenterState : public LegoState { undefined m_pad[0x6c]; MxU32 m_unk0x74; // 0x74 - MxU32 m_buffer[7]; // 0x78 + MxStillPresenter* m_buffer[7]; // 0x78 }; #endif // INFOCENTERSTATE_H diff --git a/LEGO1/lego/legoomni/src/common/legogamestate.cpp b/LEGO1/lego/legoomni/src/common/legogamestate.cpp index 22ad48d0..0bb0b066 100644 --- a/LEGO1/lego/legoomni/src/common/legogamestate.cpp +++ b/LEGO1/lego/legoomni/src/common/legogamestate.cpp @@ -112,7 +112,7 @@ MxResult LegoGameState::Save(MxULong p_slot) MxResult result; InfocenterState* infocenterState = (InfocenterState*) GameState()->GetState("InfocenterState"); - if (!infocenterState || infocenterState->GetInfocenterBufferElement(0) == 0) + if (!infocenterState || infocenterState->GetInfocenterBufferElement(0) == NULL) result = SUCCESS; else { result = FAILURE; diff --git a/LEGO1/lego/legoomni/src/infocenter/infocenter.cpp b/LEGO1/lego/legoomni/src/infocenter/infocenter.cpp index 16d1e507..4390a28e 100644 --- a/LEGO1/lego/legoomni/src/infocenter/infocenter.cpp +++ b/LEGO1/lego/legoomni/src/infocenter/infocenter.cpp @@ -12,6 +12,7 @@ #include "mxnotificationmanager.h" #include "mxstillpresenter.h" #include "mxtransitionmanager.h" +#include "mxticklemanager.h" DECOMP_SIZE_ASSERT(Infocenter, 0x1d8) DECOMP_SIZE_ASSERT(InfocenterUnkDataEntry, 0x18) @@ -46,10 +47,29 @@ Infocenter::Infocenter() m_unk0x1d6 = 0; } -// STUB: LEGO1 0x1006ec90 +// FUNCTION: LEGO1 0x1006ec90 Infocenter::~Infocenter() { - // TODO + BackgroundAudioManager()->Stop(); + + MxS16 i = 0; + do { + if (m_infocenterState->GetInfocenterBufferElement(i) != NULL) { + m_infocenterState->GetInfocenterBufferElement(i)->Enable(FALSE); + } + i++; + } while (i < 7); + + ControlManager()->Unregister(this); + + InputManager()->UnRegister(this); + if (InputManager()->GetWorld() == this) { + InputManager()->ClearWorld(); + } + + NotificationManager()->Unregister(this); + + TickleManager()->UnregisterClient(this); } // STUB: LEGO1 0x1006ed90