Implement MxTransitionManager::EndTransition and GetCurrentWorld

This commit is contained in:
MattKC 2023-10-03 21:34:27 -07:00
parent 129e8d6373
commit f2df943494
4 changed files with 33 additions and 7 deletions

View File

@ -312,3 +312,9 @@ MxBool LegoOmni::vtable40()
// FIXME: Stub
return 0;
}
// OFFSET: LEGO1 0x100157a0
LegoWorld *GetCurrentWorld()
{
return LegoOmni::GetInstance()->GetCurrentWorld();
}

View File

@ -75,12 +75,16 @@ class LegoOmni : public MxOmni
LegoGameState *GetGameState() { return m_gameState; }
LegoNavController *GetNavController() { return m_navController; }
MxTransitionManager *GetTransitionManager() { return m_transitionManager; }
LegoWorld *GetCurrentWorld() { return m_currentWorld; }
private:
int m_unk68;
int m_unk6c;
LegoInputManager *m_inputMgr; // 0x70
char m_unk74[0x10];
undefined4 m_unk74;
undefined4 m_unk78;
LegoWorld *m_currentWorld;
undefined4 m_unk80;
LegoNavController *m_navController; // 0x84
Isle* m_isle; // 0x88
char m_unk8c[0x4];
@ -115,5 +119,6 @@ LegoBuildingManager* BuildingManager();
Isle* GetIsle();
LegoPlantManager* PlantManager();
MxBool KeyValueStringParse(char *, const char *, const char *);
LegoWorld *GetCurrentWorld();
#endif // LEGOOMNI_H

View File

@ -41,10 +41,25 @@ MxResult MxTransitionManager::Tickle()
return 0;
}
// OFFSET: LEGO1 0x1004bc30 STUB
void MxTransitionManager::EndTransition(MxBool)
// OFFSET: LEGO1 0x1004bc30
void MxTransitionManager::EndTransition(MxBool p_notifyWorld)
{
// TODO
if (m_transitionType != NOT_TRANSITIONING) {
m_transitionType = NOT_TRANSITIONING;
m_unk20.bit0 = FALSE;
TickleManager()->UnregisterClient(this);
if (p_notifyWorld) {
LegoWorld *world = GetCurrentWorld();
if (world) {
MxParam p(0x18, this);
world->Notify(p);
}
}
}
}
// OFFSET: LEGO1 0x1004bd10

View File

@ -89,7 +89,7 @@ class MxTransitionManager : public MxCore
MxResult StartTransition(TransitionType p_animationType, MxS32 p_speed, MxBool p_unk, MxBool p_playMusicInAnim);
private:
void EndTransition(MxBool);
void EndTransition(MxBool p_notifyWorld);
void Transition_Dissolve();
void FUN_1004c4d0(DDSURFACEDESC &);
void FUN_1004c580(DDSURFACEDESC &);
@ -109,8 +109,8 @@ class MxTransitionManager : public MxCore
MxU16 m_animationTimer;
MxU16 m_columnOrder[640]; // 0x36
MxU16 m_randomShift[480]; // 0x536
MxULong m_systemTime;
MxS32 m_animationSpeed;
MxULong m_systemTime; // 0x8f8
MxS32 m_animationSpeed; // 0x8fc
};
#endif // MXTRANSITIONMANAGER_H