From 1633118f68f6bd321d10acbe9d267007a95dde69 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Fri, 24 May 2024 13:16:04 -0400 Subject: [PATCH] Implement/match Isle::UpdateGlobe (#947) * Implement/match Isle::UpdateGlobe * Change function access --- LEGO1/lego/legoomni/include/isle.h | 17 +++++++++-------- LEGO1/lego/legoomni/src/worlds/isle.cpp | 20 ++++++++++++++------ 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/LEGO1/lego/legoomni/include/isle.h b/LEGO1/lego/legoomni/include/isle.h index ae7e1af7..8d98d423 100644 --- a/LEGO1/lego/legoomni/include/isle.h +++ b/LEGO1/lego/legoomni/include/isle.h @@ -61,15 +61,22 @@ class Isle : public LegoWorld { void Enable(MxBool p_enable) override; // vtable+68 virtual void VTable0x6c(LegoPathActor* p_actor); // vtable+6c + inline void SetDestLocation(LegoGameState::Area p_destLocation) { m_destLocation = p_destLocation; } + + void FUN_10033350(); + + // SYNTHETIC: LEGO1 0x10030a30 + // Isle::`scalar deleting destructor' + +protected: MxLong HandleEndAction(MxEndActionNotificationParam& p_param); MxLong HandleClick(LegoControlManagerEvent& p_param); MxLong HandleType19Notification(MxParam& p_param); MxLong HandleTransitionEnd(); void HandleElevatorEndAction(); - void FUN_10031590(); + void UpdateGlobe(); void FUN_10032620(); void FUN_100330e0(); - void FUN_10033350(); void FUN_10032d30( IsleScript::Script p_script, JukeboxScript::Script p_music, @@ -77,12 +84,6 @@ class Isle : public LegoWorld { MxBool p_und ); - inline void SetDestLocation(LegoGameState::Area p_destLocation) { m_destLocation = p_destLocation; } - - // SYNTHETIC: LEGO1 0x10030a30 - // Isle::`scalar deleting destructor' - -protected: Act1State* m_act1state; // 0xf8 Pizza* m_pizza; // 0xfc Pizzeria* m_pizzeria; // 0x100 diff --git a/LEGO1/lego/legoomni/src/worlds/isle.cpp b/LEGO1/lego/legoomni/src/worlds/isle.cpp index a1bbe9aa..21aeb3dd 100644 --- a/LEGO1/lego/legoomni/src/worlds/isle.cpp +++ b/LEGO1/lego/legoomni/src/worlds/isle.cpp @@ -399,15 +399,15 @@ MxLong Isle::HandleClick(LegoControlManagerEvent& p_param) Start(&action); break; case IsleScript::c_Observe_RCab_Ctl: - FUN_10031590(); + UpdateGlobe(); break; case IsleScript::c_Observe_GlobeLArrow_Ctl: UpdateLightPosition(-1); - FUN_10031590(); + UpdateGlobe(); break; case IsleScript::c_Observe_GlobeRArrow_Ctl: UpdateLightPosition(1); - FUN_10031590(); + UpdateGlobe(); break; case IsleScript::c_Observe_Draw1_Ctl: case IsleScript::c_Observe_Draw2_Ctl: @@ -443,10 +443,18 @@ MxLong Isle::HandleClick(LegoControlManagerEvent& p_param) return 0; } -// STUB: LEGO1 0x10031590 -void Isle::FUN_10031590() +// FUNCTION: LEGO1 0x10031590 +void Isle::UpdateGlobe() { - // TODO + MxS32 lightPosition = atoi(VariableTable()->GetVariable("lightposition")); + + for (MxS32 i = 0; i < 6; i++) { + MxStillPresenter* presenter = (MxStillPresenter*) Find(*g_isleScript, IsleScript::c_Observe_Globe1_Bitmap + i); + + if (presenter != NULL) { + presenter->Enable(i == lightPosition); + } + } } // STUB: LEGO1 0x100315f0