Implement MxTransitionManager::EndTransition and GetCurrentWorld (#159)

* Implement MxTransitionManager::EndTransition and GetCurrentWorld

* Match EndTransition

---------

Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
MattKC 2023-10-03 23:56:16 -07:00 committed by GitHub
parent 129e8d6373
commit 6da912e932
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 32 additions and 7 deletions

View file

@ -312,3 +312,9 @@ MxBool LegoOmni::vtable40()
// FIXME: Stub // FIXME: Stub
return 0; 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; } LegoGameState *GetGameState() { return m_gameState; }
LegoNavController *GetNavController() { return m_navController; } LegoNavController *GetNavController() { return m_navController; }
MxTransitionManager *GetTransitionManager() { return m_transitionManager; } MxTransitionManager *GetTransitionManager() { return m_transitionManager; }
LegoWorld *GetCurrentWorld() { return m_currentWorld; }
private: private:
int m_unk68; int m_unk68;
int m_unk6c; int m_unk6c;
LegoInputManager *m_inputMgr; // 0x70 LegoInputManager *m_inputMgr; // 0x70
char m_unk74[0x10]; undefined4 m_unk74;
undefined4 m_unk78;
LegoWorld *m_currentWorld;
undefined4 m_unk80;
LegoNavController *m_navController; // 0x84 LegoNavController *m_navController; // 0x84
Isle* m_isle; // 0x88 Isle* m_isle; // 0x88
char m_unk8c[0x4]; char m_unk8c[0x4];
@ -115,5 +119,6 @@ LegoBuildingManager* BuildingManager();
Isle* GetIsle(); Isle* GetIsle();
LegoPlantManager* PlantManager(); LegoPlantManager* PlantManager();
MxBool KeyValueStringParse(char *, const char *, const char *); MxBool KeyValueStringParse(char *, const char *, const char *);
LegoWorld *GetCurrentWorld();
#endif // LEGOOMNI_H #endif // LEGOOMNI_H

View file

@ -41,10 +41,24 @@ MxResult MxTransitionManager::Tickle()
return 0; return 0;
} }
// OFFSET: LEGO1 0x1004bc30 STUB // OFFSET: LEGO1 0x1004bc30
void MxTransitionManager::EndTransition(MxBool) 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) {
world->Notify(MxParam(0x18, this));
}
}
}
} }
// OFFSET: LEGO1 0x1004bd10 // 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); MxResult StartTransition(TransitionType p_animationType, MxS32 p_speed, MxBool p_unk, MxBool p_playMusicInAnim);
private: private:
void EndTransition(MxBool); void EndTransition(MxBool p_notifyWorld);
void Transition_Dissolve(); void Transition_Dissolve();
void FUN_1004c4d0(DDSURFACEDESC &); void FUN_1004c4d0(DDSURFACEDESC &);
void FUN_1004c580(DDSURFACEDESC &); void FUN_1004c580(DDSURFACEDESC &);
@ -109,8 +109,8 @@ class MxTransitionManager : public MxCore
MxU16 m_animationTimer; MxU16 m_animationTimer;
MxU16 m_columnOrder[640]; // 0x36 MxU16 m_columnOrder[640]; // 0x36
MxU16 m_randomShift[480]; // 0x536 MxU16 m_randomShift[480]; // 0x536
MxULong m_systemTime; MxULong m_systemTime; // 0x8f8
MxS32 m_animationSpeed; MxS32 m_animationSpeed; // 0x8fc
}; };
#endif // MXTRANSITIONMANAGER_H #endif // MXTRANSITIONMANAGER_H