Implement Helicopter::VTable0xe4 (#243)

Clean up parent classes
This commit is contained in:
Nathan M Gilbert 2023-10-24 08:37:02 -04:00 committed by GitHub
parent 74329d681b
commit af1745db18
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 513 additions and 162 deletions

View file

@ -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");
}
}
// 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);
}

View file

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

View file

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

View file

@ -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);
}
}
// 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
}

View file

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

View file

@ -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()
{
}
}

View file

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

View file

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

View file

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

View file

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

View file

@ -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();
}

View file

@ -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();

View file

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

View file

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

View file

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

View file

@ -4,6 +4,7 @@
#include <windows.h>
#include "extra.h"
#include "mxatomid.h"
template <class T>
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

View file

@ -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();
}

View file

@ -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();

View file

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