Implement/match Isle::UpdateGlobe (#947)

* Implement/match Isle::UpdateGlobe

* Change function access
This commit is contained in:
Christian Semmler 2024-05-24 13:16:04 -04:00 committed by GitHub
parent db90807d53
commit 1633118f68
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 23 additions and 14 deletions

View file

@ -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

View file

@ -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