diff --git a/LEGO1/helicopter.cpp b/LEGO1/helicopter.cpp index 04195407..4228c29f 100644 --- a/LEGO1/helicopter.cpp +++ b/LEGO1/helicopter.cpp @@ -1,8 +1,10 @@ #include "helicopter.h" #include "act3.h" -#include "legoomni.h" +#include "legoanimationmanager.h" #include "legocontrolmanager.h" #include "legogamestate.h" +#include "legoomni.h" +#include "legoutil.h" #include "legoworld.h" DECOMP_SIZE_ASSERT(Helicopter, 0x230) @@ -40,4 +42,35 @@ void Helicopter::GetState() { m_state = (HelicopterState *)GameState()->GetState("HelicopterState"); if (!m_state) m_state = (HelicopterState *)GameState()->CreateState("HelicopterState"); -} \ No newline at end of file +} + +// OFFSET: LEGO1 0x10003360 +void Helicopter::VTable0xe4() +{ + if (!GameState()->GetUnknown10()) { + VTable0xe8(0x28, TRUE, 7); + } + IslePathActor::VTable0xe4(); + if (!GameState()->GetUnknown10()) { + GameState()->SetUnknown424(0x3c); + if (GetCurrentVehicle()) { + if (GetCurrentVehicle()->IsA("IslePathActor")) { + ((IslePathActor *)GetCurrentVehicle())->VTable0xe8(0x37, TRUE, 7); + } + } + } + m_state->SetUnknown8(0); + FUN_1003ee00(m_unk22c, 0x16); + FUN_1003ee00(m_unk22c, 0x17); + FUN_1003ee00(m_unk22c, 0x18); + FUN_1003ee00(m_unk22c, 0x19); + FUN_1003ee00(m_unk22c, 0x1a); + FUN_1003ee00(m_unk22c, 0x1b); + FUN_1003ee00(m_unk22c, 0x1c); + FUN_1003ee00(m_unk22c, 0x1d); + FUN_1003ee00(m_unk22c, 0x1e); + FUN_1003ee00(m_unk22c, 0x1f); + AnimationManager()->FUN_1005f6d0(TRUE); + ControlManager()->Unregister(this); +} + diff --git a/LEGO1/helicopter.h b/LEGO1/helicopter.h index 61cbd2cb..de7a5555 100644 --- a/LEGO1/helicopter.h +++ b/LEGO1/helicopter.h @@ -26,6 +26,7 @@ public: } virtual MxResult InitFromMxDSObject(MxDSObject &p_dsObject) override; // vtable+0x18 + virtual void VTable0xe4() override; // OFFSET: LEGO1 0x10003210 TEMPLATE // Helicopter::`scalar deleting destructor' diff --git a/LEGO1/helicopterstate.h b/LEGO1/helicopterstate.h index 161624dd..df80ddc7 100644 --- a/LEGO1/helicopterstate.h +++ b/LEGO1/helicopterstate.h @@ -1,6 +1,7 @@ #ifndef HELICOPTERSTATE_H #define HELICOPTERSTATE_H +#include "decomp.h" #include "legostate.h" // VTABLE 0x100d5418 @@ -20,6 +21,10 @@ public: { return !strcmp(name, HelicopterState::ClassName()) || LegoState::IsA(name); } + + inline void SetUnknown8(undefined4 p_unk8) { m_unk8 = p_unk8; } + protected: + undefined4 m_unk8; }; #endif // HELICOPTERSTATE_H diff --git a/LEGO1/islepathactor.cpp b/LEGO1/islepathactor.cpp index e2b6a6ee..12cbb9dc 100644 --- a/LEGO1/islepathactor.cpp +++ b/LEGO1/islepathactor.cpp @@ -2,6 +2,38 @@ DECOMP_SIZE_ASSERT(IslePathActor, 0x160) +// Probably in header +// OFFSET: LEGO1 0x10002df0 STUB +void IslePathActor::VTable0xd0() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002e00 STUB +void IslePathActor::VTable0xdc() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002e70 STUB +void IslePathActor::VTable0xcc() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002e80 STUB +void IslePathActor::VTable0xd4() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002e90 STUB +void IslePathActor::VTable0xd8() +{ + // TODO +} +// End header + // OFFSET: LEGO1 0x1001a200 IslePathActor::IslePathActor() { @@ -14,4 +46,28 @@ IslePathActor::IslePathActor() // OFFSET: LEGO1 0x1001a280 MxResult IslePathActor::InitFromMxDSObject(MxDSObject &p_dsObject) { return MxEntity::InitFromMxDSObject(p_dsObject); -} \ No newline at end of file +} + +// OFFSET: LEGO1 0x1001a350 STUB +void IslePathActor::VTable0xe0() +{ + // TODO +} + +// OFFSET: LEGO1 0x1001a3f0 STUB +void IslePathActor::VTable0xe4() +{ + // TODO +} + +// OFFSET: LEGO1 0x1001b2a0 STUB +void IslePathActor::VTable0xe8(MxU32 p_1, MxBool p_2, MxU8 p_3) +{ + // TODO +} + +// OFFSET: LEGO1 0x1001b5b0 STUB +void IslePathActor::VTable0xec() +{ + // TODO +} diff --git a/LEGO1/islepathactor.h b/LEGO1/islepathactor.h index be10d349..454e784f 100644 --- a/LEGO1/islepathactor.h +++ b/LEGO1/islepathactor.h @@ -33,6 +33,15 @@ public: } virtual MxResult InitFromMxDSObject(MxDSObject &p_dsObject) override; // vtable+0x18 + virtual void VTable0xcc(); // vtable+0xcc + virtual void VTable0xd0(); // vtable+0xd0 + virtual void VTable0xd4(); // vtable+0xd4 + virtual void VTable0xd8(); // vtable+0xd8 + virtual void VTable0xdc(); // vtable+0xdc + virtual void VTable0xe0(); // vtable+0xe0 + virtual void VTable0xe4(); // vtable+0xe4 + virtual void VTable0xe8(MxU32 p_1, MxBool p_2, MxU8 p_3); // vtable+0xe8 + virtual void VTable0xec(); // vtable+0xec inline void SetWorld(LegoWorld *p_world) { m_pLegoWorld = p_world; } inline LegoWorld *GetWorld() { return m_pLegoWorld; } diff --git a/LEGO1/legoactor.cpp b/LEGO1/legoactor.cpp index 7faa3b0d..d77e13f0 100644 --- a/LEGO1/legoactor.cpp +++ b/LEGO1/legoactor.cpp @@ -2,7 +2,44 @@ DECOMP_SIZE_ASSERT(LegoActor, 0x78) -// OFFSET: LEGO1 0x1002d110 STUB +// Probably in header +// OFFSET: LEGO1 0x10002cc0 STUB +void LegoActor::VTable0x50() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002cd0 STUB +void LegoActor::VTable0x54() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002ce0 STUB +void LegoActor::VTable0x58() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002cf0 STUB +void LegoActor::VTable0x5c() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002d00 STUB +void LegoActor::VTable0x60() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002d10 STUB +void LegoActor::VTable0x64() +{ + // TODO +} +// End header + LegoActor::LegoActor() { -} \ No newline at end of file +} diff --git a/LEGO1/legoactor.h b/LEGO1/legoactor.h index fe5e43a0..a8e8c749 100644 --- a/LEGO1/legoactor.h +++ b/LEGO1/legoactor.h @@ -24,6 +24,13 @@ public: return !strcmp(name, LegoActor::ClassName()) || LegoEntity::IsA(name); } + virtual void VTable0x50(); // vtable+0x50 + virtual void VTable0x54(); // vtable+0x54 + virtual void VTable0x58(); // vtable+0x58 + virtual void VTable0x5c(); // vtable+0x5c + virtual void VTable0x60(); // vtable+0x60 + virtual void VTable0x64(); // vtable+0x64 + private: undefined unk68[0x10]; diff --git a/LEGO1/legoanimationmanager.cpp b/LEGO1/legoanimationmanager.cpp index bf182ef5..26f7e38c 100644 --- a/LEGO1/legoanimationmanager.cpp +++ b/LEGO1/legoanimationmanager.cpp @@ -3,9 +3,16 @@ // 0x100f74f8 int g_legoAnimationManagerConfig = 1; +// OFFSET: LEGO1 0x1005eb50 +void LegoAnimationManager::configureLegoAnimationManager(int param_1) +{ + g_legoAnimationManagerConfig = param_1; +} + // OFFSET: LEGO1 0x1005eb60 STUB LegoAnimationManager::LegoAnimationManager() { + // TODO } // OFFSET: LEGO1 0x1005ed30 STUB @@ -14,6 +21,18 @@ LegoAnimationManager::~LegoAnimationManager() // TODO } +// OFFSET: LEGO1 0x1005f130 STUB +void LegoAnimationManager::Init() +{ + // TODO +} + +// OFFSET: LEGO1 0x1005f6d0 STUB +void LegoAnimationManager::FUN_1005f6d0(MxBool p) +{ + // TODO +} + // OFFSET: LEGO1 0x100619f0 STUB MxLong LegoAnimationManager::Notify(MxParam &p) { @@ -29,15 +48,3 @@ MxResult LegoAnimationManager::Tickle() return SUCCESS; } - -// OFFSET: LEGO1 0x1005f130 STUB -void LegoAnimationManager::Init() -{ - // TODO -} - -// OFFSET: LEGO1 0x1005eb50 -void LegoAnimationManager::configureLegoAnimationManager(int param_1) -{ - g_legoAnimationManagerConfig = param_1; -} diff --git a/LEGO1/legoanimationmanager.h b/LEGO1/legoanimationmanager.h index ec07603d..6756d936 100644 --- a/LEGO1/legoanimationmanager.h +++ b/LEGO1/legoanimationmanager.h @@ -27,6 +27,8 @@ public: return !strcmp(name, ClassName()) || MxCore::IsA(name); } + void FUN_1005f6d0(MxBool p); + __declspec(dllexport) static void configureLegoAnimationManager(int param_1); private: diff --git a/LEGO1/legogamestate.h b/LEGO1/legogamestate.h index 050b1100..2ae06e77 100644 --- a/LEGO1/legogamestate.h +++ b/LEGO1/legogamestate.h @@ -36,6 +36,7 @@ public: void FUN_1003a720(MxU32 p_unk); void HandleAction(MxU32 p_unk); + inline MxU32 GetUnknown10() { return m_unk10; } inline void SetUnknown424(undefined4 p_unk424) { m_unk424 = p_unk424; } private: diff --git a/LEGO1/legoomni.cpp b/LEGO1/legoomni.cpp index c02877d9..c67e415e 100644 --- a/LEGO1/legoomni.cpp +++ b/LEGO1/legoomni.cpp @@ -146,16 +146,52 @@ LegoVideoManager *VideoManager() return LegoOmni::GetInstance()->GetVideoManager(); } -// OFFSET: LEGO1 0x100157f0 -LegoBuildingManager *BuildingManager() +// OFFSET: LEGO1 0x10015730 +MxBackgroundAudioManager *BackgroundAudioManager() { - return LegoOmni::GetInstance()->GetLegoBuildingManager(); + return LegoOmni::GetInstance()->GetBackgroundAudioManager(); +} + +// OFFSET: LEGO1 0x10015740 +LegoInputManager *InputManager() +{ + return LegoOmni::GetInstance()->GetInputManager(); +} + +// OFFSET: LEGO1 0x10015750 +LegoControlManager *ControlManager() +{ + return LegoOmni::GetInstance()->GetInputManager()->GetControlManager(); +} + +// OFFSET: LEGO1 0x10015760 +LegoGameState *GameState() +{ + return LegoOmni::GetInstance()->GetGameState(); +} + +// OFFSET: LEGO1 0x10015770 +LegoAnimationManager *AnimationManager() +{ + return LegoOmni::GetInstance()->GetAnimationManager(); +} + +// OFFSET: LEGO1 0x10015780 +LegoNavController *NavController() +{ + return LegoOmni::GetInstance()->GetNavController(); } // OFFSET: LEGO1 0x10015790 -Isle *GetIsle() +LegoWorld *GetCurrentVehicle() { - return LegoOmni::GetInstance()->GetIsle(); + return LegoOmni::GetInstance()->GetCurrentVehicle(); +} + +// OFFSET: LEGO1 0x100157a0 +LegoWorld *GetCurrentWorld() +{ + return LegoOmni::GetInstance()->GetCurrentWorld(); } // OFFSET: LEGO1 0x100157e0 @@ -164,10 +200,22 @@ LegoPlantManager *PlantManager() return LegoOmni::GetInstance()->GetLegoPlantManager(); } -// OFFSET: LEGO1 0x10015730 -MxBackgroundAudioManager *BackgroundAudioManager() +// OFFSET: LEGO1 0x100157f0 +LegoBuildingManager *BuildingManager() { - return LegoOmni::GetInstance()->GetBackgroundAudioManager(); + return LegoOmni::GetInstance()->GetLegoBuildingManager(); +} + +// OFFSET: LEGO1 0x10015800 +GifManager *GetGifManager() +{ + return LegoOmni::GetInstance()->GetGifManager(); +} + +// OFFSET: LEGO1 0x10015900 +MxTransitionManager *TransitionManager() +{ + return LegoOmni::GetInstance()->GetTransitionManager(); } // OFFSET: LEGO1 0x100c0280 @@ -205,36 +253,6 @@ MxDSObject *CreateStreamObject(MxDSFile *p_file, MxS16 p_ofs) return NULL; } -// OFFSET: LEGO1 0x10015740 -LegoInputManager *InputManager() -{ - return LegoOmni::GetInstance()->GetInputManager(); -} - -// OFFSET: LEGO1 0x10015750 -LegoControlManager *ControlManager() -{ - return LegoOmni::GetInstance()->GetInputManager()->GetControlManager(); -} - -// OFFSET: LEGO1 0x10015760 -LegoGameState *GameState() -{ - return LegoOmni::GetInstance()->GetGameState(); -} - -// OFFSET: LEGO1 0x10015780 -LegoNavController *NavController() -{ - return LegoOmni::GetInstance()->GetNavController(); -} - -// OFFSET: LEGO1 0x10015900 -MxTransitionManager *TransitionManager() -{ - return LegoOmni::GetInstance()->GetTransitionManager(); -} - // OFFSET: LEGO1 0x10053430 const char *GetNoCD_SourceName() { @@ -244,7 +262,7 @@ const char *GetNoCD_SourceName() // OFFSET: LEGO1 0x1005b5f0 MxLong LegoOmni::Notify(MxParam &p) { - // FIXME: Stub + // TODO return 0; } @@ -273,7 +291,7 @@ void LegoOmni::Init() m_unk78 = 0; m_currentWorld = NULL; m_unk80 = FALSE; - m_isle = NULL; + m_currentVehicle = NULL; m_unkLegoSaveDataWriter = NULL; m_plantManager = NULL; m_gameState = NULL; @@ -299,7 +317,7 @@ MxResult LegoOmni::Create(COMPAT_CONST MxOmniCreateParam &p) // OFFSET: LEGO1 0x10058c30 STUB void LegoOmni::Destroy() { - // FIXME: Stub + // TODO } // OFFSET: LEGO1 0x1005b580 @@ -312,26 +330,24 @@ MxResult LegoOmni::Start(MxDSAction* action) return result; } +// OFFSET: LEGO1 0x1005b1d0 STUB MxResult LegoOmni::DeleteObject(MxDSAction &ds) { - // FIXME: Stub + // TODO return FAILURE; } +// OFFSET: LEGO1 0x1005b3c0 STUB MxBool LegoOmni::DoesEntityExist(MxDSAction &ds) { - // FIXME: Stub + // TODO return TRUE; } -void LegoOmni::vtable0x2c() +// OFFSET: LEGO1 0x1005b2f0 STUB +int LegoOmni::Vtable0x30(char*, int, MxCore*) { - // FIXME: Stub -} - -int LegoOmni::vtable0x30(char*, int, MxCore*) -{ - // FIXME: Stub + // TODO return 0; } @@ -355,15 +371,3 @@ void LegoOmni::StopTimer() MxOmni::StopTimer(); SetAppCursor(0); } - -// OFFSET: LEGO1 0x100157a0 -LegoWorld *GetCurrentWorld() -{ - return LegoOmni::GetInstance()->GetCurrentWorld(); -} - -// OFFSET: LEGO1 0x10015800 -GifManager *GetGifManager() -{ - return LegoOmni::GetInstance()->GetGifManager(); -} \ No newline at end of file diff --git a/LEGO1/legoomni.h b/LEGO1/legoomni.h index a1ee22cd..4b5ca98f 100644 --- a/LEGO1/legoomni.h +++ b/LEGO1/legoomni.h @@ -58,27 +58,28 @@ public: virtual void Init() override; // vtable+14 virtual MxResult Create(COMPAT_CONST MxOmniCreateParam &p) override; // vtable+18 virtual void Destroy() override; // vtable+1c - virtual MxResult Start(MxDSAction* action) override; - virtual MxResult DeleteObject(MxDSAction &ds) override; - virtual MxBool DoesEntityExist(MxDSAction &ds) override; - virtual void vtable0x2c() override; - virtual int vtable0x30(char*, int, MxCore*) override; - virtual void NotifyCurrentEntity(MxNotificationParam *p_param) override; - virtual void StartTimer() override; - virtual void StopTimer() override; + virtual MxResult Start(MxDSAction* action) override; // vtable+20 + virtual MxResult DeleteObject(MxDSAction &ds) override; // vtable+24 + virtual MxBool DoesEntityExist(MxDSAction &ds) override; // vtable+28 + virtual int Vtable0x30(char*, int, MxCore*) override; // vtable+30 + virtual void NotifyCurrentEntity(MxNotificationParam *p_param) override; //vtable+34 + virtual void StartTimer() override; // vtable+38 + virtual void StopTimer() override; //vtable+3c - LegoVideoManager *GetVideoManager() { return (LegoVideoManager *) m_videoManager; } - LegoSoundManager *GetSoundManager() { return (LegoSoundManager *)m_soundManager;} - MxBackgroundAudioManager *GetBackgroundAudioManager() { return m_bkgAudioManager; } + LegoVideoManager *GetVideoManager() { return (LegoVideoManager *)m_videoManager; } + LegoSoundManager *GetSoundManager() { return (LegoSoundManager *)m_soundManager; } + LegoInputManager *GetInputManager() { return m_inputMgr; } - Isle *GetIsle() { return m_isle; } - LegoBuildingManager *GetLegoBuildingManager() { return m_buildingManager; } - LegoPlantManager *GetLegoPlantManager() { return m_plantManager; } - LegoGameState *GetGameState() { return m_gameState; } - LegoNavController *GetNavController() { return m_navController; } - MxTransitionManager *GetTransitionManager() { return m_transitionManager; } - LegoWorld *GetCurrentWorld() { return m_currentWorld; } GifManager *GetGifManager() { return m_gifManager; } + LegoWorld *GetCurrentWorld() { return m_currentWorld; } + LegoNavController *GetNavController() { return m_navController; } + LegoWorld *GetCurrentVehicle() { return m_currentVehicle; } + LegoPlantManager *GetLegoPlantManager() { return m_plantManager; } + LegoAnimationManager *GetAnimationManager() { return m_animationManager; } + LegoBuildingManager *GetLegoBuildingManager() { return m_buildingManager; } + LegoGameState *GetGameState() { return m_gameState; } + MxBackgroundAudioManager *GetBackgroundAudioManager() { return m_bkgAudioManager; } + MxTransitionManager *GetTransitionManager() { return m_transitionManager; } private: undefined4 m_unk68; @@ -89,10 +90,10 @@ private: LegoWorld *m_currentWorld; MxBool m_unk80; LegoNavController *m_navController; // 0x84 - Isle* m_isle; // 0x88 - LegoUnkSaveDataWriter* m_unkLegoSaveDataWriter; - LegoPlantManager* m_plantManager; // 0x90 - LegoAnimationManager* m_animationManager; + LegoWorld *m_currentVehicle; // 0x88 + LegoUnkSaveDataWriter *m_unkLegoSaveDataWriter; + LegoPlantManager *m_plantManager; // 0x90 + LegoAnimationManager *m_animationManager; LegoBuildingManager* m_buildingManager; // 0x98 LegoGameState *m_gameState; // 0x9c MxDSAction m_action; @@ -101,25 +102,26 @@ private: MxBool m_unk13c; }; -__declspec(dllexport) MxBackgroundAudioManager * BackgroundAudioManager(); -__declspec(dllexport) MxDSObject * CreateStreamObject(MxDSFile *,MxS16); -__declspec(dllexport) LegoGameState * GameState(); -__declspec(dllexport) const char * GetNoCD_SourceName(); -__declspec(dllexport) LegoInputManager * InputManager(); -__declspec(dllexport) LegoOmni * Lego(); +__declspec(dllexport) MxBackgroundAudioManager *BackgroundAudioManager(); +__declspec(dllexport) MxDSObject *CreateStreamObject(MxDSFile *, MxS16); +__declspec(dllexport) LegoGameState *GameState(); +__declspec(dllexport) const char *GetNoCD_SourceName(); +__declspec(dllexport) LegoInputManager *InputManager(); +__declspec(dllexport) LegoOmni *Lego(); __declspec(dllexport) void MakeSourceName(char *, const char *); -__declspec(dllexport) LegoEntity * PickEntity(MxLong,MxLong); -__declspec(dllexport) LegoROI * PickROI(MxLong,MxLong); -__declspec(dllexport) void SetOmniUserMessage(void (*)(const char *,int)); -__declspec(dllexport) LegoSoundManager * SoundManager(); +__declspec(dllexport) LegoEntity *PickEntity(MxLong,MxLong); +__declspec(dllexport) LegoROI *PickROI(MxLong,MxLong); +__declspec(dllexport) void SetOmniUserMessage(void (*)(const char *, int)); +__declspec(dllexport) LegoSoundManager *SoundManager(); __declspec(dllexport) MxResult Start(MxDSAction*); -__declspec(dllexport) MxTransitionManager * TransitionManager(); -__declspec(dllexport) LegoVideoManager * VideoManager(); +__declspec(dllexport) MxTransitionManager *TransitionManager(); +__declspec(dllexport) LegoVideoManager *VideoManager(); -LegoBuildingManager* BuildingManager(); -LegoControlManager* ControlManager(); -Isle* GetIsle(); -LegoPlantManager* PlantManager(); +LegoAnimationManager *AnimationManager(); +LegoBuildingManager *BuildingManager(); +LegoControlManager *ControlManager(); +LegoWorld *GetCurrentVehicle(); +LegoPlantManager *PlantManager(); MxBool KeyValueStringParse(char *, const char *, const char *); LegoWorld *GetCurrentWorld(); GifManager *GetGifManager(); diff --git a/LEGO1/legopathactor.cpp b/LEGO1/legopathactor.cpp index f1c39b82..8f5e66d8 100644 --- a/LEGO1/legopathactor.cpp +++ b/LEGO1/legopathactor.cpp @@ -2,6 +2,86 @@ DECOMP_SIZE_ASSERT(LegoPathActor, 0x154) +// Probably in header +// OFFSET: LEGO1 0x10002d20 STUB +void LegoPathActor::VTable0x78() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002d30 STUB +void LegoPathActor::VTable0x7c() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002d40 STUB +void LegoPathActor::VTable0x90() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002d50 STUB +void LegoPathActor::VTable0x94() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002d60 STUB +void LegoPathActor::VTable0xa0() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002d70 STUB +void LegoPathActor::VTable0xac() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002d80 STUB +void LegoPathActor::VTable0xb0() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002d90 STUB +void LegoPathActor::VTable0xb4() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002da0 STUB +void LegoPathActor::VTable0xb8() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002db0 STUB +void LegoPathActor::VTable0xbc() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002dc0 STUB +void LegoPathActor::VTable0xc0() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002dd0 STUB +void LegoPathActor::VTable0xc4() +{ + // TODO +} + +// OFFSET: LEGO1 0x10002de0 STUB +void LegoPathActor::VTable0xc8() +{ + // TODO +} +// End header + // OFFSET: LEGO1 0x1002d700 STUB LegoPathActor::LegoPathActor() { @@ -13,3 +93,75 @@ LegoPathActor::~LegoPathActor() { // TODO } + +// OFFSET: LEGO1 0x1002d8d0 STUB +void LegoPathActor::VTable0x80() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002d9c0 STUB +void LegoPathActor::VTable0x88() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002de10 STUB +void LegoPathActor::VTable0x84() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002e100 STUB +void LegoPathActor::VTable0x8c() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002e740 STUB +void LegoPathActor::VTable0x74() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002e790 STUB +void LegoPathActor::VTable0x70() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002e8b0 STUB +void LegoPathActor::VTable0x98() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002e8d0 STUB +void LegoPathActor::VTable0x6c() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002ebe0 STUB +void LegoPathActor::VTable0x68() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002f1b0 STUB +void LegoPathActor::VTable0x9c() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002f650 STUB +void LegoPathActor::VTable0xa4() +{ + // TODO +} + +// OFFSET: LEGO1 0x1002f700 STUB +void LegoPathActor::VTable0xa8() +{ + // TODO +} \ No newline at end of file diff --git a/LEGO1/legopathactor.h b/LEGO1/legopathactor.h index 41c6d843..c6a48030 100644 --- a/LEGO1/legopathactor.h +++ b/LEGO1/legopathactor.h @@ -25,6 +25,33 @@ public: { return !strcmp(name, LegoPathActor::ClassName()) || LegoActor::IsA(name); } + + virtual void VTable0x68(); // vtable+0x68 + virtual void VTable0x6c(); // vtable+0x6c + virtual void VTable0x70(); // vtable+0x70 + virtual void VTable0x74(); // vtable+0x74 + virtual void VTable0x78(); // vtable+0x78 + virtual void VTable0x7c(); // vtable+0x7c + virtual void VTable0x80(); // vtable+0x80 + virtual void VTable0x84(); // vtable+0x84 + virtual void VTable0x88(); // vtable+0x88 + virtual void VTable0x8c(); // vtable+0x8c + virtual void VTable0x90(); // vtable+0x90 + virtual void VTable0x94(); // vtable+0x94 + virtual void VTable0x98(); // vtable+0x98 + virtual void VTable0x9c(); // vtable+0x9c + virtual void VTable0xa0(); // vtable+0xa0 + virtual void VTable0xa4(); // vtable+0xa4 + virtual void VTable0xa8(); // vtable+0xa8 + virtual void VTable0xac(); // vtable+0xac + virtual void VTable0xb0(); // vtable+0xb0 + virtual void VTable0xb4(); // vtable+0xb4 + virtual void VTable0xb8(); // vtable+0xb8 + virtual void VTable0xbc(); // vtable+0xbc + virtual void VTable0xc0(); // vtable+0xc0 + virtual void VTable0xc4(); // vtable+0xc4 + virtual void VTable0xc8(); // vtable+0xc8 + protected: // TODO: the types undefined unk78[0xc4]; diff --git a/LEGO1/legoutil.cpp b/LEGO1/legoutil.cpp index cd46c902..f3a8cb4a 100644 --- a/LEGO1/legoutil.cpp +++ b/LEGO1/legoutil.cpp @@ -103,6 +103,12 @@ void ConvertHSVToRGB(float h, float s, float v, float *r_out, float *b_out, floa } } +// OFFSET: LEGO1 0x1003ee00 STUB +void FUN_1003ee00(MxAtomId &p_atomId, MxS32 p_id) +{ + +} + // OFFSET: LEGO1 0x1003ef40 void SetAppCursor(WPARAM p_wparam) { diff --git a/LEGO1/legoutil.h b/LEGO1/legoutil.h index cc54da74..50f43fc8 100644 --- a/LEGO1/legoutil.h +++ b/LEGO1/legoutil.h @@ -4,6 +4,7 @@ #include #include "extra.h" +#include "mxatomid.h" template inline T Abs(T p_t) @@ -54,6 +55,7 @@ inline void GetString(char **p_source, const char *&p_dest, T *p_obj, void (T::* ExtraActionType MatchActionString(const char *); void ConvertHSVToRGB(float r, float g, float b, float* out_r, float* out_g, float* out_b); +void FUN_1003ee00(MxAtomId &p_atomId, MxS32 p_id); void SetAppCursor(WPARAM p_wparam); #endif // LEGOUTIL_H diff --git a/LEGO1/mxomni.cpp b/LEGO1/mxomni.cpp index 167791ad..7321c229 100644 --- a/LEGO1/mxomni.cpp +++ b/LEGO1/mxomni.cpp @@ -56,7 +56,7 @@ void MxOmni::Init() } // OFFSET: LEGO1 0x100b0090 -MxResult MxOmni::Start(MxDSAction* p_dsAction) +MxResult MxOmni::Start(MxDSAction *p_dsAction) { MxResult result = FAILURE; if(p_dsAction->GetAtomId().GetInternal() != NULL && p_dsAction->GetObjectId() != -1 && m_streamer != NULL) @@ -87,13 +87,13 @@ MxBool MxOmni::DoesEntityExist(MxDSAction &p_dsAction) } // OFFSET: LEGO1 0x100b00e0 STUB -void MxOmni::vtable0x2c() +void MxOmni::Vtable0x2c() { // TODO } // OFFSET: LEGO1 0x100aefb0 STUB -int MxOmni::vtable0x30(char*, int, MxCore*) +int MxOmni::Vtable0x30(char *, int, MxCore *) { // TODO return 0; @@ -332,7 +332,7 @@ MxLong MxOmni::Notify(MxParam &p) } // OFFSET: LEGO1 0x100b0880 STUB -MxResult MxOmni::HandleNotificationType2(MxParam& p_param) +MxResult MxOmni::HandleNotificationType2(MxParam &p_param) { // TODO STUB return FAILURE; @@ -369,37 +369,37 @@ MxAtomIdCounterSet *AtomIdCounterSet() } // OFFSET: LEGO1 0x100acef0 -MxStreamer* Streamer() +MxStreamer *Streamer() { return MxOmni::GetInstance()->GetStreamer(); } // OFFSET: LEGO1 0x100acf00 -MxSoundManager* MSoundManager() +MxSoundManager *MSoundManager() { return MxOmni::GetInstance()->GetSoundManager(); } // OFFSET: LEGO1 0x100acf10 -MxVideoManager* MVideoManager() +MxVideoManager *MVideoManager() { return MxOmni::GetInstance()->GetVideoManager(); } // OFFSET: LEGO1 0x100acf20 -MxVariableTable* VariableTable() +MxVariableTable *VariableTable() { return MxOmni::GetInstance()->GetVariableTable(); } // OFFSET: LEGO1 0x100acf30 -MxMusicManager* MusicManager() +MxMusicManager *MusicManager() { return MxOmni::GetInstance()->GetMusicManager(); } // OFFSET: LEGO1 0x100acf40 -MxEventManager* EventManager() +MxEventManager *EventManager() { return MxOmni::GetInstance()->GetEventManager(); } diff --git a/LEGO1/mxomni.h b/LEGO1/mxomni.h index 970eb4f3..321d788b 100644 --- a/LEGO1/mxomni.h +++ b/LEGO1/mxomni.h @@ -42,59 +42,59 @@ public: virtual void Init(); // vtable+14 virtual MxResult Create(COMPAT_CONST MxOmniCreateParam &p); // vtable+18 virtual void Destroy(); // vtable+1c - virtual MxResult Start(MxDSAction* p_dsAction); // vtable+20 + virtual MxResult Start(MxDSAction *p_dsAction); // vtable+20 virtual MxResult DeleteObject(MxDSAction &p_dsAction); // vtable+24 virtual MxBool DoesEntityExist(MxDSAction &p_dsAction); // vtable+28 - virtual void vtable0x2c(); // vtable+2c - virtual int vtable0x30(char*, int, MxCore*); // vtable+30 + virtual void Vtable0x2c(); // vtable+2c + virtual int Vtable0x30(char*, int, MxCore *); // vtable+30 virtual void NotifyCurrentEntity(MxNotificationParam *p_param); // vtable+34 virtual void StartTimer(); // vtable+38 virtual void StopTimer(); // vtable+3c virtual MxBool IsTimerRunning(); //vtable+40 - static void SetInstance(MxOmni* instance); + static void SetInstance(MxOmni *instance); HWND GetWindowHandle() const { return this->m_windowHandle; } - MxObjectFactory* GetObjectFactory() const { return this->m_objectFactory; } - MxNotificationManager* GetNotificationManager() const { return this->m_notificationManager; } - MxTickleManager* GetTickleManager() const { return this->m_tickleManager; } - MxTimer* GetTimer() const { return this->m_timer; } - MxStreamer* GetStreamer() const { return this->m_streamer; } - MxSoundManager* GetSoundManager() const { return this->m_soundManager; } - MxVideoManager* GetVideoManager() const { return this->m_videoManager; } - MxVariableTable* GetVariableTable() const { return this->m_variableTable; } - MxMusicManager* GetMusicManager() const { return this->m_musicManager; } - MxEventManager* GetEventManager() const { return this->m_eventManager; } - MxAtomIdCounterSet* GetAtomIdCounterSet() const { return this->m_atomIdCounterSet; } - MxResult HandleNotificationType2(MxParam& p_param); + MxObjectFactory *GetObjectFactory() const { return this->m_objectFactory; } + MxNotificationManager *GetNotificationManager() const { return this->m_notificationManager; } + MxTickleManager *GetTickleManager() const { return this->m_tickleManager; } + MxTimer *GetTimer() const { return this->m_timer; } + MxStreamer *GetStreamer() const { return this->m_streamer; } + MxSoundManager *GetSoundManager() const { return this->m_soundManager; } + MxVideoManager *GetVideoManager() const { return this->m_videoManager; } + MxVariableTable *GetVariableTable() const { return this->m_variableTable; } + MxMusicManager *GetMusicManager() const { return this->m_musicManager; } + MxEventManager *GetEventManager() const { return this->m_eventManager; } + MxAtomIdCounterSet *GetAtomIdCounterSet() const { return this->m_atomIdCounterSet; } + MxResult HandleNotificationType2(MxParam &p_param); protected: - static MxOmni* g_instance; + static MxOmni *g_instance; MxString m_mediaPath; // 0x8 HWND m_windowHandle; // 0x18; MxObjectFactory *m_objectFactory; // 0x1C - MxVariableTable* m_variableTable; //0x20 - MxTickleManager* m_tickleManager; //0x24 - MxNotificationManager* m_notificationManager; //0x28 + MxVariableTable *m_variableTable; //0x20 + MxTickleManager *m_tickleManager; //0x24 + MxNotificationManager *m_notificationManager; //0x28 MxVideoManager *m_videoManager; //0x2C - MxSoundManager* m_soundManager; //0x30 - MxMusicManager* m_musicManager; //0x34 - MxEventManager* m_eventManager; //0x38 - MxTimer* m_timer; //0x3C - MxStreamer* m_streamer; //0x40 + MxSoundManager *m_soundManager; //0x30 + MxMusicManager *m_musicManager; //0x34 + MxEventManager *m_eventManager; //0x38 + MxTimer *m_timer; //0x3C + MxStreamer *m_streamer; //0x40 - MxAtomIdCounterSet* m_atomIdCounterSet; // 0x44 + MxAtomIdCounterSet *m_atomIdCounterSet; // 0x44 MxCriticalSection m_criticalsection; // 0x48 MxBool m_timerRunning; // 0x64 }; -__declspec(dllexport) MxTickleManager * TickleManager(); -__declspec(dllexport) MxTimer * Timer(); -__declspec(dllexport) MxStreamer * Streamer(); -__declspec(dllexport) MxSoundManager * MSoundManager(); -__declspec(dllexport) MxVariableTable * VariableTable(); -__declspec(dllexport) MxMusicManager * MusicManager(); -__declspec(dllexport) MxEventManager * EventManager(); -__declspec(dllexport) MxNotificationManager * NotificationManager(); +__declspec(dllexport) MxTickleManager *TickleManager(); +__declspec(dllexport) MxTimer *Timer(); +__declspec(dllexport) MxStreamer *Streamer(); +__declspec(dllexport) MxSoundManager *MSoundManager(); +__declspec(dllexport) MxVariableTable *VariableTable(); +__declspec(dllexport) MxMusicManager *MusicManager(); +__declspec(dllexport) MxEventManager *EventManager(); +__declspec(dllexport) MxNotificationManager *NotificationManager(); MxResult DeleteObject(MxDSAction &p_dsAction); MxVideoManager *MVideoManager(); diff --git a/LEGO1/mxpresenter.cpp b/LEGO1/mxpresenter.cpp index 9f0b55c4..c573c26f 100644 --- a/LEGO1/mxpresenter.cpp +++ b/LEGO1/mxpresenter.cpp @@ -47,7 +47,7 @@ void MxPresenter::ParseExtra() token = strtok(NULL, g_parseExtraTokens); MxS32 val = token ? atoi(token) : 0; - MxS32 result = MxOmni::GetInstance()->vtable0x30(t_token, val, this); + MxS32 result = MxOmni::GetInstance()->Vtable0x30(t_token, val, this); m_action->SetFlags(m_action->GetFlags() | MxDSAction::Flag_Parsed);