mirror of
https://github.com/isledecomp/isle-portable.git
synced 2025-04-02 17:59:43 -04:00
Merge commit 'ac41854149776a30b7acaa89808cee0a7cad7380' into new-isle-decomp
This commit is contained in:
commit
94081312c3
167 changed files with 2747 additions and 919 deletions
CMakeLists.txt
LEGO1
define.cppdefine.h
lego/legoomni
include
act3.hambulance.hambulancemissionstate.hbike.hcarrace.hdunebuggy.helevatorbottom.hgasstation.hhelicopter.hhistorybook.hhospital.hinfocenter.hinfocenterdoor.hisle.hisleactor.hislepathactor.hjetski.hjetskirace.hjukebox.hlego3dsound.hlego3dwavepresenter.hlegoact2.hlegoactioncontrolpresenter.hlegoactorpresenter.hlegoanimationmanager.hlegoanimmmpresenter.hlegoanimpresenter.hlegocachsound.hlegocameracontroller.hlegocarbuild.hlegocarbuildanimpresenter.hlegocharactermanager.hlegocharacters.hlegocontrolmanager.hlegoentitypresenter.hlegoflctexturepresenter.hlegohideanimpresenter.hlegoloadcachesoundpresenter.hlegolocomotionanimpresenter.hlegoloopinganimpresenter.hlegomain.hlegometerpresenter.hlegomodelpresenter.hlegopalettepresenter.hlegopartpresenter.hlegopathactor.hlegopathboundary.hlegopathcontroller.hlegopathpresenter.hlegophonemepresenter.hlegorace.hlegotexturepresenter.hlegovariables.hlegoworld.hlegoworldpresenter.hmisc.hmotocycle.hmxcontrolpresenter.hpizza.hpizzamissionstate.hpizzeria.hpizzeriastate.hpolice.hracecar.hradio.hregistrationbook.hscore.hskateboard.htowtrack.htowtrackmissionstate.h
src
actors
ambulance.cppbike.cppdunebuggy.cpphelicopter.cppisleactor.cppislepathactor.cppjetski.cppjukeboxentity.cppmotorcycle.cpppizza.cpppizzeria.cppracecar.cppradio.cppskateboard.cpptowtrack.cpp
audio
build
common
legoanimationmanager.cpplegoanimmmpresenter.cpplegocharactermanager.cpplegogamestate.cpplegovariables.cppmisc.cppmxcontrolpresenter.cpp
control
|
@ -304,12 +304,12 @@ add_library(lego1 SHARED
|
|||
LEGO1/lego/legoomni/src/actors/radio.cpp
|
||||
LEGO1/lego/legoomni/src/actors/skateboard.cpp
|
||||
LEGO1/lego/legoomni/src/actors/towtrack.cpp
|
||||
LEGO1/lego/legoomni/src/audio/lego3dsound.cpp
|
||||
LEGO1/lego/legoomni/src/audio/lego3dwavepresenter.cpp
|
||||
LEGO1/lego/legoomni/src/audio/legocachsound.cpp
|
||||
LEGO1/lego/legoomni/src/audio/legocachesoundmanager.cpp
|
||||
LEGO1/lego/legoomni/src/audio/legoloadcachesoundpresenter.cpp
|
||||
LEGO1/lego/legoomni/src/audio/legosoundmanager.cpp
|
||||
LEGO1/lego/legoomni/src/audio/legounknown100d5778.cpp
|
||||
LEGO1/lego/legoomni/src/audio/mxbackgroundaudiomanager.cpp
|
||||
LEGO1/lego/legoomni/src/build/buildingentity.cpp
|
||||
LEGO1/lego/legoomni/src/build/helicopterstate.cpp
|
||||
|
|
|
@ -20,6 +20,10 @@ const char* g_strAUTO_CREATE = "AUTO_CREATE";
|
|||
// STRING: LEGO1 0x10102000
|
||||
const char* g_strBOTTOM_TO_TOP = "BOTTOM_TO_TOP";
|
||||
|
||||
// GLOBAL: LEGO1 0x10102060
|
||||
// STRING: LEGO1 0x10101ff4
|
||||
const char* g_strCOLLIDEBOX = "COLLIDEBOX";
|
||||
|
||||
// GLOBAL: LEGO1 0x10102064
|
||||
// STRING: LEGO1 0x10101fec
|
||||
const char* g_strSTYLE = "STYLE";
|
||||
|
@ -68,6 +72,14 @@ const char* g_strMUST_SUCCEED = "MUST_SUCCEED";
|
|||
// STRING: LEGO1 0x10101f58
|
||||
const char* g_strOBJECT = "OBJECT";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020a0
|
||||
// STRING: LEGO1 0x10101f50
|
||||
const char* g_strPATH = "PATH";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020a4
|
||||
// STRING: LEGO1 0x10101f40
|
||||
const char* g_strPERMIT_NAVIGATE = "PERMIT_NAVIGATE";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020a8
|
||||
// STRING: LEGO1 0x10101f38
|
||||
const char* g_strPTATCAM = "PTATCAM";
|
||||
|
|
|
@ -34,5 +34,8 @@ extern const char* g_strVARIABLE;
|
|||
extern const char* g_strBMP_ISMAP;
|
||||
extern const char* g_strAUTO_CREATE;
|
||||
extern const char* g_strDB_CREATE;
|
||||
extern const char* g_strPERMIT_NAVIGATE;
|
||||
extern const char* g_strPATH;
|
||||
extern const char* g_strCOLLIDEBOX;
|
||||
|
||||
#endif // DEFINE_H
|
||||
|
|
|
@ -32,7 +32,7 @@ public:
|
|||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x5c() override; // vtable+0x5c
|
||||
void VTable0x60() override; // vtable+0x60
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
|
||||
inline void SetUnknown420c(MxEntity* p_entity) { m_unk0x420c = p_entity; }
|
||||
|
|
|
@ -28,16 +28,19 @@ public:
|
|||
return !strcmp(p_name, Ambulance::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 HandleClick() override; // vtable+0xcc
|
||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
void CreateState();
|
||||
void FUN_10036e60();
|
||||
void FUN_10037060();
|
||||
void FUN_10037240();
|
||||
void FUN_10037250();
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10036130
|
||||
// Ambulance::`scalar deleting destructor'
|
||||
|
|
|
@ -24,8 +24,6 @@ public:
|
|||
|
||||
MxResult Serialize(LegoFile* p_legoFile) override; // vtable+0x1c
|
||||
|
||||
inline void SetUnknown0x08(undefined4 p_unk0x08) { m_unk0x08 = p_unk0x08; }
|
||||
|
||||
inline MxU16 GetScore(MxU8 p_id)
|
||||
{
|
||||
switch (p_id) {
|
||||
|
@ -47,7 +45,6 @@ public:
|
|||
// SYNTHETIC: LEGO1 0x100376c0
|
||||
// AmbulanceMissionState::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
undefined4 m_unk0x08; // 0x08
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
MxU16 m_unk0x10; // 0x10
|
||||
|
|
|
@ -23,10 +23,10 @@ public:
|
|||
return !strcmp(p_name, Bike::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
MxU32 HandleClick() override; // vtable+0xcc
|
||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
void FUN_10076b60();
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ public:
|
|||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
undefined4 VTable0x6c(undefined4) override; // vtable+0x6c
|
||||
undefined4 VTable0x70(undefined4) override; // vtable+0x70
|
||||
undefined4 VTable0x74(undefined4) override; // vtable+0x74
|
||||
|
|
|
@ -23,12 +23,12 @@ public:
|
|||
return !strcmp(p_name, DuneBuggy::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 HandleClick() override; // vtable+0xcc
|
||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
void FUN_10068350();
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ public:
|
|||
// FUNCTION: LEGO1 0x10017f10
|
||||
MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
|
||||
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10018040
|
||||
|
@ -44,7 +44,7 @@ public:
|
|||
private:
|
||||
LegoGameState::Area m_destLocation; // 0xf8
|
||||
|
||||
MxLong HandleClick(LegoControlManagerEvent& p_param);
|
||||
MxLong HandleControl(LegoControlManagerEvent& p_param);
|
||||
};
|
||||
|
||||
#endif // ELEVATORBOTTOM_H
|
||||
|
|
|
@ -32,12 +32,12 @@ public:
|
|||
return !strcmp(p_name, GasStation::ClassName()) || LegoWorld::IsA(p_name);
|
||||
}
|
||||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x5c() override; // vtable+0x5c
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
virtual MxLong HandleClick(LegoControlManagerEvent& p_param); // vtable+0x6c
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x5c() override; // vtable+0x5c
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
virtual MxLong HandleControl(LegoControlManagerEvent& p_param); // vtable+0x6c
|
||||
|
||||
inline void PlayAction(MxU32 p_objectId);
|
||||
|
||||
|
|
|
@ -29,14 +29,16 @@ public:
|
|||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
MxU32 HandleClick() override; // vtable+0xcc
|
||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
MxU32 VTable0xd8(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10003210
|
||||
// Helicopter::`scalar deleting destructor'
|
||||
|
||||
void CreateState();
|
||||
|
||||
protected:
|
||||
MxMatrix m_unk0x160; // 0x160
|
||||
MxMatrix m_unk0x1a8; // 0x1a8
|
||||
|
@ -44,9 +46,6 @@ protected:
|
|||
UnknownMx4DPointFloat m_unk0x1f4; // 0x1f4
|
||||
HelicopterState* m_state; // 0x228
|
||||
MxAtomId m_script; // 0x22c
|
||||
|
||||
private:
|
||||
void GetState();
|
||||
};
|
||||
|
||||
#endif // HELICOPTER_H
|
||||
|
|
|
@ -31,7 +31,7 @@ public:
|
|||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100824b0
|
||||
// HistoryBook::`scalar deleting destructor'
|
||||
|
|
|
@ -37,7 +37,7 @@ public:
|
|||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x5c() override; // vtable+0x5c
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
|
||||
inline void PlayAction(MxU32 p_objectId);
|
||||
|
@ -49,7 +49,7 @@ private:
|
|||
MxLong HandleKeyPress(MxS8 p_key);
|
||||
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
|
||||
MxLong HandleButtonDown(LegoControlManagerEvent& p_param);
|
||||
MxBool HandleClick(LegoControlManagerEvent& p_param);
|
||||
MxBool HandleControl(LegoControlManagerEvent& p_param);
|
||||
|
||||
MxS16 m_currentActorId; // 0xf8
|
||||
LegoGameState::Area m_destLocation; // 0xfc
|
||||
|
|
|
@ -67,7 +67,7 @@ public:
|
|||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x5c() override; // vtable+0x5c
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1006ec60
|
||||
|
@ -79,7 +79,7 @@ private:
|
|||
MxLong HandleKeyPress(MxS8 p_key);
|
||||
MxU8 HandleMouseMove(MxS32 p_x, MxS32 p_y);
|
||||
MxU8 HandleButtonUp(MxS32 p_x, MxS32 p_y);
|
||||
MxU8 HandleClick(LegoControlManagerEvent& p_param);
|
||||
MxU8 HandleControl(LegoControlManagerEvent& p_param);
|
||||
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
|
||||
MxLong HandleNotification0(MxNotificationParam& p_param);
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ public:
|
|||
// FUNCTION: LEGO1 0x100377a0
|
||||
MxBool VTable0x5c() override { return TRUE; } // vtable+0x5c
|
||||
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100378d0
|
||||
|
@ -43,7 +43,7 @@ public:
|
|||
private:
|
||||
LegoGameState::Area m_destLocation; // 0xf8
|
||||
|
||||
MxLong HandleClick(LegoControlManagerEvent& p_param);
|
||||
MxLong HandleControl(LegoControlManagerEvent& p_param);
|
||||
};
|
||||
|
||||
#endif // INFOCENTERDOOR_H
|
||||
|
|
|
@ -6,19 +6,20 @@
|
|||
#include "legoworld.h"
|
||||
#include "radio.h"
|
||||
|
||||
class Pizza;
|
||||
class Pizzeria;
|
||||
class TowTrack;
|
||||
class Act1State;
|
||||
class Ambulance;
|
||||
class JukeBoxEntity;
|
||||
class Helicopter;
|
||||
class Bike;
|
||||
class DuneBuggy;
|
||||
class Motocycle;
|
||||
class SkateBoard;
|
||||
class RaceCar;
|
||||
class Helicopter;
|
||||
class Jetski;
|
||||
class Act1State;
|
||||
class JukeBoxEntity;
|
||||
class Motocycle;
|
||||
class MxType19NotificationParam;
|
||||
class Pizza;
|
||||
class Pizzeria;
|
||||
class RaceCar;
|
||||
class SkateBoard;
|
||||
class TowTrack;
|
||||
|
||||
// VTABLE: LEGO1 0x100d6fb8
|
||||
// SIZE 0x140
|
||||
|
@ -57,19 +58,26 @@ public:
|
|||
// FUNCTION: LEGO1 0x10033170
|
||||
void VTable0x60() override {} // vtable+60
|
||||
|
||||
MxBool VTable0x64() override; // vtable+64
|
||||
MxBool Escape() override; // vtable+64
|
||||
void Enable(MxBool p_enable) override; // vtable+68
|
||||
virtual void VTable0x6c(IslePathActor* p_actor); // vtable+6c
|
||||
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 HandleControl(LegoControlManagerEvent& p_param);
|
||||
MxLong HandleType19Notification(MxType19NotificationParam& p_param);
|
||||
MxLong HandleTransitionEnd();
|
||||
void HandleElevatorEndAction();
|
||||
void FUN_10031590();
|
||||
void UpdateGlobe();
|
||||
void FUN_10032620();
|
||||
void FUN_100330e0();
|
||||
void FUN_10033350();
|
||||
void CreateState();
|
||||
void FUN_10032d30(
|
||||
IsleScript::Script p_script,
|
||||
JukeboxScript::Script p_music,
|
||||
|
@ -77,12 +85,6 @@ public:
|
|||
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
|
||||
|
|
|
@ -29,7 +29,7 @@ public:
|
|||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
|
||||
// FUNCTION: LEGO1 0x1000e5f0
|
||||
virtual undefined4 VTable0x68() { return 0; } // vtable+0x68
|
||||
virtual undefined4 HandleClick() { return 0; } // vtable+0x68
|
||||
|
||||
// FUNCTION: LEGO1 0x1000e600
|
||||
virtual undefined4 VTable0x6c() { return 0; } // vtable+0x6c
|
||||
|
@ -49,7 +49,7 @@ public:
|
|||
// FUNCTION: LEGO1 0x1000e650
|
||||
virtual undefined4 VTable0x80(MxParam&) { return 0; } // vtable+0x80
|
||||
|
||||
private:
|
||||
protected:
|
||||
LegoWorld* m_world; // 0x78
|
||||
};
|
||||
|
||||
|
|
|
@ -106,13 +106,13 @@ public:
|
|||
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||
|
||||
// FUNCTION: LEGO1 0x10002e70
|
||||
virtual MxU32 VTable0xcc() { return 0; } // vtable+0xcc
|
||||
virtual MxU32 HandleClick() { return 0; } // vtable+0xcc
|
||||
|
||||
// FUNCTION: LEGO1 0x10002df0
|
||||
virtual MxU32 VTable0xd0() { return 0; } // vtable+0xd0
|
||||
|
||||
// FUNCTION: LEGO1 0x10002e80
|
||||
virtual MxU32 VTable0xd4(LegoControlManagerEvent&) { return 0; } // vtable+0xd4
|
||||
virtual MxU32 HandleControl(LegoControlManagerEvent&) { return 0; } // vtable+0xd4
|
||||
|
||||
// FUNCTION: LEGO1 0x10002e90
|
||||
virtual MxU32 VTable0xd8(LegoEndAnimNotificationParam&) { return 0; } // vtable+0xd8
|
||||
|
@ -128,16 +128,13 @@ public:
|
|||
// SYNTHETIC: LEGO1 0x10002ff0
|
||||
// IslePathActor::`scalar deleting destructor'
|
||||
|
||||
inline void SetWorld(LegoWorld* p_world) { m_world = p_world; }
|
||||
inline LegoWorld* GetWorld() { return m_world; }
|
||||
|
||||
void FUN_1001b660();
|
||||
|
||||
static void RegisterSpawnLocations();
|
||||
|
||||
protected:
|
||||
LegoWorld* m_world; // 0x154
|
||||
IslePathActor* m_unk0x158; // 0x158
|
||||
LegoPathActor* m_unk0x158; // 0x158
|
||||
MxFloat m_unk0x15c; // 0x15c
|
||||
};
|
||||
|
||||
|
|
|
@ -25,11 +25,11 @@ public:
|
|||
return !strcmp(p_name, Jetski::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
MxU32 VTable0xd4(LegoControlManagerEvent&) override; // vtable+0xd4
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 HandleClick() override; // vtable+0xcc
|
||||
MxU32 HandleControl(LegoControlManagerEvent&) override; // vtable+0xd4
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
void FUN_1007e990();
|
||||
|
||||
|
|
|
@ -7,13 +7,20 @@
|
|||
// SIZE 0x144
|
||||
class JetskiRace : public LegoRace {
|
||||
public:
|
||||
// FUNCTION: LEGO1 0x1000daf0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100a8840
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f0530
|
||||
return "JetskiRace";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000daf0
|
||||
// FUNCTION: BETA10 0x100a8810
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000db00
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
@ -22,7 +29,7 @@ public:
|
|||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
undefined4 VTable0x6c(undefined4) override; // vtable+0x6c
|
||||
undefined4 VTable0x70(undefined4) override; // vtable+0x70
|
||||
undefined4 VTable0x74(undefined4) override; // vtable+0x74
|
||||
|
|
|
@ -34,14 +34,14 @@ public:
|
|||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x5c() override; // vtable+0x5c
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1005d810
|
||||
// JukeBox::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
MxBool HandleClick(LegoControlManagerEvent& p_param);
|
||||
MxBool HandleControl(LegoControlManagerEvent& p_param);
|
||||
|
||||
LegoGameState::Area m_destLocation; // 0xf8
|
||||
JukeBoxState* m_state; // 0xfc
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef LEGOUNKNOWN100D5778_H
|
||||
#define LEGOUNKNOWN100D5778_H
|
||||
#ifndef LEGO3DSOUND_H
|
||||
#define LEGO3DSOUND_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxtypes.h"
|
||||
|
@ -10,20 +10,20 @@ class LegoROI;
|
|||
|
||||
// VTABLE: LEGO1 0x100d5778
|
||||
// SIZE 0x30
|
||||
class LegoUnknown100d5778 {
|
||||
class Lego3DSound {
|
||||
public:
|
||||
LegoUnknown100d5778();
|
||||
virtual ~LegoUnknown100d5778();
|
||||
Lego3DSound();
|
||||
virtual ~Lego3DSound();
|
||||
|
||||
void Init();
|
||||
MxResult FUN_100116a0(LPDIRECTSOUND p_dsound, undefined4, undefined4 p_unk0x2c);
|
||||
MxResult Create(LPDIRECTSOUNDBUFFER p_directSoundBuffer, const char*, MxS32 p_volume);
|
||||
void Destroy();
|
||||
undefined4 FUN_100118e0(LPDIRECTSOUNDBUFFER p_dsBuffer);
|
||||
undefined4 FUN_100118e0(LPDIRECTSOUNDBUFFER p_directSoundBuffer);
|
||||
void FUN_10011ca0();
|
||||
MxS32 FUN_10011cf0(undefined4, undefined4);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10011650
|
||||
// LegoUnknown100d5778::`scalar deleting destructor'
|
||||
// Lego3DSound::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined m_unk0x04[4]; // 0x04
|
||||
|
@ -34,7 +34,7 @@ private:
|
|||
MxBool m_unk0x15; // 0x15
|
||||
undefined4 m_unk0x18; // 0x18
|
||||
undefined m_unk0x1c[0x10]; // 0x1c
|
||||
undefined4 m_unk0x2c; // 0x2c
|
||||
MxS32 m_volume; // 0x2c
|
||||
};
|
||||
|
||||
#endif // LEGOUNKNOWN100D5778_H
|
||||
#endif // LEGO3DSOUND_H
|
|
@ -2,20 +2,27 @@
|
|||
#define LEGO3DWAVEPRESENTER_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "legounknown100d5778.h"
|
||||
#include "lego3dsound.h"
|
||||
#include "mxwavepresenter.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d52b0
|
||||
// SIZE 0xa0
|
||||
class Lego3DWavePresenter : public MxWavePresenter {
|
||||
public:
|
||||
// FUNCTION: LEGO1 0x1000d890
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100a8670
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f058c
|
||||
return "Lego3DWavePresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000d890
|
||||
// FUNCTION: BETA10 0x100a8640
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000d8a0
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
@ -31,8 +38,8 @@ public:
|
|||
// Lego3DWavePresenter::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined m_unk0x6c[4]; // 0x6c
|
||||
LegoUnknown100d5778 m_unk0x70; // 0x70
|
||||
undefined m_unk0x6c[4]; // 0x6c
|
||||
Lego3DSound m_sound; // 0x70
|
||||
};
|
||||
|
||||
#endif // LEGO3DWAVEPRESENTER_H
|
||||
|
|
|
@ -14,7 +14,7 @@ public:
|
|||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x5c() override; // vtable+0x5c
|
||||
void VTable0x60() override; // vtable+0x60
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
|
||||
inline void SetUnknown0x1150(undefined4 p_unk0x1150) { m_unk0x1150 = p_unk0x1150; }
|
||||
|
|
|
@ -13,13 +13,20 @@ public:
|
|||
LegoActionControlPresenter() { m_unk0x50 = Extra::ActionType::e_none; }
|
||||
~LegoActionControlPresenter() override { Destroy(TRUE); } // vtable+0x00
|
||||
|
||||
// FUNCTION: LEGO1 0x1000d0e0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100a7840
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f05bc
|
||||
return "LegoActionControlPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000d0e0
|
||||
// FUNCTION: BETA10 0x100a7810
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000d0f0
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -12,13 +12,20 @@ public:
|
|||
// FUNCTION: LEGO1 0x100679c0
|
||||
~LegoActorPresenter() override {}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000cb10
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100a6f10
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f06a4
|
||||
return "LegoActorPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000cb10
|
||||
// FUNCTION: BETA10 0x100a6ee0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000cb20
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -28,7 +28,7 @@ public:
|
|||
// SIZE 0x18
|
||||
struct Character {
|
||||
char* m_name; // 0x00
|
||||
MxBool m_unk0x04; // 0x04
|
||||
MxBool m_inExtras; // 0x04
|
||||
MxS8 m_vehicleId; // 0x05
|
||||
undefined m_unk0x06; // 0x06 (unused?)
|
||||
MxBool m_unk0x07; // 0x07
|
||||
|
@ -108,10 +108,11 @@ public:
|
|||
void FUN_10062770();
|
||||
void PurgeExtra(MxBool p_und);
|
||||
void AddExtra(MxS32 p_location, MxBool p_und);
|
||||
void FUN_10063270(LegoROIList*, LegoAnimPresenter*);
|
||||
void FUN_10063270(LegoROIList* p_list, LegoAnimPresenter* p_presenter);
|
||||
void FUN_10063780(LegoROIList* p_list);
|
||||
MxResult FUN_10064670(Vector3* p_position);
|
||||
MxResult FUN_10064740(Vector3* p_position);
|
||||
MxResult FUN_10064880(const char* p_name, MxS32 p_unk0x0c, MxS32 p_unk0x10);
|
||||
|
||||
static void configureLegoAnimationManager(MxS32 p_legoAnimationManagerConfig);
|
||||
|
||||
|
@ -150,9 +151,12 @@ private:
|
|||
void FUN_10062580(AnimInfo& p_info);
|
||||
MxBool FUN_10062650(Vector3& p_position, float p_und, LegoROI* p_roi);
|
||||
MxBool FUN_10062710(AnimInfo& p_info);
|
||||
MxBool FUN_10062e20(LegoROI* p_roi, LegoAnimPresenter* p_presenter);
|
||||
void FUN_10063950(LegoROI* p_roi);
|
||||
void FUN_10063aa0();
|
||||
MxBool FUN_10063b90(LegoWorld* p_world, LegoExtraActor* p_actor, MxU8 p_unk0x14, MxU32 p_characterId);
|
||||
MxBool FUN_10063b90(LegoWorld* p_world, LegoExtraActor* p_actor, MxU8 p_mood, MxU32 p_characterId);
|
||||
void FUN_10063d10();
|
||||
void FUN_10063e40(LegoAnimPresenter* p_presenter);
|
||||
MxBool FUN_10063fb0(LegoLocation::Boundary* p_boundary, LegoWorld* p_world);
|
||||
MxBool FUN_10064010(LegoPathBoundary* p_boundary, LegoUnknown100db7f4* p_edge, float p_destScale);
|
||||
MxBool FUN_10064120(LegoLocation::Boundary* p_boundary, MxBool p_bool1, MxBool p_bool2);
|
||||
|
@ -169,7 +173,7 @@ private:
|
|||
MxS32 p_unk0x10,
|
||||
float p_speed
|
||||
);
|
||||
void FUN_100648f0(LegoTranInfo*, MxLong);
|
||||
void FUN_100648f0(LegoTranInfo* p_tranInfo, MxLong p_unk0x404);
|
||||
void FUN_10064b50(MxLong p_time);
|
||||
|
||||
MxS32 m_scriptIndex; // 0x08
|
||||
|
|
|
@ -29,13 +29,20 @@ public:
|
|||
|
||||
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||
|
||||
// FUNCTION: LEGO1 0x1004a950
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x1004d840
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f046c
|
||||
return "LegoAnimMMPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1004a950
|
||||
// FUNCTION: BETA10 0x1004d810
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1004a960
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -41,34 +41,41 @@ public:
|
|||
LegoAnimPresenter();
|
||||
~LegoAnimPresenter() override;
|
||||
|
||||
// FUNCTION: LEGO1 0x10068530
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x10055300
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f071c
|
||||
return "LegoAnimPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10068530
|
||||
// FUNCTION: BETA10 0x100552d0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10068540
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
return !strcmp(p_name, LegoAnimPresenter::ClassName()) || MxVideoPresenter::IsA(p_name);
|
||||
}
|
||||
|
||||
void ReadyTickle() override; // vtable+0x18
|
||||
void StartingTickle() override; // vtable+0x1c
|
||||
void StreamingTickle() override; // vtable+0x20
|
||||
void DoneTickle() override; // vtable+0x2c
|
||||
void ParseExtra() override; // vtable+0x30
|
||||
MxResult AddToManager() override; // vtable+0x34
|
||||
void Destroy() override; // vtable+0x38
|
||||
MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
|
||||
void EndAction() override; // vtable+0x40
|
||||
void PutFrame() override; // vtable+0x6c
|
||||
virtual MxResult CreateAnim(MxStreamChunk* p_chunk); // vtable+0x88
|
||||
virtual void VTable0x8c(); // vtable+0x8c
|
||||
virtual void VTable0x90(); // vtable+0x90
|
||||
virtual MxU32 VTable0x94(Vector3& p_vec1, Vector3& p_vec2, float p_f1, float p_f2, Vector3& p_vec3); // vtable+0x94
|
||||
virtual MxResult VTable0x98(LegoPathBoundary* p_boundary); // vtable+0x98
|
||||
void ReadyTickle() override; // vtable+0x18
|
||||
void StartingTickle() override; // vtable+0x1c
|
||||
void StreamingTickle() override; // vtable+0x20
|
||||
void DoneTickle() override; // vtable+0x2c
|
||||
void ParseExtra() override; // vtable+0x30
|
||||
MxResult AddToManager() override; // vtable+0x34
|
||||
void Destroy() override; // vtable+0x38
|
||||
MxResult StartAction(MxStreamController* p_controller, MxDSAction* p_action) override; // vtable+0x3c
|
||||
void EndAction() override; // vtable+0x40
|
||||
void PutFrame() override; // vtable+0x6c
|
||||
virtual MxResult CreateAnim(MxStreamChunk* p_chunk); // vtable+0x88
|
||||
virtual void VTable0x8c(); // vtable+0x8c
|
||||
virtual void VTable0x90(); // vtable+0x90
|
||||
virtual MxU32 VTable0x94(Vector3& p_v1, Vector3& p_v2, float p_f1, float p_f2, Vector3& p_v3); // vtable+0x94
|
||||
virtual MxResult VTable0x98(LegoPathBoundary* p_boundary); // vtable+0x98
|
||||
|
||||
// FUNCTION: LEGO1 0x1000c990
|
||||
virtual LegoROI** GetROIMap(MxU32& p_roiMapSize)
|
||||
|
@ -81,8 +88,13 @@ public:
|
|||
|
||||
MxResult FUN_1006afc0(MxMatrix*& p_matrix, float p_und);
|
||||
MxResult FUN_1006b140(LegoROI* p_roi);
|
||||
void FUN_1006c7a0();
|
||||
const char* GetActionObjectName();
|
||||
|
||||
inline void SetCurrentWorld(LegoWorld* p_currentWorld) { m_currentWorld = p_currentWorld; }
|
||||
inline void SetUnknown0x0cTo1() { m_unk0x9c = 1; }
|
||||
inline void SetUnknown0xa0(MxMatrix* p_unk0xa0) { m_unk0xa0 = p_unk0xa0; }
|
||||
|
||||
inline LegoAnim* GetAnimation() { return m_anim; }
|
||||
|
||||
protected:
|
||||
|
@ -124,9 +136,11 @@ protected:
|
|||
undefined m_unk0x97; // 0x97
|
||||
LegoAnimSubstMap* m_substMap; // 0x98
|
||||
MxS16 m_unk0x9c; // 0x9c
|
||||
undefined4* m_unk0xa0; // 0xa0
|
||||
float m_unk0xa4; // 0xa4
|
||||
Mx3DPointFloat m_unk0xa8; // 0xa8
|
||||
MxMatrix* m_unk0xa0; // 0xa0
|
||||
|
||||
public:
|
||||
float m_unk0xa4; // 0xa4
|
||||
Mx3DPointFloat m_unk0xa8; // 0xa8
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define LEGOCACHSOUND_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "legounknown100d5778.h"
|
||||
#include "lego3dsound.h"
|
||||
#include "mxcore.h"
|
||||
#include "mxstring.h"
|
||||
|
||||
|
@ -47,7 +47,7 @@ private:
|
|||
|
||||
LPDIRECTSOUNDBUFFER m_dsBuffer; // 0x08
|
||||
undefined m_unk0xc[4]; // 0x0c
|
||||
LegoUnknown100d5778 m_unk0x10; // 0x10
|
||||
Lego3DSound m_unk0x10; // 0x10
|
||||
undefined* m_unk0x40; // 0x40
|
||||
undefined4 m_unk0x44; // 0x44
|
||||
MxString m_string0x48; // 0x48
|
||||
|
|
|
@ -36,8 +36,8 @@ public:
|
|||
virtual MxResult Create(); // vtable+0x44
|
||||
|
||||
void SetWorldTransform(const Vector3& p_at, const Vector3& p_dir, const Vector3& p_up);
|
||||
void FUN_10012290(float);
|
||||
void FUN_10012320(MxFloat);
|
||||
void FUN_10012290(float p_angle);
|
||||
void FUN_10012320(float p_angle);
|
||||
void FUN_100123e0(const Matrix4& p_transform, MxU32 p_und);
|
||||
Mx3DPointFloat GetWorldUp();
|
||||
Mx3DPointFloat GetWorldLocation();
|
||||
|
|
|
@ -29,7 +29,7 @@ public:
|
|||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x5c() override; // vtable+0x5c
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10022a60
|
||||
|
|
|
@ -11,13 +11,20 @@ public:
|
|||
LegoCarBuildAnimPresenter();
|
||||
~LegoCarBuildAnimPresenter() override; // vtable+0x00
|
||||
|
||||
// FUNCTION: LEGO1 0x10078510
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x10073290
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f05ec
|
||||
return "LegoCarBuildAnimPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10078510
|
||||
// FUNCTION: BETA10 0x10073260
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10078520
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -71,7 +71,7 @@ public:
|
|||
LegoCharacterInfo* GetInfo(LegoROI* p_roi);
|
||||
MxBool SwitchHat(LegoROI* p_roi);
|
||||
MxU32 FUN_10085140(LegoROI* p_roi, MxBool p_und);
|
||||
MxU8 FUN_10085180(LegoROI* p_roi);
|
||||
MxU8 GetMood(LegoROI* p_roi);
|
||||
LegoROI* FUN_10085210(const char* p_name, const char* p_lodName, MxBool p_createEntity);
|
||||
LegoROI* FUN_10085a80(const char* p_name, const char* p_lodName, MxBool p_createEntity);
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ struct LegoCharacterInfo {
|
|||
LegoExtraActor* m_actor; // 0x08
|
||||
MxS32 m_unk0x0c; // 0x0c
|
||||
MxS32 m_unk0x10; // 0x10
|
||||
MxU8 m_unk0x14; // 0x14
|
||||
MxU8 m_mood; // 0x14
|
||||
Part m_parts[10]; // 0x18
|
||||
};
|
||||
|
||||
|
|
|
@ -46,13 +46,20 @@ public:
|
|||
|
||||
MxResult Tickle() override; // vtable+0x08
|
||||
|
||||
// FUNCTION: LEGO1 0x10028cb0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x1008af70
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f31b8
|
||||
return "LegoControlManager";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10028cb0
|
||||
// FUNCTION: BETA10 0x1008af40
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10028cc0
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
@ -63,7 +70,7 @@ public:
|
|||
void Register(MxCore* p_listener);
|
||||
void Unregister(MxCore* p_listener);
|
||||
MxBool FUN_10029210(LegoEventNotificationParam& p_param, MxPresenter* p_presenter);
|
||||
void FUN_100293c0(undefined4, const char*, undefined2);
|
||||
void FUN_100293c0(MxU32 p_objectId, const char* p_atom, MxS16 p_unk0x4e);
|
||||
MxControlPresenter* FUN_100294e0(MxS32 p_x, MxS32 p_y);
|
||||
MxBool FUN_10029630();
|
||||
MxBool FUN_10029750();
|
||||
|
|
|
@ -13,13 +13,20 @@ public:
|
|||
LegoEntityPresenter();
|
||||
~LegoEntityPresenter() override; // vtable+0x00
|
||||
|
||||
// FUNCTION: LEGO1 0x100534b0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x10080780
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f06b8
|
||||
return "LegoEntityPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100534b0
|
||||
// FUNCTION: BETA10 0x10080750
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100534c0
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -10,13 +10,20 @@ class LegoFlcTexturePresenter : public MxFlcPresenter {
|
|||
public:
|
||||
LegoFlcTexturePresenter();
|
||||
|
||||
// FUNCTION: LEGO1 0x1005def0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100837e0
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f0634
|
||||
return "LegoFlcTexturePresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1005def0
|
||||
// FUNCTION: BETA10 0x100837b0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
void StartingTickle() override; // vtable+0x1c
|
||||
void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68
|
||||
void PutFrame() override; // vtable+0x6c
|
||||
|
|
|
@ -25,13 +25,20 @@ public:
|
|||
LegoHideAnimPresenter();
|
||||
~LegoHideAnimPresenter() override;
|
||||
|
||||
// FUNCTION: LEGO1 0x1006d880
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x1005d4a0
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f06cc
|
||||
return "LegoHideAnimPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1006d880
|
||||
// FUNCTION: BETA10 0x1005d470
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1006d890
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -13,13 +13,20 @@ public:
|
|||
LegoLoadCacheSoundPresenter();
|
||||
~LegoLoadCacheSoundPresenter() override;
|
||||
|
||||
// FUNCTION: LEGO1 0x10018450
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x1008cf90
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f05a0
|
||||
return "LegoLoadCacheSoundPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10018450
|
||||
// FUNCTION: BETA10 0x1008cf60
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
void ReadyTickle() override; // vtable+0x18
|
||||
void StreamingTickle() override; // vtable+0x20
|
||||
void DoneTickle() override; // vtable+0x2c
|
||||
|
|
|
@ -11,13 +11,20 @@ public:
|
|||
LegoLocomotionAnimPresenter();
|
||||
~LegoLocomotionAnimPresenter() override;
|
||||
|
||||
// FUNCTION: LEGO1 0x1006ce50
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x1005c4e0
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f06e4
|
||||
return "LegoLocomotionAnimPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1006ce50
|
||||
// FUNCTION: BETA10 0x1005c4b0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1006ce60
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -7,13 +7,20 @@
|
|||
// SIZE 0xc0
|
||||
class LegoLoopingAnimPresenter : public LegoAnimPresenter {
|
||||
public:
|
||||
// FUNCTION: LEGO1 0x1000c9a0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x1005c6f0
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f0700
|
||||
return "LegoLoopingAnimPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000c9a0
|
||||
// FUNCTION: BETA10 0x1005c6c0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000c9b0
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#include "mxomni.h"
|
||||
|
||||
class Isle;
|
||||
class IslePathActor;
|
||||
class LegoAnimationManager;
|
||||
class LegoBuildingManager;
|
||||
class LegoCharacterManager;
|
||||
|
@ -14,6 +13,7 @@ class LegoEntity;
|
|||
class LegoGameState;
|
||||
class LegoInputManager;
|
||||
class LegoNavController;
|
||||
class LegoPathActor;
|
||||
class LegoPathBoundary;
|
||||
class LegoPlantManager;
|
||||
class LegoROI;
|
||||
|
@ -127,7 +127,7 @@ public:
|
|||
ViewLODListManager* GetViewLODListManager() { return m_viewLODListManager; }
|
||||
LegoWorld* GetCurrentWorld() { return m_currentWorld; }
|
||||
LegoNavController* GetNavController() { return m_navController; }
|
||||
IslePathActor* GetCurrentActor() { return m_currentActor; }
|
||||
LegoPathActor* GetCurrentActor() { return m_currentActor; }
|
||||
LegoPlantManager* GetLegoPlantManager() { return m_plantManager; }
|
||||
LegoAnimationManager* GetAnimationManager() { return m_animationManager; }
|
||||
LegoBuildingManager* GetLegoBuildingManager() { return m_buildingManager; }
|
||||
|
@ -139,7 +139,7 @@ public:
|
|||
LegoWorldList* GetWorldList() { return m_worldList; }
|
||||
|
||||
inline void SetNavController(LegoNavController* p_navController) { m_navController = p_navController; }
|
||||
inline void SetCurrentActor(IslePathActor* p_currentActor) { m_currentActor = p_currentActor; }
|
||||
inline void SetCurrentActor(LegoPathActor* p_currentActor) { m_currentActor = p_currentActor; }
|
||||
inline void SetCurrentWorld(LegoWorld* p_currentWorld) { m_currentWorld = p_currentWorld; }
|
||||
inline void SetExit(MxBool p_exit) { m_exit = p_exit; }
|
||||
inline MxResult StartActionIfUnknown0x13c(MxDSAction& p_dsAction)
|
||||
|
@ -162,7 +162,7 @@ private:
|
|||
LegoWorld* m_currentWorld; // 0x7c
|
||||
MxBool m_exit; // 0x80
|
||||
LegoNavController* m_navController; // 0x84
|
||||
IslePathActor* m_currentActor; // 0x88
|
||||
LegoPathActor* m_currentActor; // 0x88
|
||||
LegoCharacterManager* m_characterManager; // 0x8c
|
||||
LegoPlantManager* m_plantManager; // 0x90
|
||||
LegoAnimationManager* m_animationManager; // 0x94
|
||||
|
|
|
@ -1,10 +1,18 @@
|
|||
#ifndef LEGOMETERPRESENTER_H
|
||||
#define LEGOMETERPRESENTER_H
|
||||
|
||||
#include "mxrect16.h"
|
||||
#include "mxstillpresenter.h"
|
||||
#include "mxstring.h"
|
||||
|
||||
// SIZE 0x08
|
||||
struct MeterRect : public MxRect16 {
|
||||
// FUNCTION: BETA10 0x10097eb0
|
||||
MeterRect() {}
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d7ac8
|
||||
// VTABLE: BETA10 0x101bca68
|
||||
// SIZE 0x94
|
||||
class LegoMeterPresenter : public MxStillPresenter {
|
||||
public:
|
||||
|
@ -18,17 +26,21 @@ public:
|
|||
void ParseExtra() override; // vtable+0x30
|
||||
|
||||
private:
|
||||
void FUN_10043a50();
|
||||
enum MeterLayout {
|
||||
e_leftToRight = 0,
|
||||
e_rightToLeft,
|
||||
e_bottomToTop,
|
||||
e_topToBottom
|
||||
};
|
||||
|
||||
MxU8* m_unk0x6c; // 0x6c
|
||||
MxU16 m_type; // 0x70
|
||||
MxString m_variable; // 0x74
|
||||
MxFloat m_unk0x84; // 0x84
|
||||
MxU16 m_unk0x88; // 0x88
|
||||
MxU16 m_unk0x8a; // 0x8a
|
||||
MxU16 m_unk0x8c; // 0x8c
|
||||
MxU16 m_unk0x8e; // 0x8e
|
||||
MxU16 m_layout; // 0x90
|
||||
void DrawMeter();
|
||||
|
||||
MxU8* m_meterPixels; // 0x6c
|
||||
MxU16 m_fillColor; // 0x70
|
||||
MxString m_variable; // 0x74
|
||||
MxFloat m_curPercent; // 0x84
|
||||
MeterRect m_meterRect; // 0x88
|
||||
MxS16 m_layout; // 0x90
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10043760
|
||||
|
|
|
@ -19,13 +19,20 @@ public:
|
|||
|
||||
static void configureLegoModelPresenter(MxS32 p_modelPresenterConfig);
|
||||
|
||||
// FUNCTION: LEGO1 0x1000ccb0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100a7180
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f067c
|
||||
return "LegoModelPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000ccb0
|
||||
// FUNCTION: BETA10 0x100a7150
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000ccc0
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -13,13 +13,20 @@ public:
|
|||
LegoPalettePresenter();
|
||||
~LegoPalettePresenter() override; // vtable+0x00
|
||||
|
||||
// FUNCTION: LEGO1 0x10079f30
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100ab250
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f061c
|
||||
return "LegoPalettePresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10079f30
|
||||
// FUNCTION: BETA10 0x100ab220
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10079f40
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -13,13 +13,20 @@ public:
|
|||
// FUNCTION: LEGO1 0x10067300
|
||||
~LegoPartPresenter() override { Destroy(TRUE); }
|
||||
|
||||
// FUNCTION: LEGO1 0x1000cf70
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100a75d0
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f05d8
|
||||
return "LegoPartPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000cf70
|
||||
// FUNCTION: BETA10 0x100a75a0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000cf80
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -126,6 +126,7 @@ public:
|
|||
inline LegoPathBoundary* GetBoundary() { return m_boundary; }
|
||||
inline MxU32 GetState() { return m_state; }
|
||||
inline LegoPathController* GetController() { return m_controller; }
|
||||
inline MxBool GetCollideBox() { return m_collideBox; }
|
||||
|
||||
inline void SetBoundary(LegoPathBoundary* p_boundary) { m_boundary = p_boundary; }
|
||||
inline void SetState(MxU32 p_state) { m_state = p_state; }
|
||||
|
@ -155,7 +156,7 @@ protected:
|
|||
MxU32 m_state; // 0xdc
|
||||
LegoUnknown100db7f4* m_destEdge; // 0xe0
|
||||
MxFloat m_unk0xe4; // 0xe4
|
||||
undefined m_unk0xe8; // 0xe8
|
||||
MxBool m_collideBox; // 0xe8
|
||||
undefined m_unk0xe9; // 0xe9
|
||||
MxBool m_userNavFlag; // 0xea
|
||||
MxMatrix m_unk0xec; // 0xec
|
||||
|
|
|
@ -131,6 +131,39 @@ private:
|
|||
// TEMPLATE: LEGO1 0x100573e0
|
||||
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::begin
|
||||
|
||||
// TEMPLATE: LEGO1 0x100580c0
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x10058330
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::iterator::_Dec
|
||||
|
||||
// TEMPLATE: LEGO1 0x10058380
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Buynode
|
||||
|
||||
// TEMPLATE: LEGO1 0x100583a0
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x10058620
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Lrotate
|
||||
|
||||
// TEMPLATE: LEGO1 0x10058680
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Rrotate
|
||||
|
||||
// TEMPLATE: LEGO1 0x10058820
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x100588e0
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::equal_range
|
||||
|
||||
// TEMPLATE: LEGO1 0x10058950
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Lbound
|
||||
|
||||
// TEMPLATE: LEGO1 0x10058980
|
||||
// _Construct
|
||||
|
||||
// TEMPLATE: LEGO1 0x100589a0
|
||||
// _Distance
|
||||
|
||||
// GLOBAL: LEGO1 0x100f11a4
|
||||
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Nil
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@ public:
|
|||
virtual MxResult Create(MxU8* p_data, const Vector3& p_location, const MxAtomId& p_trigger); // vtable+0x14
|
||||
virtual void Destroy(); // vtable+0x18
|
||||
|
||||
MxResult FUN_10045c20(
|
||||
MxResult PlaceActor(
|
||||
LegoPathActor* p_actor,
|
||||
const char* p_name,
|
||||
MxS32 p_src,
|
||||
|
@ -89,13 +89,13 @@ public:
|
|||
MxS32 p_dest,
|
||||
float p_destScale
|
||||
);
|
||||
MxResult FUN_10046050(
|
||||
MxResult PlaceActor(
|
||||
LegoPathActor* p_actor,
|
||||
LegoAnimPresenter* p_presenter,
|
||||
Vector3& p_position,
|
||||
Vector3& p_direction
|
||||
);
|
||||
MxResult AddActor(LegoPathActor* p_actor);
|
||||
MxResult PlaceActor(LegoPathActor* p_actor);
|
||||
MxResult RemoveActor(LegoPathActor* p_actor);
|
||||
void FUN_100468f0(LegoAnimPresenter* p_presenter);
|
||||
void FUN_10046930(LegoAnimPresenter* p_presenter);
|
||||
|
|
|
@ -11,13 +11,20 @@ public:
|
|||
LegoPathPresenter();
|
||||
~LegoPathPresenter() override;
|
||||
|
||||
// FUNCTION: LEGO1 0x100449a0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100c24d0
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f0690
|
||||
return "LegoPathPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100449a0
|
||||
// FUNCTION: BETA10 0x100c24a0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100449b0
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -15,13 +15,20 @@ public:
|
|||
LegoPhonemePresenter();
|
||||
~LegoPhonemePresenter() override; // vtable+0x00
|
||||
|
||||
// FUNCTION: LEGO1 0x1004e310
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100c4220
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f064c
|
||||
return "LegoPhonemePresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1004e310
|
||||
// FUNCTION: BETA10 0x100c41f0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
void StartingTickle() override; // vtable+0x1c
|
||||
void EndAction() override; // vtable+0x40
|
||||
void LoadFrame(MxStreamChunk* p_chunk) override; // vtable+0x68
|
||||
|
|
|
@ -15,13 +15,20 @@ public:
|
|||
|
||||
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||
|
||||
// FUNCTION: LEGO1 0x10015ba0
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100a8970
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f07c4
|
||||
return "LegoRace";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10015ba0
|
||||
// FUNCTION: BETA10 0x100a8940
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10015bb0
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
@ -30,7 +37,7 @@ public:
|
|||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
MxBool VTable0x5c() override; // vtable+0x5c
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
virtual undefined4 VTable0x6c(undefined4) = 0; // vtable+0x6c
|
||||
virtual undefined4 VTable0x70(undefined4); // vtable+0x70
|
||||
|
|
|
@ -11,13 +11,20 @@ public:
|
|||
LegoTexturePresenter() : m_textures(NULL) {}
|
||||
~LegoTexturePresenter() override;
|
||||
|
||||
// FUNCTION: LEGO1 0x1000ce50
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100a73c0
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f0664
|
||||
return "LegoTexturePresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000ce50
|
||||
// FUNCTION: BETA10 0x100a7390
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1000ce60
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "mxvariable.h"
|
||||
|
||||
extern const char* g_varAMBULFUEL;
|
||||
extern const char* g_varTOWFUEL;
|
||||
extern const char* g_varVISIBILITY;
|
||||
extern const char* g_varCAMERALOCATION;
|
||||
extern const char* g_varCURSOR;
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
#include "mxpresenterlist.h"
|
||||
#include "roi/legoroi.h"
|
||||
|
||||
class IslePathActor;
|
||||
class LegoCameraController;
|
||||
class LegoPathBoundary;
|
||||
class LegoHideAnimPresenter;
|
||||
|
@ -60,7 +59,7 @@ public:
|
|||
// FUNCTION: LEGO1 0x100010a0
|
||||
virtual void VTable0x60() {} // vtable+0x60
|
||||
|
||||
virtual MxBool VTable0x64(); // vtable+0x64
|
||||
virtual MxBool Escape(); // vtable+0x64
|
||||
virtual void Enable(MxBool p_enable); // vtable+0x68
|
||||
|
||||
MxBool PresentersPending();
|
||||
|
@ -73,14 +72,14 @@ public:
|
|||
MxS32 p_dest,
|
||||
float p_destScale
|
||||
);
|
||||
MxResult AddPathActor(LegoPathActor* p_actor);
|
||||
MxResult FUN_1001fb70(
|
||||
MxResult PlaceActor(LegoPathActor* p_actor);
|
||||
MxResult PlaceActor(
|
||||
LegoPathActor* p_actor,
|
||||
LegoAnimPresenter* p_presenter,
|
||||
Vector3& p_position,
|
||||
Vector3& p_direction
|
||||
);
|
||||
void RemovePathActor(LegoPathActor* p_actor);
|
||||
void RemoveActor(LegoPathActor* p_actor);
|
||||
void FUN_1001fda0(LegoAnimPresenter* p_presenter);
|
||||
void FUN_1001fe90(LegoAnimPresenter* p_presenter);
|
||||
LegoPathBoundary* FindPathBoundary(const char* p_name);
|
||||
|
|
|
@ -18,13 +18,20 @@ public:
|
|||
|
||||
static void configureLegoWorldPresenter(MxS32 p_legoWorldPresenterQuality);
|
||||
|
||||
// FUNCTION: LEGO1 0x10066630
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
// FUNCTION: BETA10 0x100e41c0
|
||||
static const char* HandlerClassName()
|
||||
{
|
||||
// STRING: LEGO1 0x100f0608
|
||||
return "LegoWorldPresenter";
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10066630
|
||||
// FUNCTION: BETA10 0x100e4190
|
||||
inline const char* ClassName() const override // vtable+0x0c
|
||||
{
|
||||
return HandlerClassName();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10066640
|
||||
inline MxBool IsA(const char* p_name) const override // vtable+0x10
|
||||
{
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
#include "lego/legoomni/include/actions/actionsfwd.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
class IslePathActor;
|
||||
class LegoAnimationManager;
|
||||
class LegoBuildingManager;
|
||||
class LegoCharacterManager;
|
||||
|
@ -16,6 +15,7 @@ class LegoGameState;
|
|||
class LegoInputManager;
|
||||
class LegoNavController;
|
||||
class LegoOmni;
|
||||
class LegoPathActor;
|
||||
class LegoPlantManager;
|
||||
class LegoROI;
|
||||
class LegoSoundManager;
|
||||
|
@ -40,7 +40,7 @@ LegoControlManager* ControlManager();
|
|||
LegoGameState* GameState();
|
||||
LegoAnimationManager* AnimationManager();
|
||||
LegoNavController* NavController();
|
||||
IslePathActor* CurrentActor();
|
||||
LegoPathActor* CurrentActor();
|
||||
LegoWorld* CurrentWorld();
|
||||
LegoCharacterManager* CharacterManager();
|
||||
ViewManager* GetViewManager();
|
||||
|
@ -51,7 +51,7 @@ ViewLODListManager* GetViewLODListManager();
|
|||
void FUN_10015820(MxBool p_disable, MxU16 p_flags);
|
||||
LegoROI* FindROI(const char* p_name);
|
||||
void SetROIVisible(const char* p_name, MxBool p_visible);
|
||||
void SetCurrentActor(IslePathActor* p_currentActor);
|
||||
void SetCurrentActor(LegoPathActor* p_currentActor);
|
||||
MxResult StartActionIfUnknown0x13c(MxDSAction& p_dsAction);
|
||||
void DeleteAction();
|
||||
LegoWorld* FindWorld(const MxAtomId& p_atom, MxS32 p_entityid);
|
||||
|
|
|
@ -23,12 +23,12 @@ public:
|
|||
return !strcmp(p_name, Motocycle::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 HandleClick() override; // vtable+0xcc
|
||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
MxU32 VTable0xdc(MxType19NotificationParam&) override; // vtable+0xdc
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
void FUN_10035e10();
|
||||
|
||||
|
|
|
@ -37,11 +37,13 @@ public:
|
|||
void Enable(MxBool p_enable) override; // vtable+0x54
|
||||
MxBool VTable0x64(undefined4 p_undefined) override; // vtable+0x64
|
||||
virtual void VTable0x68(MxBool p_unk0x50); // vtable+0x68
|
||||
virtual void VTable0x6c(MxS16); // vtable+0x6c
|
||||
virtual void VTable0x6c(MxS16 p_unk0x4e); // vtable+0x6c
|
||||
|
||||
MxBool FUN_10044480(LegoControlManagerEvent* p_event, MxPresenter* p_presenter);
|
||||
MxBool FUN_10044270(MxS32 p_x, MxS32 p_y, MxVideoPresenter* p_presenter);
|
||||
|
||||
inline MxS16 GetUnknown0x4e() { return m_unk0x4e; }
|
||||
|
||||
private:
|
||||
undefined2 m_unk0x4c; // 0x4c
|
||||
MxS16 m_unk0x4e; // 0x4e
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
#include "decomp.h"
|
||||
#include "isleactor.h"
|
||||
|
||||
class Act1State;
|
||||
class PizzaMissionState;
|
||||
class SkateBoard;
|
||||
|
||||
// VTABLE: LEGO1 0x100d7380
|
||||
|
@ -29,10 +31,12 @@ public:
|
|||
}
|
||||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
undefined4 VTable0x68() override; // vtable+0x68
|
||||
undefined4 HandleClick() override; // vtable+0x68
|
||||
undefined4 HandleEndAction(MxEndActionNotificationParam&) override; // vtable+0x74
|
||||
undefined4 VTable0x80(MxParam&) override; // vtable+0x80
|
||||
|
||||
void CreateState();
|
||||
void FUN_10038220(MxU32 p_objectId);
|
||||
void FUN_100382b0();
|
||||
void FUN_10038380();
|
||||
|
||||
|
@ -42,14 +46,14 @@ public:
|
|||
// Pizza::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
undefined4 m_unk0x7c; // 0x7c
|
||||
undefined4 m_unk0x80; // 0x80
|
||||
SkateBoard* m_skateboard; // 0x84
|
||||
undefined4 m_unk0x88; // 0x88
|
||||
undefined4 m_unk0x8c; // 0x8c
|
||||
undefined4 m_unk0x90; // 0x90
|
||||
undefined4 m_unk0x94; // 0x94
|
||||
undefined m_unk0x98; // 0x98
|
||||
PizzaMissionState* m_state; // 0x7c
|
||||
undefined4 m_unk0x80; // 0x80
|
||||
SkateBoard* m_skateboard; // 0x84
|
||||
Act1State* m_act1state; // 0x88
|
||||
undefined4 m_unk0x8c; // 0x8c
|
||||
undefined4 m_unk0x90; // 0x90
|
||||
undefined4 m_unk0x94; // 0x94
|
||||
undefined m_unk0x98; // 0x98
|
||||
};
|
||||
|
||||
#endif // PIZZA_H
|
||||
|
|
|
@ -37,10 +37,8 @@ public:
|
|||
// SYNTHETIC: LEGO1 0x10039350
|
||||
// PizzaMissionState::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
PizzaMissionStateEntry* GetState(MxU8 p_id);
|
||||
|
||||
protected:
|
||||
undefined4 m_unk0x08; // 0x08
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
PizzaMissionStateEntry m_state[5]; // 0x10
|
||||
|
|
|
@ -27,14 +27,14 @@ public:
|
|||
}
|
||||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
undefined4 VTable0x68() override; // vtable+0x68
|
||||
undefined4 HandleClick() override; // vtable+0x68
|
||||
|
||||
void CreateState();
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000e8d0
|
||||
// Pizzeria::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void Init();
|
||||
|
||||
PizzeriaState* m_pizzeriaState; // 0x7c
|
||||
PizzaMissionState* m_pizzaMissionState; // 0x80
|
||||
};
|
||||
|
|
|
@ -36,6 +36,8 @@ public:
|
|||
// SYNTHETIC: LEGO1 0x10017ce0
|
||||
// PizzeriaState::`scalar deleting destructor'
|
||||
|
||||
MxU32 FUN_10017d70();
|
||||
|
||||
private:
|
||||
Playlist m_unk0x08[5]; // 0x08
|
||||
PizzeriaStateStruct m_unk0x44; // 0x44
|
||||
|
|
|
@ -36,14 +36,14 @@ public:
|
|||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x5c() override; // vtable+0x5c
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1005e300
|
||||
// Police::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
MxLong HandleClick(LegoControlManagerEvent& p_param);
|
||||
MxLong HandleControl(LegoControlManagerEvent& p_param);
|
||||
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
|
||||
MxLong HandleKeyPress(LegoEventNotificationParam& p_param);
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ public:
|
|||
}
|
||||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
MxU32 HandleClick() override; // vtable+0xcc
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10028400
|
||||
// RaceCar::`scalar deleting destructor'
|
||||
|
|
|
@ -30,6 +30,7 @@ public:
|
|||
}
|
||||
|
||||
void Initialize(MxBool p_und);
|
||||
void CreateState();
|
||||
void Play();
|
||||
void Stop();
|
||||
|
||||
|
@ -39,14 +40,12 @@ public:
|
|||
// Radio::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void CreateRadioState();
|
||||
|
||||
RadioState* m_state; // 0x08
|
||||
MxBool m_unk0x0c; // 0x0c
|
||||
MxBool m_audioEnabled; // 0x0d
|
||||
|
||||
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
|
||||
MxLong HandleClick(LegoControlManagerEvent& p_param);
|
||||
MxLong HandleControl(LegoControlManagerEvent& p_param);
|
||||
};
|
||||
|
||||
#endif // RADIO_H
|
||||
|
|
|
@ -34,7 +34,7 @@ public:
|
|||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
|
||||
inline void PlayAction(MxU32 p_objectId);
|
||||
|
@ -64,7 +64,7 @@ private:
|
|||
|
||||
MxLong HandleEndAction(MxEndActionNotificationParam& p_param);
|
||||
MxLong HandleKeyPress(MxU8 p_key);
|
||||
MxLong HandleClick(LegoControlManagerEvent& p_param);
|
||||
MxLong HandleControl(LegoControlManagerEvent& p_param);
|
||||
MxLong HandleNotification19(MxParam& p_param);
|
||||
void FUN_100775c0(MxS16 p_playerIndex);
|
||||
void WriteInfocenterLetters(MxS16);
|
||||
|
|
|
@ -35,7 +35,7 @@ public:
|
|||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void ReadyWorld() override; // vtable+0x50
|
||||
MxBool VTable0x5c() override; // vtable+0x5c
|
||||
MxBool VTable0x64() override; // vtable+0x64
|
||||
MxBool Escape() override; // vtable+0x64
|
||||
void Enable(MxBool p_enable) override; // vtable+0x68
|
||||
|
||||
void Paint();
|
||||
|
|
|
@ -26,11 +26,13 @@ public:
|
|||
return !strcmp(p_name, SkateBoard::ClassName()) || IslePathActor::IsA(p_name);
|
||||
}
|
||||
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
MxU32 VTable0xd0() override; // vtable+0xd0
|
||||
MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
MxU32 HandleClick() override; // vtable+0xcc
|
||||
MxU32 VTable0xd0() override; // vtable+0xd0
|
||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
inline void SetUnknown0x160(MxBool p_unk0x160) { m_unk0x160 = p_unk0x160; }
|
||||
|
||||
void ActivateSceneActions();
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
#include "decomp.h"
|
||||
#include "islepathactor.h"
|
||||
|
||||
class TowTrackMissionState;
|
||||
|
||||
// VTABLE: LEGO1 0x100d7ee0
|
||||
// SIZE 0x180
|
||||
class TowTrack : public IslePathActor {
|
||||
|
@ -26,30 +28,32 @@ public:
|
|||
MxLong Notify(MxParam& p_param) override; // vtable+0x04
|
||||
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 VTable0xcc() override; // vtable+0xcc
|
||||
MxU32 VTable0xd4(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
MxU32 HandleClick() override; // vtable+0xcc
|
||||
MxU32 HandleControl(LegoControlManagerEvent& p_param) override; // vtable+0xd4
|
||||
MxU32 VTable0xd8(LegoEndAnimNotificationParam& p_param) override; // vtable+0xd8
|
||||
MxU32 VTable0xdc(MxType19NotificationParam& p_param) override; // vtable+0xdc
|
||||
void VTable0xe4() override; // vtable+0xe4
|
||||
|
||||
void CreateState();
|
||||
void FUN_1004dab0();
|
||||
void FUN_1004dad0();
|
||||
void FUN_1004db10();
|
||||
void FUN_1004dbe0();
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1004c950
|
||||
// TowTrack::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
// TODO: TowTrack field types
|
||||
undefined m_unk0x154[4];
|
||||
MxS32 m_unk0x164;
|
||||
MxS16 m_unk0x168;
|
||||
MxS16 m_unk0x16a;
|
||||
MxS16 m_unk0x16c;
|
||||
MxS16 m_unk0x16e;
|
||||
MxS32 m_unk0x170;
|
||||
MxS32 m_unk0x174;
|
||||
MxFloat m_unk0x178;
|
||||
undefined4 m_unk0x17c;
|
||||
undefined4 m_unk0x160; // 0x160
|
||||
TowTrackMissionState* m_state; // 0x164
|
||||
MxS16 m_unk0x168; // 0x168
|
||||
MxS16 m_unk0x16a; // 0x16a
|
||||
MxS16 m_unk0x16c; // 0x16c
|
||||
MxS16 m_unk0x16e; // 0x16e
|
||||
MxS32 m_unk0x170; // 0x170
|
||||
MxS32 m_unk0x174; // 0x174
|
||||
MxFloat m_unk0x178; // 0x178
|
||||
MxFloat m_time; // 0x17c
|
||||
};
|
||||
|
||||
#endif // TOWTRACK_H
|
||||
|
|
|
@ -45,7 +45,6 @@ public:
|
|||
// SYNTHETIC: LEGO1 0x1004e060
|
||||
// TowTrackMissionState::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
undefined4 m_unk0x08; // 0x08
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
MxU8 m_unk0x10; // 0x10
|
||||
|
|
|
@ -18,17 +18,17 @@ DECOMP_SIZE_ASSERT(Ambulance, 0x184)
|
|||
// FUNCTION: LEGO1 0x10035ee0
|
||||
Ambulance::Ambulance()
|
||||
{
|
||||
this->m_unk0x168 = 0;
|
||||
this->m_unk0x16a = -1;
|
||||
this->m_state = NULL;
|
||||
this->m_unk0x16c = 0;
|
||||
this->m_unk0x174 = -1;
|
||||
this->m_unk0x16e = 0;
|
||||
this->m_unk0x178 = -1;
|
||||
this->m_unk0x170 = 0;
|
||||
this->m_unk0x172 = 0;
|
||||
this->m_unk0x13c = 40.0;
|
||||
this->m_unk0x17c = 1.0;
|
||||
m_unk0x168 = 0;
|
||||
m_unk0x16a = -1;
|
||||
m_state = NULL;
|
||||
m_unk0x16c = 0;
|
||||
m_unk0x174 = -1;
|
||||
m_unk0x16e = 0;
|
||||
m_unk0x178 = -1;
|
||||
m_unk0x170 = 0;
|
||||
m_unk0x172 = 0;
|
||||
m_unk0x13c = 40.0;
|
||||
m_unk0x17c = 1.0;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10035f90
|
||||
|
@ -58,7 +58,7 @@ MxResult Ambulance::Create(MxDSAction& p_dsAction)
|
|||
m_state = (AmbulanceMissionState*) GameState()->GetState("AmbulanceMissionState");
|
||||
if (!m_state) {
|
||||
m_state = new AmbulanceMissionState();
|
||||
m_state->SetUnknown0x08(0);
|
||||
m_state->m_unk0x08 = 0;
|
||||
GameState()->RegisterState(m_state);
|
||||
}
|
||||
}
|
||||
|
@ -66,7 +66,6 @@ MxResult Ambulance::Create(MxDSAction& p_dsAction)
|
|||
VariableTable()->SetVariable(g_varAMBULFUEL, "1.0");
|
||||
m_unk0x17c = 1.0;
|
||||
m_time = Timer()->GetTime();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -76,6 +75,19 @@ void Ambulance::VTable0x70(float p_float)
|
|||
// TODO
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100363f0
|
||||
void Ambulance::CreateState()
|
||||
{
|
||||
LegoGameState* gameState = GameState();
|
||||
AmbulanceMissionState* state = (AmbulanceMissionState*) gameState->GetState("AmbulanceMissionState");
|
||||
|
||||
if (state == NULL) {
|
||||
state = (AmbulanceMissionState*) gameState->CreateState("AmbulanceMissionState");
|
||||
}
|
||||
|
||||
m_state = state;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10036420
|
||||
MxLong Ambulance::Notify(MxParam& p_param)
|
||||
{
|
||||
|
@ -91,7 +103,7 @@ MxU32 Ambulance::VTable0xdc(MxType19NotificationParam& p_param)
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x10036ce0
|
||||
MxU32 Ambulance::VTable0xcc()
|
||||
MxU32 Ambulance::HandleClick()
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
@ -110,7 +122,7 @@ void Ambulance::VTable0xe4()
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x10036f90
|
||||
MxU32 Ambulance::VTable0xd4(LegoControlManagerEvent& p_param)
|
||||
MxU32 Ambulance::HandleControl(LegoControlManagerEvent& p_param)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
@ -128,3 +140,15 @@ MxResult Ambulance::Tickle()
|
|||
// TODO
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10037240
|
||||
void Ambulance::FUN_10037240()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10037250
|
||||
void Ambulance::FUN_10037250()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
|
|
@ -45,14 +45,14 @@ void Bike::VTable0xe4()
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x100769a0
|
||||
MxU32 Bike::VTable0xcc()
|
||||
MxU32 Bike::HandleClick()
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10076aa0
|
||||
MxU32 Bike::VTable0xd4(LegoControlManagerEvent& p_param)
|
||||
MxU32 Bike::HandleControl(LegoControlManagerEvent& p_param)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
|
|
@ -31,14 +31,14 @@ void DuneBuggy::VTable0xe4()
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x10068060
|
||||
MxU32 DuneBuggy::VTable0xcc()
|
||||
MxU32 DuneBuggy::HandleClick()
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100681b0
|
||||
MxU32 DuneBuggy::VTable0xd4(LegoControlManagerEvent& p_param)
|
||||
MxU32 DuneBuggy::HandleControl(LegoControlManagerEvent& p_param)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
|
|
@ -40,21 +40,22 @@ Helicopter::~Helicopter()
|
|||
MxResult Helicopter::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
MxResult result = IslePathActor::Create(p_dsAction);
|
||||
LegoWorld* world = CurrentWorld();
|
||||
SetWorld(world);
|
||||
if (world->IsA("Act3")) {
|
||||
((Act3*) GetWorld())->SetUnknown420c(this);
|
||||
|
||||
m_world = CurrentWorld();
|
||||
if (m_world->IsA("Act3")) {
|
||||
((Act3*) m_world)->SetUnknown420c(this);
|
||||
}
|
||||
world = GetWorld();
|
||||
if (world) {
|
||||
world->Add(this);
|
||||
|
||||
if (m_world != NULL) {
|
||||
m_world->Add(this);
|
||||
}
|
||||
GetState();
|
||||
|
||||
CreateState();
|
||||
return result;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10003320
|
||||
void Helicopter::GetState()
|
||||
void Helicopter::CreateState()
|
||||
{
|
||||
m_state = (HelicopterState*) GameState()->GetState("HelicopterState");
|
||||
if (!m_state) {
|
||||
|
@ -78,11 +79,12 @@ void Helicopter::VTable0xe4()
|
|||
if (GameState()->GetCurrentAct() == LegoGameState::e_act1) {
|
||||
GameState()->SetCurrentArea(LegoGameState::e_copter);
|
||||
if (CurrentActor() && CurrentActor()->IsA("IslePathActor")) {
|
||||
CurrentActor()->SpawnPlayer(
|
||||
LegoGameState::e_unk55,
|
||||
TRUE,
|
||||
IslePathActor::c_spawnBit1 | IslePathActor::c_playMusic | IslePathActor::c_spawnBit3
|
||||
);
|
||||
((IslePathActor*) CurrentActor())
|
||||
->SpawnPlayer(
|
||||
LegoGameState::e_unk55,
|
||||
TRUE,
|
||||
IslePathActor::c_spawnBit1 | IslePathActor::c_playMusic | IslePathActor::c_spawnBit3
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,7 +104,7 @@ void Helicopter::VTable0xe4()
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10003480
|
||||
MxU32 Helicopter::VTable0xcc()
|
||||
MxU32 Helicopter::HandleClick()
|
||||
{
|
||||
if (!FUN_1003ef60()) {
|
||||
return 1;
|
||||
|
@ -116,7 +118,7 @@ MxU32 Helicopter::VTable0xcc()
|
|||
|
||||
if (CurrentActor()) {
|
||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||
CurrentActor()->VTable0xe4();
|
||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -151,7 +153,7 @@ MxU32 Helicopter::VTable0xcc()
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100035e0
|
||||
MxU32 Helicopter::VTable0xd4(LegoControlManagerEvent& p_param)
|
||||
MxU32 Helicopter::HandleControl(LegoControlManagerEvent& p_param)
|
||||
{
|
||||
MxU32 ret = 0;
|
||||
MxAtomId script;
|
||||
|
@ -190,7 +192,7 @@ MxU32 Helicopter::VTable0xd4(LegoControlManagerEvent& p_param)
|
|||
if (m_state->GetUnkown8() == 0) {
|
||||
state->SetUnknown18(4);
|
||||
m_state->SetUnknown8(1);
|
||||
m_world->RemovePathActor(this);
|
||||
m_world->RemoveActor(this);
|
||||
InvokeAction(Extra::ActionType::e_start, script, IsleScript::c_HelicopterTakeOff_Anim, NULL);
|
||||
SetState(0);
|
||||
}
|
||||
|
@ -203,7 +205,7 @@ MxU32 Helicopter::VTable0xd4(LegoControlManagerEvent& p_param)
|
|||
}
|
||||
if (m_state->GetUnkown8() == 2) {
|
||||
m_state->SetUnknown8(3);
|
||||
m_world->RemovePathActor(this);
|
||||
m_world->RemoveActor(this);
|
||||
InvokeAction(Extra::ActionType::e_start, script, IsleScript::c_HelicopterLand_Anim, NULL);
|
||||
SetState(4);
|
||||
}
|
||||
|
@ -376,11 +378,7 @@ void Helicopter::VTable0x70(float p_float)
|
|||
Vector3 v2(m_unk0x1a8[3]);
|
||||
float* loc = m_unk0x1a8[3];
|
||||
mat.SetIdentity();
|
||||
float fa[4];
|
||||
Vector4 v3(fa);
|
||||
if (m_unk0x1f4.FUN_100040a0(v3, f2) == SUCCESS) {
|
||||
mat.FromQuaternion(v3);
|
||||
}
|
||||
m_unk0x1f4.Unknown6(mat, f2);
|
||||
v2.SetVector(loc);
|
||||
v2.Sub(&v);
|
||||
v2.Mul(f2);
|
||||
|
|
|
@ -42,8 +42,8 @@ MxLong IsleActor::Notify(MxParam& p_param)
|
|||
case c_notificationButtonDown:
|
||||
result = HandleButtonDown((MxNotificationParam&) p_param);
|
||||
break;
|
||||
case c_notificationType11:
|
||||
result = VTable0x68();
|
||||
case c_notificationClick:
|
||||
result = HandleClick();
|
||||
break;
|
||||
case c_notificationEndAnim:
|
||||
result = VTable0x70();
|
||||
|
|
|
@ -27,7 +27,7 @@ IslePathActor::IslePathActor()
|
|||
m_world = NULL;
|
||||
m_unk0x13c = 6.0;
|
||||
m_unk0x15c = 1.0;
|
||||
m_unk0x158 = 0;
|
||||
m_unk0x158 = NULL;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1001a280
|
||||
|
@ -53,11 +53,11 @@ MxLong IslePathActor::Notify(MxParam& p_param)
|
|||
case c_notificationType0:
|
||||
ret = VTable0xd0();
|
||||
break;
|
||||
case c_notificationType11:
|
||||
ret = VTable0xcc();
|
||||
break;
|
||||
case c_notificationClick:
|
||||
ret = VTable0xd4((LegoControlManagerEvent&) p_param);
|
||||
ret = HandleClick();
|
||||
break;
|
||||
case c_notificationControl:
|
||||
ret = HandleControl((LegoControlManagerEvent&) p_param);
|
||||
break;
|
||||
case c_notificationEndAnim:
|
||||
ret = VTable0xd8((LegoEndAnimNotificationParam&) p_param);
|
||||
|
@ -471,7 +471,7 @@ void IslePathActor::SpawnPlayer(LegoGameState::Area p_area, MxBool p_und, MxU8 p
|
|||
assert(world);
|
||||
|
||||
if (m_world != NULL) {
|
||||
m_world->RemovePathActor(this);
|
||||
m_world->RemoveActor(this);
|
||||
m_world->Remove(this);
|
||||
VideoManager()->Get3DManager()->Remove(*m_roi);
|
||||
}
|
||||
|
@ -556,7 +556,7 @@ void IslePathActor::SpawnPlayer(LegoGameState::Area p_area, MxBool p_und, MxU8 p
|
|||
void IslePathActor::VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundary, MxBool p_reset)
|
||||
{
|
||||
if (m_world) {
|
||||
m_world->RemovePathActor(this);
|
||||
m_world->RemoveActor(this);
|
||||
m_world->Remove(this);
|
||||
VideoManager()->Get3DManager()->GetLego3DView()->Remove(*m_roi);
|
||||
}
|
||||
|
@ -566,7 +566,7 @@ void IslePathActor::VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundar
|
|||
VTable0xe0();
|
||||
}
|
||||
|
||||
m_world->AddPathActor(this);
|
||||
m_world->PlaceActor(this);
|
||||
p_boundary->AddActor(this);
|
||||
if (m_actorId != GameState()->GetActorId()) {
|
||||
m_world->Add(this);
|
||||
|
@ -579,8 +579,17 @@ void IslePathActor::VTable0xec(MxMatrix p_transform, LegoPathBoundary* p_boundar
|
|||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1001b660
|
||||
// FUNCTION: LEGO1 0x1001b660
|
||||
// FUNCTION: BETA10 0x10036ea2
|
||||
void IslePathActor::FUN_1001b660()
|
||||
{
|
||||
// TODO
|
||||
MxMatrix transform(m_roi->GetLocal2World());
|
||||
Vector3 position(transform[0]);
|
||||
Vector3 direction(transform[1]);
|
||||
Vector3 up(transform[2]);
|
||||
|
||||
((Vector3&) up).Mul(-1.0f);
|
||||
position.EqualsCross(&direction, &up);
|
||||
m_roi->FUN_100a58f0(transform);
|
||||
m_roi->VTable0x14();
|
||||
}
|
||||
|
|
|
@ -30,14 +30,14 @@ void Jetski::VTable0xe4()
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x1007e750
|
||||
MxU32 Jetski::VTable0xcc()
|
||||
MxU32 Jetski::HandleClick()
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1007e8e0
|
||||
MxU32 Jetski::VTable0xd4(LegoControlManagerEvent& p_param)
|
||||
MxU32 Jetski::HandleControl(LegoControlManagerEvent& p_param)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
|
|
@ -32,13 +32,13 @@ JukeBoxEntity::~JukeBoxEntity()
|
|||
// FUNCTION: LEGO1 0x10085e40
|
||||
MxLong JukeBoxEntity::Notify(MxParam& p_param)
|
||||
{
|
||||
if (((MxNotificationParam&) p_param).GetType() == c_notificationType11) {
|
||||
if (((MxNotificationParam&) p_param).GetType() == c_notificationClick) {
|
||||
if (!FUN_1003ef60()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||
CurrentActor()->VTable0xe4();
|
||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
||||
}
|
||||
|
||||
((Isle*) FindWorld(*g_isleScript, 0))->SetDestLocation(LegoGameState::e_jukeboxw);
|
||||
|
|
|
@ -31,14 +31,14 @@ void Motocycle::VTable0xe4()
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x10035c50
|
||||
MxU32 Motocycle::VTable0xcc()
|
||||
MxU32 Motocycle::HandleClick()
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10035d70
|
||||
MxU32 Motocycle::VTable0xd4(LegoControlManagerEvent& p_param)
|
||||
MxU32 Motocycle::HandleControl(LegoControlManagerEvent& p_param)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
|
|
@ -1,17 +1,23 @@
|
|||
#include "pizza.h"
|
||||
|
||||
#include "act1state.h"
|
||||
#include "isle_actions.h"
|
||||
#include "legogamestate.h"
|
||||
#include "legoworld.h"
|
||||
#include "misc.h"
|
||||
#include "mxmisc.h"
|
||||
#include "mxticklemanager.h"
|
||||
#include "pizzamissionstate.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(Pizza, 0x9c)
|
||||
|
||||
// FUNCTION: LEGO1 0x10037ef0
|
||||
Pizza::Pizza()
|
||||
{
|
||||
m_unk0x7c = 0;
|
||||
m_state = NULL;
|
||||
m_unk0x80 = 0;
|
||||
m_skateboard = NULL;
|
||||
m_unk0x88 = 0;
|
||||
m_act1state = NULL;
|
||||
m_unk0x8c = -1;
|
||||
m_unk0x98 = 0;
|
||||
m_unk0x90 = 0x80000000;
|
||||
|
@ -23,11 +29,36 @@ Pizza::~Pizza()
|
|||
TickleManager()->UnregisterClient(this);
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10038170
|
||||
// FUNCTION: LEGO1 0x10038170
|
||||
MxResult Pizza::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
// TODO
|
||||
return SUCCESS;
|
||||
MxResult result = IsleActor::Create(p_dsAction);
|
||||
|
||||
if (result == SUCCESS) {
|
||||
CreateState();
|
||||
m_skateboard = (SkateBoard*) m_world->Find(m_atom, IsleScript::c_SkateBoard_Actor);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100381b0
|
||||
void Pizza::CreateState()
|
||||
{
|
||||
m_state = (PizzaMissionState*) GameState()->GetState("PizzaMissionState");
|
||||
if (m_state == NULL) {
|
||||
m_state = (PizzaMissionState*) GameState()->CreateState("PizzaMissionState");
|
||||
}
|
||||
|
||||
m_act1state = (Act1State*) GameState()->GetState("Act1State");
|
||||
if (m_act1state == NULL) {
|
||||
m_act1state = (Act1State*) GameState()->CreateState("Act1State");
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10038220
|
||||
void Pizza::FUN_10038220(MxU32 p_objectId)
|
||||
{
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100382b0
|
||||
|
@ -41,7 +72,7 @@ void Pizza::FUN_10038380()
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x100383f0
|
||||
undefined4 Pizza::VTable0x68()
|
||||
undefined4 Pizza::HandleClick()
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
|
|
@ -1,7 +1,17 @@
|
|||
#include "pizzeria.h"
|
||||
|
||||
#include "isle_actions.h"
|
||||
#include "islepathactor.h"
|
||||
#include "legoanimationmanager.h"
|
||||
#include "legogamestate.h"
|
||||
#include "legopathactor.h"
|
||||
#include "legoutils.h"
|
||||
#include "legoworld.h"
|
||||
#include "misc.h"
|
||||
#include "pizza.h"
|
||||
#include "pizzamissionstate.h"
|
||||
#include "pizzeriastate.h"
|
||||
#include "scripts.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(Pizzeria, 0x84)
|
||||
|
||||
|
@ -11,14 +21,14 @@ MxResult Pizzeria::Create(MxDSAction& p_dsAction)
|
|||
MxResult result = IsleActor::Create(p_dsAction);
|
||||
|
||||
if (result == SUCCESS) {
|
||||
Init();
|
||||
CreateState();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100179f0
|
||||
void Pizzeria::Init()
|
||||
void Pizzeria::CreateState()
|
||||
{
|
||||
LegoGameState* gameState = GameState();
|
||||
PizzeriaState* pizzeriaState = (PizzeriaState*) gameState->GetState("PizzeriaState");
|
||||
|
@ -35,9 +45,21 @@ void Pizzeria::Init()
|
|||
m_pizzaMissionState = pizzaMissionState;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10017a50
|
||||
undefined4 Pizzeria::VTable0x68()
|
||||
// FUNCTION: LEGO1 0x10017a50
|
||||
undefined4 Pizzeria::HandleClick()
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
if (FUN_1003ef60() && m_pizzaMissionState->m_unk0x0c == 0) {
|
||||
if (CurrentActor()->GetActorId() != GameState()->GetActorId()) {
|
||||
if (!CurrentActor()->IsA("SkateBoard")) {
|
||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
||||
}
|
||||
}
|
||||
|
||||
AnimationManager()->FUN_10061010(FALSE);
|
||||
|
||||
Pizza* pizza = (Pizza*) CurrentWorld()->Find(*g_isleScript, IsleScript::c_Pizza_Actor);
|
||||
pizza->FUN_10038220(m_pizzeriaState->FUN_10017d70());
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ MxResult RaceCar::Create(MxDSAction& p_dsAction)
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x100284d0
|
||||
MxU32 RaceCar::VTable0xcc()
|
||||
MxU32 RaceCar::HandleClick()
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
|
|
@ -22,7 +22,7 @@ Radio::Radio()
|
|||
ControlManager()->Register(this);
|
||||
|
||||
m_unk0x0c = TRUE;
|
||||
CreateRadioState();
|
||||
CreateState();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1002c990
|
||||
|
@ -47,8 +47,8 @@ MxLong Radio::Notify(MxParam& p_param)
|
|||
case c_notificationEndAction:
|
||||
result = HandleEndAction((MxEndActionNotificationParam&) p_param);
|
||||
break;
|
||||
case c_notificationClick:
|
||||
result = HandleClick((LegoControlManagerEvent&) p_param);
|
||||
case c_notificationControl:
|
||||
result = HandleControl((LegoControlManagerEvent&) p_param);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ void Radio::Stop()
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1002cbc0
|
||||
MxLong Radio::HandleClick(LegoControlManagerEvent& p_param)
|
||||
MxLong Radio::HandleControl(LegoControlManagerEvent& p_param)
|
||||
{
|
||||
MxDSAction action; // Unused
|
||||
MxS32 objectId = p_param.GetClickedObjectId();
|
||||
|
@ -147,12 +147,12 @@ void Radio::Initialize(MxBool p_und)
|
|||
{
|
||||
if (m_unk0x0c != p_und) {
|
||||
m_unk0x0c = p_und;
|
||||
CreateRadioState();
|
||||
CreateState();
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1002cde0
|
||||
void Radio::CreateRadioState()
|
||||
void Radio::CreateState()
|
||||
{
|
||||
LegoGameState* gameState = GameState();
|
||||
RadioState* state = (RadioState*) gameState->GetState("RadioState");
|
||||
|
|
|
@ -72,7 +72,7 @@ void SkateBoard::VTable0xe4()
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100100e0
|
||||
MxU32 SkateBoard::VTable0xcc()
|
||||
MxU32 SkateBoard::HandleClick()
|
||||
{
|
||||
Act1State* state = (Act1State*) GameState()->GetState("Act1State");
|
||||
|
||||
|
@ -87,7 +87,7 @@ MxU32 SkateBoard::VTable0xcc()
|
|||
|
||||
if (GameState()->GetActorId() != CurrentActor()->GetActorId()) {
|
||||
if (!CurrentActor()->IsA("SkateBoard")) {
|
||||
CurrentActor()->VTable0xe4();
|
||||
((IslePathActor*) CurrentActor())->VTable0xe4();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,7 @@ MxU32 SkateBoard::VTable0xcc()
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10010230
|
||||
MxU32 SkateBoard::VTable0xd4(LegoControlManagerEvent& p_param)
|
||||
MxU32 SkateBoard::HandleControl(LegoControlManagerEvent& p_param)
|
||||
{
|
||||
MxU32 result = 0;
|
||||
|
||||
|
|
|
@ -1,26 +1,55 @@
|
|||
#include "towtrack.h"
|
||||
|
||||
#include "legogamestate.h"
|
||||
#include "legovariables.h"
|
||||
#include "legoworld.h"
|
||||
#include "misc.h"
|
||||
#include "mxmisc.h"
|
||||
#include "mxtimer.h"
|
||||
#include "mxvariabletable.h"
|
||||
#include "towtrackmissionstate.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(TowTrack, 0x180)
|
||||
|
||||
// FUNCTION: LEGO1 0x1004c720
|
||||
TowTrack::TowTrack()
|
||||
{
|
||||
this->m_unk0x168 = 0;
|
||||
this->m_unk0x16a = -1;
|
||||
this->m_unk0x164 = 0;
|
||||
this->m_unk0x16c = 0;
|
||||
this->m_unk0x170 = -1;
|
||||
this->m_unk0x16e = 0;
|
||||
this->m_unk0x174 = -1;
|
||||
this->m_unk0x13c = 40.0;
|
||||
this->m_unk0x178 = 1.0;
|
||||
m_unk0x168 = 0;
|
||||
m_unk0x16a = -1;
|
||||
m_state = NULL;
|
||||
m_unk0x16c = 0;
|
||||
m_unk0x170 = -1;
|
||||
m_unk0x16e = 0;
|
||||
m_unk0x174 = -1;
|
||||
m_unk0x13c = 40.0;
|
||||
m_unk0x178 = 1.0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1004c9e0
|
||||
// FUNCTION: LEGO1 0x1004c9e0
|
||||
// FUNCTION: BETA10 0x100f6bf1
|
||||
MxResult TowTrack::Create(MxDSAction& p_dsAction)
|
||||
{
|
||||
// TODO
|
||||
return SUCCESS;
|
||||
MxResult result = IslePathActor::Create(p_dsAction);
|
||||
|
||||
if (result == SUCCESS) {
|
||||
m_world = CurrentWorld();
|
||||
|
||||
if (m_world) {
|
||||
m_world->Add(this);
|
||||
}
|
||||
|
||||
m_state = (TowTrackMissionState*) GameState()->GetState("TowTrackMissionState");
|
||||
if (!m_state) {
|
||||
m_state = new TowTrackMissionState();
|
||||
m_state->m_unk0x08 = 0;
|
||||
GameState()->RegisterState(m_state);
|
||||
}
|
||||
}
|
||||
|
||||
VariableTable()->SetVariable(g_varTOWFUEL, "1.0");
|
||||
m_unk0x178 = 1.0;
|
||||
m_time = Timer()->GetTime();
|
||||
return result;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1004cb10
|
||||
|
@ -29,6 +58,15 @@ void TowTrack::VTable0x70(float p_float)
|
|||
// TODO
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1004cc40
|
||||
void TowTrack::CreateState()
|
||||
{
|
||||
m_state = (TowTrackMissionState*) GameState()->GetState("TowTrackMissionState");
|
||||
if (m_state == NULL) {
|
||||
m_state = (TowTrackMissionState*) GameState()->CreateState("TowTrackMissionState");
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1004cc80
|
||||
MxLong TowTrack::Notify(MxParam& p_param)
|
||||
{
|
||||
|
@ -51,7 +89,7 @@ MxU32 TowTrack::VTable0xdc(MxType19NotificationParam& p_param)
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x1004d690
|
||||
MxU32 TowTrack::VTable0xcc()
|
||||
MxU32 TowTrack::HandleClick()
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
@ -64,7 +102,7 @@ void TowTrack::VTable0xe4()
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x1004d9e0
|
||||
MxU32 TowTrack::VTable0xd4(LegoControlManagerEvent& p_param)
|
||||
MxU32 TowTrack::HandleControl(LegoControlManagerEvent& p_param)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
|
@ -81,3 +119,15 @@ void TowTrack::FUN_1004dad0()
|
|||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1004db10
|
||||
void TowTrack::FUN_1004db10()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1004dbe0
|
||||
void TowTrack::FUN_1004dbe0()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
#include "legounknown100d5778.h"
|
||||
#include "lego3dsound.h"
|
||||
|
||||
#include "legocharactermanager.h"
|
||||
#include "misc.h"
|
||||
#include "mxomni.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(LegoUnknown100d5778, 0x30)
|
||||
DECOMP_SIZE_ASSERT(Lego3DSound, 0x30)
|
||||
|
||||
// FUNCTION: LEGO1 0x10011630
|
||||
LegoUnknown100d5778::LegoUnknown100d5778()
|
||||
Lego3DSound::Lego3DSound()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10011670
|
||||
LegoUnknown100d5778::~LegoUnknown100d5778()
|
||||
Lego3DSound::~Lego3DSound()
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10011680
|
||||
void LegoUnknown100d5778::Init()
|
||||
void Lego3DSound::Init()
|
||||
{
|
||||
m_dsBuffer = NULL;
|
||||
m_unk0x0c = NULL;
|
||||
|
@ -27,16 +27,17 @@ void LegoUnknown100d5778::Init()
|
|||
m_unk0x18 = 0;
|
||||
m_unk0x14 = FALSE;
|
||||
m_unk0x15 = FALSE;
|
||||
m_unk0x2c = 79;
|
||||
m_volume = 79;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100116a0
|
||||
MxResult LegoUnknown100d5778::FUN_100116a0(LPDIRECTSOUND p_dsound, undefined4, undefined4 p_unk0x2c)
|
||||
// FUNCTION: BETA10 0x10039647
|
||||
MxResult Lego3DSound::Create(LPDIRECTSOUNDBUFFER p_directSoundBuffer, const char*, MxS32 p_volume)
|
||||
{
|
||||
m_unk0x2c = p_unk0x2c;
|
||||
m_volume = p_volume;
|
||||
|
||||
if (MxOmni::IsSound3D()) {
|
||||
p_dsound->QueryInterface(IID_IDirectSoundBuffer, (LPVOID*) &m_dsBuffer);
|
||||
p_directSoundBuffer->QueryInterface(IID_IDirectSoundBuffer, (LPVOID*) &m_dsBuffer);
|
||||
if (m_dsBuffer == NULL) {
|
||||
return FAILURE;
|
||||
}
|
||||
|
@ -50,7 +51,7 @@ MxResult LegoUnknown100d5778::FUN_100116a0(LPDIRECTSOUND p_dsound, undefined4, u
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10011880
|
||||
void LegoUnknown100d5778::Destroy()
|
||||
void Lego3DSound::Destroy()
|
||||
{
|
||||
if (m_dsBuffer) {
|
||||
m_dsBuffer->Release();
|
||||
|
@ -70,20 +71,21 @@ void LegoUnknown100d5778::Destroy()
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x100118e0
|
||||
undefined4 LegoUnknown100d5778::FUN_100118e0(LPDIRECTSOUNDBUFFER p_dsBuffer)
|
||||
// FUNCTION: BETA10 0x10039a2a
|
||||
undefined4 Lego3DSound::FUN_100118e0(LPDIRECTSOUNDBUFFER p_directSoundBuffer)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10011ca0
|
||||
void LegoUnknown100d5778::FUN_10011ca0()
|
||||
void Lego3DSound::FUN_10011ca0()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10011cf0
|
||||
MxS32 LegoUnknown100d5778::FUN_10011cf0(undefined4, undefined4)
|
||||
MxS32 Lego3DSound::FUN_10011cf0(undefined4, undefined4)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
|
@ -1,5 +1,7 @@
|
|||
#include "lego3dwavepresenter.h"
|
||||
|
||||
#include "mxcompositepresenter.h"
|
||||
#include "mxdsaction.h"
|
||||
#include "mxomni.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(Lego3DWavePresenter, 0xa0)
|
||||
|
@ -28,7 +30,8 @@ void Lego3DWavePresenter::Destroy()
|
|||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1004a810
|
||||
// FUNCTION: LEGO1 0x1004a810
|
||||
// FUNCTION: BETA10 0x1003a3b0
|
||||
void Lego3DWavePresenter::StartingTickle()
|
||||
{
|
||||
if (MxOmni::IsSound3D()) {
|
||||
|
@ -37,12 +40,27 @@ void Lego3DWavePresenter::StartingTickle()
|
|||
|
||||
MxWavePresenter::StartingTickle();
|
||||
|
||||
// TODO
|
||||
if (m_dsBuffer != NULL) {
|
||||
MxU16 extraLength;
|
||||
char* buff;
|
||||
m_action->GetExtra(extraLength, buff);
|
||||
|
||||
if (!strcmp(buff, "FROM_PARENT") && m_compositePresenter != NULL) {
|
||||
m_compositePresenter->GetAction()->GetExtra(extraLength, buff);
|
||||
}
|
||||
|
||||
if (m_sound.Create(m_dsBuffer, buff, m_volume) != SUCCESS) {
|
||||
m_dsBuffer->Release();
|
||||
m_dsBuffer = NULL;
|
||||
EndAction();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1004a8b0
|
||||
// FUNCTION: LEGO1 0x1004a8b0
|
||||
// FUNCTION: BETA10 0x1003a4cc
|
||||
void Lego3DWavePresenter::StreamingTickle()
|
||||
{
|
||||
MxWavePresenter::StreamingTickle();
|
||||
// TODO
|
||||
m_sound.FUN_100118e0(m_dsBuffer);
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ BuildingEntity::~BuildingEntity()
|
|||
// FUNCTION: LEGO1 0x100150a0
|
||||
MxLong BuildingEntity::Notify(MxParam& p_param)
|
||||
{
|
||||
if (((MxNotificationParam&) p_param).GetType() == c_notificationType11) {
|
||||
if (((MxNotificationParam&) p_param).GetType() == c_notificationClick) {
|
||||
return VTable0x50(p_param);
|
||||
}
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ void LegoCarBuild::Enable(MxBool p_enable)
|
|||
}
|
||||
|
||||
// STUB: LEGO1 0x10025e70
|
||||
MxBool LegoCarBuild::VTable0x64()
|
||||
MxBool LegoCarBuild::Escape()
|
||||
{
|
||||
// TODO
|
||||
return FALSE;
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "mxticklemanager.h"
|
||||
#include "mxtimer.h"
|
||||
#include "mxutilities.h"
|
||||
#include "realtime/realtime.h"
|
||||
#include "viewmanager/viewmanager.h"
|
||||
|
||||
#include <io.h>
|
||||
|
@ -51,7 +52,7 @@ LegoAnimationManager::Vehicle g_vehicles[] = {
|
|||
};
|
||||
|
||||
// GLOBAL: LEGO1 0x100f6d58
|
||||
const char* g_unk0x100f6d58[11][17] = {
|
||||
const char* g_cycles[11][17] = {
|
||||
{"CNs001xx",
|
||||
"CNs002xx",
|
||||
"CNs003xx",
|
||||
|
@ -346,7 +347,7 @@ LegoAnimationManager::~LegoAnimationManager()
|
|||
LegoPathActor* actor = CharacterManager()->GetActor(roi->GetName());
|
||||
|
||||
if (actor != NULL && actor->GetController() != NULL && CurrentWorld() != NULL) {
|
||||
CurrentWorld()->RemovePathActor(actor);
|
||||
CurrentWorld()->RemoveActor(actor);
|
||||
actor->SetController(NULL);
|
||||
}
|
||||
|
||||
|
@ -466,7 +467,7 @@ void LegoAnimationManager::Suspend()
|
|||
m_unk0x401 = FALSE;
|
||||
|
||||
for (i = 0; i < (MxS32) sizeOfArray(g_characters); i++) {
|
||||
g_characters[i].m_unk0x04 = FALSE;
|
||||
g_characters[i].m_inExtras = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -530,7 +531,7 @@ void LegoAnimationManager::Init()
|
|||
|
||||
for (i = 0; i < (MxS32) sizeOfArray(g_characters); i++) {
|
||||
g_characters[i].m_active = FALSE;
|
||||
g_characters[i].m_unk0x04 = FALSE;
|
||||
g_characters[i].m_inExtras = FALSE;
|
||||
}
|
||||
|
||||
for (i = 0; i < (MxS32) sizeOfArray(g_vehicles); i++) {
|
||||
|
@ -994,7 +995,7 @@ MxResult LegoAnimationManager::FUN_100605e0(
|
|||
FUN_100648f0(tranInfo, m_unk0x404);
|
||||
}
|
||||
else if (p_unk0x0a) {
|
||||
IslePathActor* actor = CurrentActor();
|
||||
LegoPathActor* actor = CurrentActor();
|
||||
|
||||
if (actor != NULL) {
|
||||
actor->SetState(4);
|
||||
|
@ -1395,7 +1396,6 @@ MxLong LegoAnimationManager::Notify(MxParam& p_param)
|
|||
|
||||
if (roi != NULL) {
|
||||
LegoExtraActor* actor = CharacterManager()->GetActor(roi->GetName());
|
||||
|
||||
if (actor != NULL) {
|
||||
actor->Restart();
|
||||
}
|
||||
|
@ -1432,7 +1432,7 @@ MxResult LegoAnimationManager::Tickle()
|
|||
return SUCCESS;
|
||||
}
|
||||
|
||||
IslePathActor* actor = CurrentActor();
|
||||
LegoPathActor* actor = CurrentActor();
|
||||
LegoROI* roi;
|
||||
|
||||
if (actor == NULL || (roi = actor->GetROI()) == NULL) {
|
||||
|
@ -1468,7 +1468,7 @@ MxResult LegoAnimationManager::Tickle()
|
|||
}
|
||||
|
||||
m_extras[i].m_roi = NULL;
|
||||
g_characters[m_extras[i].m_characterId].m_unk0x04 = FALSE;
|
||||
g_characters[m_extras[i].m_characterId].m_inExtras = FALSE;
|
||||
g_characters[m_extras[i].m_characterId].m_unk0x07 = FALSE;
|
||||
m_extras[i].m_characterId = -1;
|
||||
m_extras[i].m_unk0x0d = FALSE;
|
||||
|
@ -1655,7 +1655,7 @@ MxBool LegoAnimationManager::FUN_100623a0(AnimInfo& p_info)
|
|||
|
||||
LegoEntityListCursor cursor(entityList);
|
||||
LegoEntity* entity;
|
||||
IslePathActor* actor = CurrentActor();
|
||||
LegoPathActor* actor = CurrentActor();
|
||||
|
||||
while (cursor.Next(entity)) {
|
||||
if (entity != actor && entity->IsA("LegoPathActor")) {
|
||||
|
@ -1837,7 +1837,7 @@ void LegoAnimationManager::PurgeExtra(MxBool p_und)
|
|||
}
|
||||
|
||||
m_extras[i].m_roi = NULL;
|
||||
g_characters[m_extras[i].m_characterId].m_unk0x04 = FALSE;
|
||||
g_characters[m_extras[i].m_characterId].m_inExtras = FALSE;
|
||||
g_characters[m_extras[i].m_characterId].m_unk0x07 = FALSE;
|
||||
m_extras[i].m_characterId = -1;
|
||||
}
|
||||
|
@ -1858,7 +1858,7 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und)
|
|||
if (world != NULL) {
|
||||
PurgeExtra(FALSE);
|
||||
|
||||
IslePathActor* actor = CurrentActor();
|
||||
LegoPathActor* actor = CurrentActor();
|
||||
if (actor == NULL || actor->GetWorldSpeed() <= 20.0f) {
|
||||
MxU32 i;
|
||||
for (i = 0; i < m_numAllowedExtras && m_extras[i].m_roi != NULL; i++) {
|
||||
|
@ -1928,7 +1928,7 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und)
|
|||
tryNextCharacter:
|
||||
if (g_characters[m_lastExtraCharacterId].m_unk0x09 &&
|
||||
g_characters[m_lastExtraCharacterId].m_unk0x08 &&
|
||||
!g_characters[m_lastExtraCharacterId].m_unk0x04 &&
|
||||
!g_characters[m_lastExtraCharacterId].m_inExtras &&
|
||||
g_characters[m_lastExtraCharacterId].m_active == active) {
|
||||
if (!CharacterManager()->FUN_10083b20(g_characters[m_lastExtraCharacterId].m_name
|
||||
)) {
|
||||
|
@ -1973,7 +1973,7 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und)
|
|||
if (FUN_10063b90(
|
||||
world,
|
||||
actor,
|
||||
CharacterManager()->FUN_10085180(m_extras[i].m_roi),
|
||||
CharacterManager()->GetMood(m_extras[i].m_roi),
|
||||
m_lastExtraCharacterId
|
||||
)) {
|
||||
m_extras[i].m_unk0x14 = TRUE;
|
||||
|
@ -1994,7 +1994,7 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und)
|
|||
actor->SetWorldSpeed(speed);
|
||||
|
||||
m_extras[i].m_characterId = m_lastExtraCharacterId;
|
||||
g_characters[m_lastExtraCharacterId].m_unk0x04 = TRUE;
|
||||
g_characters[m_lastExtraCharacterId].m_inExtras = TRUE;
|
||||
m_extras[i].m_unk0x08 = Timer()->GetTime();
|
||||
m_extras[i].m_speed = -1;
|
||||
m_extras[i].m_unk0x0d = FALSE;
|
||||
|
@ -2029,10 +2029,242 @@ void LegoAnimationManager::AddExtra(MxS32 p_location, MxBool p_und)
|
|||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10063270
|
||||
void LegoAnimationManager::FUN_10063270(LegoROIList*, LegoAnimPresenter*)
|
||||
// FUNCTION: LEGO1 0x10062e20
|
||||
// FUNCTION: BETA10 0x100444cb
|
||||
MxBool LegoAnimationManager::FUN_10062e20(LegoROI* p_roi, LegoAnimPresenter* p_presenter)
|
||||
{
|
||||
// TODO
|
||||
LegoWorld* world = CurrentWorld();
|
||||
|
||||
if (world == NULL || m_suspended || !m_unk0x400) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
MxBool inExtras = FALSE;
|
||||
const char* name = p_roi->GetName();
|
||||
|
||||
LegoExtraActor* actor = CharacterManager()->GetActor(name);
|
||||
if (actor != NULL) {
|
||||
MxS32 characterId = -1;
|
||||
MxS32 i;
|
||||
|
||||
for (i = 0; i < (MxS32) sizeOfArray(g_characters); i++) {
|
||||
if (!strcmpi(name, g_characters[i].m_name)) {
|
||||
characterId = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (characterId == -1) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!g_characters[characterId].m_inExtras) {
|
||||
for (i = 0; i < (MxS32) sizeOfArray(m_extras); i++) {
|
||||
if (m_extras[i].m_roi == NULL) {
|
||||
m_extras[i].m_roi = p_roi;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i == (MxS32) sizeOfArray(m_extras)) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
inExtras = TRUE;
|
||||
|
||||
for (i = 0; i < (MxS32) sizeOfArray(m_extras); i++) {
|
||||
if (m_extras[i].m_roi == p_roi) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i == (MxS32) sizeOfArray(m_extras)) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (g_characters[characterId].m_unk0x07) {
|
||||
m_unk0x414--;
|
||||
|
||||
if (actor->GetBoundary() == NULL) {
|
||||
g_characters[characterId].m_unk0x07 = FALSE;
|
||||
|
||||
if (g_characters[characterId].m_unk0x0c < 0) {
|
||||
g_characters[characterId].m_unk0x0c = 0;
|
||||
}
|
||||
|
||||
if (g_characters[characterId].m_unk0x10 < 0) {
|
||||
g_characters[characterId].m_unk0x10 = 0;
|
||||
}
|
||||
|
||||
m_extras[i].m_roi = NULL;
|
||||
g_characters[characterId].m_unk0x07 = FALSE;
|
||||
g_characters[characterId].m_inExtras = FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CharacterManager()->FUN_10083db0(p_roi);
|
||||
}
|
||||
else {
|
||||
if (inExtras) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (GameState()->GetCurrentAct() != LegoGameState::e_act1 && !strcmp(name, "brickstr")) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
MxBool local24 = inExtras && g_characters[characterId].m_unk0x07 &&
|
||||
(g_characters[characterId].m_unk0x0c < 0 || g_characters[characterId].m_unk0x10 < 0);
|
||||
|
||||
MxResult result = 1; // Not a valid MxResult value
|
||||
|
||||
if (!local24) {
|
||||
MxU8 unk0x0c;
|
||||
|
||||
switch (rand() % 3) {
|
||||
case 0:
|
||||
unk0x0c = 1;
|
||||
break;
|
||||
case 1:
|
||||
unk0x0c = 2;
|
||||
break;
|
||||
case 2:
|
||||
unk0x0c = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
actor->SetUnknown0x0c(unk0x0c);
|
||||
|
||||
Mx3DPointFloat position;
|
||||
Mx3DPointFloat direction;
|
||||
|
||||
position = p_roi->GetWorldPosition();
|
||||
direction = p_roi->GetWorldDirection();
|
||||
|
||||
((Vector3&) direction).Mul(-1.0f);
|
||||
m_extras[i].m_speed = -1.0f;
|
||||
|
||||
if (inExtras) {
|
||||
actor->ClearMaps();
|
||||
}
|
||||
|
||||
if (FUN_10063b90(world, actor, CharacterManager()->GetMood(p_roi), characterId)) {
|
||||
m_extras[i].m_unk0x14 = TRUE;
|
||||
}
|
||||
else {
|
||||
m_extras[i].m_unk0x14 = FALSE;
|
||||
}
|
||||
|
||||
result = world->PlaceActor(actor, p_presenter, position, direction);
|
||||
}
|
||||
|
||||
if (result != SUCCESS && g_characters[characterId].m_unk0x07) {
|
||||
result = world->PlaceActor(actor);
|
||||
}
|
||||
|
||||
g_characters[characterId].m_unk0x07 = FALSE;
|
||||
|
||||
if (result != SUCCESS) {
|
||||
m_extras[i].m_roi = NULL;
|
||||
g_characters[characterId].m_inExtras = FALSE;
|
||||
}
|
||||
else {
|
||||
m_extras[i].m_characterId = characterId;
|
||||
m_extras[i].m_unk0x08 = Timer()->GetTime();
|
||||
m_extras[i].m_unk0x0c = TRUE;
|
||||
m_extras[i].m_unk0x0d = FALSE;
|
||||
g_characters[characterId].m_inExtras = TRUE;
|
||||
actor->SetWorldSpeed(0.0f);
|
||||
m_unk0x414++;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10063270
|
||||
// FUNCTION: BETA10 0x10044b9a
|
||||
void LegoAnimationManager::FUN_10063270(LegoROIList* p_list, LegoAnimPresenter* p_presenter)
|
||||
{
|
||||
if (p_list != NULL) {
|
||||
LegoWorld* world = CurrentWorld();
|
||||
LegoROI* roi;
|
||||
MxU32 i;
|
||||
|
||||
for (i = 0; i < sizeOfArray(g_vehicles); i++) {
|
||||
roi = Lego()->FindROI(g_vehicles[i].m_name);
|
||||
|
||||
if (roi != NULL) {
|
||||
if (!g_vehicles[i].m_unk0x05 && roi->GetVisibility()) {
|
||||
g_vehicles[i].m_unk0x04 = TRUE;
|
||||
}
|
||||
else {
|
||||
g_vehicles[i].m_unk0x04 = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LegoROIListCursor cursor(p_list);
|
||||
|
||||
while (cursor.Next(roi)) {
|
||||
if (roi->GetVisibility() && FUN_10062e20(roi, p_presenter)) {
|
||||
cursor.Detach();
|
||||
FUN_10063950(roi);
|
||||
}
|
||||
else {
|
||||
LegoExtraActor* actor = CharacterManager()->GetActor(roi->GetName());
|
||||
|
||||
if (actor != NULL) {
|
||||
for (MxS32 i = 0; i < (MxS32) sizeOfArray(m_extras); i++) {
|
||||
if (m_extras[i].m_roi == roi) {
|
||||
if (actor->GetController() != NULL) {
|
||||
actor->GetController()->RemoveActor(actor);
|
||||
actor->SetController(NULL);
|
||||
}
|
||||
|
||||
if (m_extras[i].m_unk0x14) {
|
||||
m_extras[i].m_unk0x14 = FALSE;
|
||||
|
||||
MxS32 vehicleId = g_characters[m_extras[i].m_characterId].m_vehicleId;
|
||||
if (vehicleId >= 0) {
|
||||
g_vehicles[vehicleId].m_unk0x05 = FALSE;
|
||||
|
||||
LegoROI* roi = Lego()->FindROI(g_vehicles[vehicleId].m_name);
|
||||
if (roi != NULL) {
|
||||
roi->SetVisibility(FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_extras[i].m_roi = NULL;
|
||||
g_characters[m_extras[i].m_characterId].m_inExtras = FALSE;
|
||||
g_characters[m_extras[i].m_characterId].m_unk0x07 = FALSE;
|
||||
m_extras[i].m_characterId = -1;
|
||||
m_extras[i].m_unk0x0d = FALSE;
|
||||
m_unk0x414--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FUN_10063e40(p_presenter);
|
||||
|
||||
for (i = 0; i < sizeOfArray(g_vehicles); i++) {
|
||||
if (!g_vehicles[i].m_unk0x05) {
|
||||
roi = Lego()->FindROI(g_vehicles[i].m_name);
|
||||
|
||||
if (roi != NULL) {
|
||||
roi->SetVisibility(FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10063780
|
||||
|
@ -2053,6 +2285,19 @@ void LegoAnimationManager::FUN_10063780(LegoROIList* p_list)
|
|||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10063950
|
||||
void LegoAnimationManager::FUN_10063950(LegoROI* p_roi)
|
||||
{
|
||||
if (m_unk0x424 != NULL) {
|
||||
LegoROIListCursor cursor(m_unk0x424);
|
||||
|
||||
if (cursor.Find(p_roi)) {
|
||||
CharacterManager()->FUN_10083db0(p_roi);
|
||||
cursor.Detach();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10063aa0
|
||||
void LegoAnimationManager::FUN_10063aa0()
|
||||
{
|
||||
|
@ -2064,17 +2309,67 @@ void LegoAnimationManager::FUN_10063aa0()
|
|||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10063b90
|
||||
// FUNCTION: LEGO1 0x10063b90
|
||||
// FUNCTION: BETA10 0x10044d46
|
||||
MxBool LegoAnimationManager::FUN_10063b90(
|
||||
LegoWorld* p_world,
|
||||
LegoExtraActor* p_actor,
|
||||
MxU8 p_unk0x14,
|
||||
MxU32 p_characterId
|
||||
)
|
||||
MxBool LegoAnimationManager::FUN_10063b90(LegoWorld* p_world, LegoExtraActor* p_actor, MxU8 p_mood, MxU32 p_characterId)
|
||||
{
|
||||
// TODO
|
||||
return TRUE;
|
||||
const char** cycles = g_cycles[g_characters[p_characterId].m_unk0x16];
|
||||
const char* vehicleWC;
|
||||
|
||||
if (g_characters[p_characterId].m_vehicleId >= 0 && g_vehicles[g_characters[p_characterId].m_vehicleId].m_unk0x04 &&
|
||||
(vehicleWC = cycles[10]) != NULL) {
|
||||
LegoLocomotionAnimPresenter* presenter =
|
||||
(LegoLocomotionAnimPresenter*) p_world->Find("LegoAnimPresenter", vehicleWC);
|
||||
|
||||
if (presenter != NULL) {
|
||||
presenter->FUN_1006d680(p_actor, 1.7f);
|
||||
}
|
||||
|
||||
g_vehicles[g_characters[p_characterId].m_vehicleId].m_unk0x04 = FALSE;
|
||||
g_vehicles[g_characters[p_characterId].m_vehicleId].m_unk0x05 = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
vehicleWC = cycles[p_mood];
|
||||
if (vehicleWC != NULL) {
|
||||
LegoLocomotionAnimPresenter* presenter =
|
||||
(LegoLocomotionAnimPresenter*) p_world->Find("LegoAnimPresenter", vehicleWC);
|
||||
|
||||
if (presenter != NULL) {
|
||||
presenter->FUN_1006d680(p_actor, 0.7f);
|
||||
}
|
||||
}
|
||||
|
||||
if (p_mood >= 2) {
|
||||
p_mood--;
|
||||
}
|
||||
|
||||
vehicleWC = cycles[p_mood + 4];
|
||||
if (vehicleWC != NULL) {
|
||||
LegoLocomotionAnimPresenter* presenter =
|
||||
(LegoLocomotionAnimPresenter*) p_world->Find("LegoAnimPresenter", vehicleWC);
|
||||
|
||||
if (presenter != NULL) {
|
||||
presenter->FUN_1006d680(p_actor, 4.0f);
|
||||
}
|
||||
}
|
||||
|
||||
if (p_mood >= 1) {
|
||||
p_mood--;
|
||||
}
|
||||
|
||||
vehicleWC = cycles[p_mood + 7];
|
||||
if (vehicleWC != NULL) {
|
||||
LegoLocomotionAnimPresenter* presenter =
|
||||
(LegoLocomotionAnimPresenter*) p_world->Find("LegoAnimPresenter", vehicleWC);
|
||||
|
||||
if (presenter != NULL) {
|
||||
presenter->FUN_1006d680(p_actor, 0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10063d10
|
||||
|
@ -2120,6 +2415,23 @@ void LegoAnimationManager::FUN_10063d10()
|
|||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10063e40
|
||||
void LegoAnimationManager::FUN_10063e40(LegoAnimPresenter* p_presenter)
|
||||
{
|
||||
if (m_unk0x424 != NULL) {
|
||||
LegoROIListCursor cursor(m_unk0x424);
|
||||
LegoROI* roi;
|
||||
|
||||
while (cursor.Next(roi)) {
|
||||
if (!FUN_10062e20(roi, p_presenter)) {
|
||||
CharacterManager()->FUN_10083db0(roi);
|
||||
}
|
||||
|
||||
cursor.Detach();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10063fb0
|
||||
// FUNCTION: BETA10 0x100452a7
|
||||
MxBool LegoAnimationManager::FUN_10063fb0(LegoLocation::Boundary* p_boundary, LegoWorld* p_world)
|
||||
|
@ -2163,7 +2475,7 @@ MxBool LegoAnimationManager::FUN_10064120(LegoLocation::Boundary* p_boundary, Mx
|
|||
{
|
||||
MxU32 local2c = 12;
|
||||
float destScale = ((rand() * 0.5) / 32767.0) + 0.25;
|
||||
IslePathActor* actor = CurrentActor();
|
||||
LegoPathActor* actor = CurrentActor();
|
||||
|
||||
if (actor == NULL) {
|
||||
return FALSE;
|
||||
|
@ -2329,15 +2641,15 @@ MxResult LegoAnimationManager::FUN_10064380(
|
|||
}
|
||||
|
||||
MxS32 characterId = m_extras[i].m_characterId;
|
||||
const char** unk0x100f6d58 = g_unk0x100f6d58[g_characters[characterId].m_unk0x16];
|
||||
const char** cycles = g_cycles[g_characters[characterId].m_unk0x16];
|
||||
|
||||
LegoLocomotionAnimPresenter* presenter =
|
||||
(LegoLocomotionAnimPresenter*) world->Find("LegoAnimPresenter", unk0x100f6d58[p_undIdx1]);
|
||||
(LegoLocomotionAnimPresenter*) world->Find("LegoAnimPresenter", cycles[p_undIdx1]);
|
||||
if (presenter != NULL) {
|
||||
presenter->FUN_1006d680(actor, 0.0f);
|
||||
}
|
||||
|
||||
presenter = (LegoLocomotionAnimPresenter*) world->Find("LegoAnimPresenter", unk0x100f6d58[p_undIdx2]);
|
||||
presenter = (LegoLocomotionAnimPresenter*) world->Find("LegoAnimPresenter", cycles[p_undIdx2]);
|
||||
if (presenter != NULL) {
|
||||
presenter->FUN_1006d680(actor, 4.0f);
|
||||
}
|
||||
|
@ -2348,7 +2660,7 @@ MxResult LegoAnimationManager::FUN_10064380(
|
|||
|
||||
g_characters[characterId].m_unk0x0c = p_unk0x0c;
|
||||
g_characters[characterId].m_unk0x10 = p_unk0x10;
|
||||
g_characters[characterId].m_unk0x04 = TRUE;
|
||||
g_characters[characterId].m_inExtras = TRUE;
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -2411,11 +2723,61 @@ MxResult LegoAnimationManager::FUN_10064740(Vector3* p_position)
|
|||
return FAILURE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100648f0
|
||||
// FUNCTION: BETA10 0x10045daf
|
||||
void LegoAnimationManager::FUN_100648f0(LegoTranInfo*, MxLong)
|
||||
// FUNCTION: LEGO1 0x10064880
|
||||
// FUNCTION: BETA10 0x10045d02
|
||||
MxResult LegoAnimationManager::FUN_10064880(const char* p_name, MxS32 p_unk0x0c, MxS32 p_unk0x10)
|
||||
{
|
||||
// TODO
|
||||
for (MxS32 i = 0; i < (MxS32) sizeOfArray(m_extras); i++) {
|
||||
LegoROI* roi = m_extras[i].m_roi;
|
||||
|
||||
if (roi != NULL) {
|
||||
if (!strcmpi(roi->GetName(), p_name)) {
|
||||
g_characters[m_extras[i].m_characterId].m_unk0x0c = p_unk0x0c;
|
||||
g_characters[m_extras[i].m_characterId].m_unk0x10 = p_unk0x10;
|
||||
return SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100648f0
|
||||
// FUNCTION: BETA10 0x10045daf
|
||||
void LegoAnimationManager::FUN_100648f0(LegoTranInfo* p_tranInfo, MxLong p_unk0x404)
|
||||
{
|
||||
if (m_unk0x402 && p_tranInfo->m_unk0x14) {
|
||||
p_tranInfo->m_flags |= LegoTranInfo::c_bit1;
|
||||
m_unk0x430 = TRUE;
|
||||
m_unk0x42c = p_tranInfo;
|
||||
m_unk0x434 = p_unk0x404;
|
||||
m_unk0x438 = p_unk0x404 + 1000;
|
||||
|
||||
ViewROI* viewROI = VideoManager()->GetViewROI();
|
||||
m_unk0x43c = viewROI->GetLocal2World();
|
||||
p_tranInfo->m_unk0x2c = m_unk0x43c;
|
||||
|
||||
LegoPathActor* actor = CurrentActor();
|
||||
if (actor != NULL) {
|
||||
actor->SetState(4);
|
||||
actor->SetWorldSpeed(0.0f);
|
||||
}
|
||||
|
||||
LegoLocation* location = NavController()->GetLocation(p_tranInfo->m_location);
|
||||
if (location != NULL) {
|
||||
CalcLocalTransform(location->m_position, location->m_direction, location->m_up, m_unk0x484);
|
||||
m_unk0x4cc.Unknown1(m_unk0x43c, m_unk0x484);
|
||||
m_unk0x4cc.Unknown7();
|
||||
}
|
||||
else {
|
||||
p_tranInfo->m_flags &= ~LegoTranInfo::c_bit1;
|
||||
m_unk0x430 = FALSE;
|
||||
}
|
||||
|
||||
Mx3DPointFloat vec;
|
||||
vec.Clear();
|
||||
viewROI->FUN_100a5a30(vec);
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10064b50
|
||||
|
@ -2439,7 +2801,7 @@ void LegoAnimationManager::FUN_10064b50(MxLong p_time)
|
|||
sub[1] = (m_unk0x484[3][1] - m_unk0x43c[3][1]) * und;
|
||||
sub[2] = (m_unk0x484[3][2] - m_unk0x43c[3][2]) * und;
|
||||
|
||||
m_unk0x4cc.Unknown_100040a0(mat, (float) (p_time - m_unk0x434) / 1000.0f);
|
||||
m_unk0x4cc.Unknown6(mat, (float) (p_time - m_unk0x434) / 1000.0f);
|
||||
|
||||
VPV3(mat[3], m_unk0x43c[3], sub);
|
||||
mat[3][4] = 1.0f;
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include "mxmisc.h"
|
||||
#include "mxnotificationmanager.h"
|
||||
#include "mxobjectfactory.h"
|
||||
#include "mxstreamer.h"
|
||||
#include "mxtimer.h"
|
||||
#include "mxutilities.h"
|
||||
|
||||
|
@ -425,14 +426,14 @@ MxBool LegoAnimMMPresenter::FUN_1004b6b0(MxLong p_time)
|
|||
MxBool LegoAnimMMPresenter::FUN_1004b6d0(MxLong p_time)
|
||||
{
|
||||
LegoROI* viewROI = VideoManager()->GetViewROI();
|
||||
IslePathActor* actor = CurrentActor();
|
||||
LegoPathActor* actor = CurrentActor();
|
||||
|
||||
if (m_tranInfo != NULL && m_tranInfo->m_unk0x14 && m_tranInfo->m_location != -1 && actor != NULL) {
|
||||
if (m_unk0x64 != NULL) {
|
||||
undefined4 und = 1;
|
||||
|
||||
if (m_presenter != NULL) {
|
||||
m_unk0x64->RemovePathActor(actor);
|
||||
m_unk0x64->RemoveActor(actor);
|
||||
|
||||
if (m_tranInfo->m_unk0x29) {
|
||||
Mx3DPointFloat position, direction;
|
||||
|
@ -441,7 +442,7 @@ MxBool LegoAnimMMPresenter::FUN_1004b6d0(MxLong p_time)
|
|||
direction = viewROI->GetWorldDirection();
|
||||
position[1] -= 1.25;
|
||||
|
||||
und = m_unk0x64->FUN_1001fb70(actor, m_presenter, position, direction);
|
||||
und = m_unk0x64->PlaceActor(actor, m_presenter, position, direction);
|
||||
}
|
||||
else {
|
||||
und = 0;
|
||||
|
@ -451,7 +452,7 @@ MxBool LegoAnimMMPresenter::FUN_1004b6d0(MxLong p_time)
|
|||
if (und != 0) {
|
||||
viewROI->WrappedSetLocalTransform(m_tranInfo->m_unk0x2c);
|
||||
VideoManager()->Get3DManager()->Moved(*viewROI);
|
||||
m_unk0x64->AddPathActor(actor);
|
||||
m_unk0x64->PlaceActor(actor);
|
||||
}
|
||||
|
||||
if (m_tranInfo->m_unk0x29) {
|
||||
|
@ -465,10 +466,28 @@ MxBool LegoAnimMMPresenter::FUN_1004b6d0(MxLong p_time)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1004b840
|
||||
// FUNCTION: LEGO1 0x1004b840
|
||||
// FUNCTION: BETA10 0x1004d033
|
||||
void LegoAnimMMPresenter::FUN_1004b840()
|
||||
{
|
||||
// TODO
|
||||
MxDSAction* action = m_action;
|
||||
|
||||
if (m_presenter != NULL) {
|
||||
m_presenter->FUN_1006c7a0();
|
||||
}
|
||||
|
||||
for (MxCompositePresenterList::iterator it = m_list.begin(); it != m_list.end(); it++) {
|
||||
if (*it != m_presenter) {
|
||||
(*it)->EndAction();
|
||||
}
|
||||
}
|
||||
|
||||
FUN_1004b6d0(0);
|
||||
EndAction();
|
||||
|
||||
if (action != NULL) {
|
||||
Streamer()->FUN_100b98f0(action);
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x1004b8b0
|
||||
|
@ -478,8 +497,9 @@ MxBool LegoAnimMMPresenter::FUN_1004b8b0()
|
|||
return m_tranInfo != NULL ? m_tranInfo->m_unk0x28 : TRUE;
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x1004b8c0
|
||||
// FUNCTION: LEGO1 0x1004b8c0
|
||||
// FUNCTION: BETA10 0x1004d13d
|
||||
void LegoAnimMMPresenter::FUN_1004b8c0()
|
||||
{
|
||||
// TODO
|
||||
FUN_1004b6d0(0);
|
||||
}
|
||||
|
|
|
@ -116,7 +116,7 @@ MxResult LegoCharacterManager::Write(LegoStorage* p_storage)
|
|||
if (p_storage->Write(&info->m_unk0x10, sizeof(info->m_unk0x10)) != SUCCESS) {
|
||||
goto done;
|
||||
}
|
||||
if (p_storage->Write(&info->m_unk0x14, sizeof(info->m_unk0x14)) != SUCCESS) {
|
||||
if (p_storage->Write(&info->m_mood, sizeof(info->m_mood)) != SUCCESS) {
|
||||
goto done;
|
||||
}
|
||||
if (p_storage->Write(&info->m_parts[c_infohatPart].m_unk0x08, sizeof(info->m_parts[c_infohatPart].m_unk0x08)) !=
|
||||
|
@ -171,7 +171,7 @@ MxResult LegoCharacterManager::Read(LegoStorage* p_storage)
|
|||
if (p_storage->Read(&info->m_unk0x10, sizeof(info->m_unk0x10)) != SUCCESS) {
|
||||
goto done;
|
||||
}
|
||||
if (p_storage->Read(&info->m_unk0x14, sizeof(info->m_unk0x14)) != SUCCESS) {
|
||||
if (p_storage->Read(&info->m_mood, sizeof(info->m_mood)) != SUCCESS) {
|
||||
goto done;
|
||||
}
|
||||
if (p_storage->Read(&info->m_parts[c_infohatPart].m_unk0x08, sizeof(info->m_parts[c_infohatPart].m_unk0x08)) !=
|
||||
|
@ -449,7 +449,7 @@ LegoROI* LegoCharacterManager::CreateROI(const char* p_key)
|
|||
|
||||
info->m_unk0x0c = pepper->m_unk0x0c;
|
||||
info->m_unk0x10 = pepper->m_unk0x10;
|
||||
info->m_unk0x14 = pepper->m_unk0x14;
|
||||
info->m_mood = pepper->m_mood;
|
||||
|
||||
for (i = 0; i < sizeOfArray(info->m_parts); i++) {
|
||||
info->m_parts[i] = pepper->m_parts[i];
|
||||
|
@ -760,7 +760,7 @@ MxU32 LegoCharacterManager::FUN_10085140(LegoROI* p_roi, MxBool p_und)
|
|||
LegoCharacterInfo* info = GetInfo(p_roi);
|
||||
|
||||
if (p_und) {
|
||||
return info->m_unk0x14 + g_unk0x100fc4dc;
|
||||
return info->m_mood + g_unk0x100fc4dc;
|
||||
}
|
||||
|
||||
if (info != NULL) {
|
||||
|
@ -772,12 +772,12 @@ MxU32 LegoCharacterManager::FUN_10085140(LegoROI* p_roi, MxBool p_und)
|
|||
|
||||
// FUNCTION: LEGO1 0x10085180
|
||||
// FUNCTION: BETA10 0x100768c5
|
||||
MxU8 LegoCharacterManager::FUN_10085180(LegoROI* p_roi)
|
||||
MxU8 LegoCharacterManager::GetMood(LegoROI* p_roi)
|
||||
{
|
||||
LegoCharacterInfo* info = GetInfo(p_roi);
|
||||
|
||||
if (info != NULL) {
|
||||
return info->m_unk0x14;
|
||||
return info->m_mood;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -172,7 +172,7 @@ void LegoGameState::SetActor(MxU8 p_actorId)
|
|||
m_actorId = p_actorId;
|
||||
}
|
||||
|
||||
IslePathActor* oldActor = CurrentActor();
|
||||
LegoPathActor* oldActor = CurrentActor();
|
||||
SetCurrentActor(NULL);
|
||||
|
||||
IslePathActor* newActor = new IslePathActor();
|
||||
|
@ -199,7 +199,7 @@ void LegoGameState::SetActor(MxU8 p_actorId)
|
|||
// FUNCTION: LEGO1 0x10039910
|
||||
void LegoGameState::RemoveActor()
|
||||
{
|
||||
IslePathActor* actor = CurrentActor();
|
||||
LegoPathActor* actor = CurrentActor();
|
||||
SetCurrentActor(NULL);
|
||||
delete actor;
|
||||
m_actorId = 0;
|
||||
|
@ -209,7 +209,7 @@ void LegoGameState::RemoveActor()
|
|||
void LegoGameState::ResetROI()
|
||||
{
|
||||
if (m_actorId) {
|
||||
IslePathActor* actor = CurrentActor();
|
||||
LegoPathActor* actor = CurrentActor();
|
||||
|
||||
if (actor) {
|
||||
LegoROI* roi = actor->GetROI();
|
||||
|
@ -906,11 +906,12 @@ void LegoGameState::SwitchArea(Area p_area)
|
|||
AnimationManager()->Resume();
|
||||
}
|
||||
|
||||
CurrentActor()->SpawnPlayer(
|
||||
p_area,
|
||||
TRUE,
|
||||
IslePathActor::c_spawnBit1 | IslePathActor::c_playMusic | IslePathActor::c_spawnBit3
|
||||
);
|
||||
((IslePathActor*) CurrentActor())
|
||||
->SpawnPlayer(
|
||||
p_area,
|
||||
TRUE,
|
||||
IslePathActor::c_spawnBit1 | IslePathActor::c_playMusic | IslePathActor::c_spawnBit3
|
||||
);
|
||||
break;
|
||||
}
|
||||
case e_hospital:
|
||||
|
@ -922,11 +923,12 @@ void LegoGameState::SwitchArea(Area p_area)
|
|||
SetCameraControllerFromIsle();
|
||||
CurrentActor()->ResetWorldTransform(TRUE);
|
||||
AnimationManager()->Resume();
|
||||
CurrentActor()->SpawnPlayer(
|
||||
p_area,
|
||||
TRUE,
|
||||
IslePathActor::c_spawnBit1 | IslePathActor::c_playMusic | IslePathActor::c_spawnBit3
|
||||
);
|
||||
((IslePathActor*) CurrentActor())
|
||||
->SpawnPlayer(
|
||||
p_area,
|
||||
TRUE,
|
||||
IslePathActor::c_spawnBit1 | IslePathActor::c_playMusic | IslePathActor::c_spawnBit3
|
||||
);
|
||||
break;
|
||||
case e_police:
|
||||
VideoManager()->SetUnk0x554(TRUE);
|
||||
|
@ -1100,28 +1102,28 @@ void LegoGameState::Init()
|
|||
|
||||
Helicopter* copter = (Helicopter*) isle->Find(*g_copterScript, CopterScript::c_Helicopter_Actor);
|
||||
if (copter) {
|
||||
isle->RemovePathActor(copter);
|
||||
isle->RemoveActor(copter);
|
||||
isle->VTable0x6c(copter);
|
||||
delete copter;
|
||||
}
|
||||
|
||||
DuneBuggy* dunebuggy = (DuneBuggy*) isle->Find(*g_dunecarScript, DunecarScript::c_DuneBugy_Actor);
|
||||
if (dunebuggy) {
|
||||
isle->RemovePathActor(dunebuggy);
|
||||
isle->RemoveActor(dunebuggy);
|
||||
isle->VTable0x6c(dunebuggy);
|
||||
delete dunebuggy;
|
||||
}
|
||||
|
||||
Jetski* jetski = (Jetski*) isle->Find(*g_jetskiScript, JetskiScript::c_Jetski_Actor);
|
||||
if (jetski) {
|
||||
isle->RemovePathActor(jetski);
|
||||
isle->RemoveActor(jetski);
|
||||
isle->VTable0x6c(jetski);
|
||||
delete jetski;
|
||||
}
|
||||
|
||||
RaceCar* racecar = (RaceCar*) isle->Find(*g_racecarScript, RacecarScript::c_RaceCar_Actor);
|
||||
if (racecar) {
|
||||
isle->RemovePathActor(racecar);
|
||||
isle->RemoveActor(racecar);
|
||||
isle->VTable0x6c(racecar);
|
||||
delete racecar;
|
||||
}
|
||||
|
|
|
@ -20,6 +20,10 @@ DECOMP_SIZE_ASSERT(CustomizeAnimFileVariable, 0x24)
|
|||
// STRING: LEGO1 0x100f39a0
|
||||
const char* g_varAMBULFUEL = "ambulFUEL";
|
||||
|
||||
// GLOBAL: LEGO1 0x100f43b4
|
||||
// STRING: LEGO1 0x100f439c
|
||||
const char* g_varTOWFUEL = "towFUEL";
|
||||
|
||||
// GLOBAL: LEGO1 0x100f3a40
|
||||
// STRING: LEGO1 0x100f3808
|
||||
const char* g_varVISIBILITY = "VISIBILITY";
|
||||
|
|
|
@ -67,7 +67,7 @@ LegoNavController* NavController()
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10015790
|
||||
IslePathActor* CurrentActor()
|
||||
LegoPathActor* CurrentActor()
|
||||
{
|
||||
return LegoOmni::GetInstance()->GetCurrentActor();
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ void SetROIVisible(const char* p_name, MxBool p_visible)
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10015880
|
||||
void SetCurrentActor(IslePathActor* p_currentActor)
|
||||
void SetCurrentActor(LegoPathActor* p_currentActor)
|
||||
{
|
||||
LegoOmni::GetInstance()->SetCurrentActor(p_currentActor);
|
||||
}
|
||||
|
|
|
@ -184,7 +184,7 @@ MxBool MxControlPresenter::FUN_10044480(LegoControlManagerEvent* p_event, MxPres
|
|||
p_event->SetClickedObjectId(m_action->GetObjectId());
|
||||
p_event->SetClickedAtom(m_action->GetAtomId().GetInternal());
|
||||
VTable0x6c(0);
|
||||
p_event->SetType(c_notificationClick);
|
||||
p_event->SetType(c_notificationControl);
|
||||
p_event->SetUnknown0x28(m_unk0x4e);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -194,7 +194,7 @@ MxBool MxControlPresenter::FUN_10044480(LegoControlManagerEvent* p_event, MxPres
|
|||
p_event->SetClickedObjectId(m_action->GetObjectId());
|
||||
p_event->SetClickedAtom(m_action->GetAtomId().GetInternal());
|
||||
VTable0x6c(m_unk0x56);
|
||||
p_event->SetType(c_notificationClick);
|
||||
p_event->SetType(c_notificationControl);
|
||||
p_event->SetUnknown0x28(m_unk0x4e);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -206,9 +206,9 @@ MxBool MxControlPresenter::FUN_10044480(LegoControlManagerEvent* p_event, MxPres
|
|||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x10044540
|
||||
void MxControlPresenter::VTable0x6c(MxS16 p_val)
|
||||
void MxControlPresenter::VTable0x6c(MxS16 p_unk0x4e)
|
||||
{
|
||||
if (p_val == -1) {
|
||||
if (p_unk0x4e == -1) {
|
||||
if ((MxS16) ((MxDSMultiAction*) m_action)->GetActionList()->GetCount() - m_unk0x4e == 1) {
|
||||
m_unk0x4e = 0;
|
||||
}
|
||||
|
@ -217,7 +217,7 @@ void MxControlPresenter::VTable0x6c(MxS16 p_val)
|
|||
}
|
||||
}
|
||||
else {
|
||||
m_unk0x4e = p_val;
|
||||
m_unk0x4e = p_unk0x4e;
|
||||
}
|
||||
|
||||
m_action->SetUnknown90(Timer()->GetTime());
|
||||
|
|
|
@ -116,9 +116,27 @@ void LegoControlManager::FUN_100292e0()
|
|||
}
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x100293c0
|
||||
void LegoControlManager::FUN_100293c0(undefined4, const char*, undefined2)
|
||||
// FUNCTION: LEGO1 0x100293c0
|
||||
void LegoControlManager::FUN_100293c0(MxU32 p_objectId, const char* p_atom, MxS16 p_unk0x4e)
|
||||
{
|
||||
if (m_presenterList) {
|
||||
MxPresenterListCursor cursor(m_presenterList);
|
||||
MxPresenter* control;
|
||||
|
||||
while (cursor.Next(control)) {
|
||||
MxDSAction* action = control->GetAction();
|
||||
|
||||
if (action->GetObjectId() == p_objectId && action->GetAtomId().GetInternal() == p_atom) {
|
||||
((MxControlPresenter*) control)->VTable0x6c(p_unk0x4e);
|
||||
|
||||
if (((MxControlPresenter*) control)->GetUnknown0x4e() == 0) {
|
||||
g_unk0x100f31b0 = -1;
|
||||
g_unk0x100f31b4 = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// FUNCTION: LEGO1 0x100294e0
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue