mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-23 16:21:15 +00:00
Merge remote-tracking branch 'upstream/master' into ghidra-function-import-script
This commit is contained in:
commit
bdce6575cd
@ -306,12 +306,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
|
||||
@ -345,12 +345,12 @@ add_library(lego1 SHARED
|
||||
LEGO1/lego/legoomni/src/entity/legoactor.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoactorpresenter.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legocameracontroller.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legocameralocations.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legocarraceactor.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoentity.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoentitypresenter.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legojetski.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legojetskiraceactor.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legolocations.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legonavcontroller.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legopovcontroller.cpp
|
||||
LEGO1/lego/legoomni/src/entity/legoworld.cpp
|
||||
@ -376,6 +376,7 @@ add_library(lego1 SHARED
|
||||
LEGO1/lego/legoomni/src/paths/legopathboundary.cpp
|
||||
LEGO1/lego/legoomni/src/paths/legopathcontroller.cpp
|
||||
LEGO1/lego/legoomni/src/paths/legopathpresenter.cpp
|
||||
LEGO1/lego/legoomni/src/paths/legopathstruct.cpp
|
||||
LEGO1/lego/legoomni/src/pizzeria/pizzamissionstate.cpp
|
||||
LEGO1/lego/legoomni/src/pizzeria/pizzeriastate.cpp
|
||||
LEGO1/lego/legoomni/src/police/policeentity.cpp
|
||||
|
||||
@ -177,7 +177,7 @@ void CMainDialog::UpdateInterface()
|
||||
CheckDlgButton(IDC_CHK_FLIP_VIDEO_MEM_PAGES, currentConfigApp->m_flip_surfaces);
|
||||
CheckDlgButton(IDC_CHK_3D_VIDEO_MEMORY, currentConfigApp->m_3d_video_ram);
|
||||
BOOL full_screen = currentConfigApp->m_full_screen;
|
||||
currentConfigApp->FUN_00403810();
|
||||
currentConfigApp->AdjustDisplayBitDepthBasedOnRenderStatus();
|
||||
if (currentConfigApp->GetHardwareDeviceColorModel()) {
|
||||
CheckDlgButton(IDC_CHK_DRAW_CURSOR, TRUE);
|
||||
}
|
||||
@ -198,8 +198,9 @@ void CMainDialog::UpdateInterface()
|
||||
CheckDlgButton(IDC_RAD_PALETTE_16BIT, 0);
|
||||
currentConfigApp->m_display_bit_depth = 0;
|
||||
}
|
||||
GetDlgItem(IDC_RAD_PALETTE_256)->EnableWindow(full_screen && currentConfigApp->FUN_004037a0());
|
||||
GetDlgItem(IDC_RAD_PALETTE_16BIT)->EnableWindow(full_screen && currentConfigApp->FUN_004037e0());
|
||||
GetDlgItem(IDC_RAD_PALETTE_256)
|
||||
->EnableWindow(full_screen && currentConfigApp->GetConditionalDeviceRenderBitDepth());
|
||||
GetDlgItem(IDC_RAD_PALETTE_16BIT)->EnableWindow(full_screen && currentConfigApp->GetDeviceRenderBitStatus());
|
||||
CheckDlgButton(IDC_CHK_3DSOUND, currentConfigApp->m_3d_sound);
|
||||
CheckDlgButton(IDC_CHK_DRAW_CURSOR, currentConfigApp->m_draw_cursor);
|
||||
switch (currentConfigApp->m_model_quality) {
|
||||
|
||||
@ -198,7 +198,7 @@ BOOL CConfigApp::ReadRegInt(LPCSTR p_key, int* p_value) const
|
||||
}
|
||||
|
||||
// FUNCTION: CONFIG 0x004033d0
|
||||
BOOL CConfigApp::FUN_004033d0() const
|
||||
BOOL CConfigApp::IsDeviceInBasicRGBMode() const
|
||||
{
|
||||
/*
|
||||
* BUG: should be:
|
||||
@ -286,7 +286,7 @@ BOOL CConfigApp::ValidateSettings()
|
||||
m_full_screen = TRUE;
|
||||
is_modified = TRUE;
|
||||
}
|
||||
if (FUN_004033d0()) {
|
||||
if (IsDeviceInBasicRGBMode()) {
|
||||
if (m_3d_video_ram) {
|
||||
m_3d_video_ram = FALSE;
|
||||
is_modified = TRUE;
|
||||
@ -340,9 +340,9 @@ BOOL CConfigApp::ValidateSettings()
|
||||
}
|
||||
|
||||
// FUNCTION: CONFIG 0x004037a0
|
||||
DWORD CConfigApp::FUN_004037a0() const
|
||||
DWORD CConfigApp::GetConditionalDeviceRenderBitDepth() const
|
||||
{
|
||||
if (FUN_004033d0()) {
|
||||
if (IsDeviceInBasicRGBMode()) {
|
||||
return 0;
|
||||
}
|
||||
if (GetHardwareDeviceColorModel()) {
|
||||
@ -352,7 +352,7 @@ DWORD CConfigApp::FUN_004037a0() const
|
||||
}
|
||||
|
||||
// FUNCTION: CONFIG 0x004037e0
|
||||
DWORD CConfigApp::FUN_004037e0() const
|
||||
DWORD CConfigApp::GetDeviceRenderBitStatus() const
|
||||
{
|
||||
if (GetHardwareDeviceColorModel()) {
|
||||
return m_device->m_HWDesc.dwDeviceRenderBitDepth & 0x400;
|
||||
@ -363,23 +363,23 @@ DWORD CConfigApp::FUN_004037e0() const
|
||||
}
|
||||
|
||||
// FUNCTION: CONFIG 0x00403810
|
||||
BOOL CConfigApp::FUN_00403810()
|
||||
BOOL CConfigApp::AdjustDisplayBitDepthBasedOnRenderStatus()
|
||||
{
|
||||
if (m_display_bit_depth == 8) {
|
||||
if (FUN_004037a0()) {
|
||||
if (GetConditionalDeviceRenderBitDepth()) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
if (m_display_bit_depth == 16) {
|
||||
if (FUN_004037e0()) {
|
||||
if (GetDeviceRenderBitStatus()) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
if (FUN_004037a0()) {
|
||||
if (GetConditionalDeviceRenderBitDepth()) {
|
||||
m_display_bit_depth = 8;
|
||||
return TRUE;
|
||||
}
|
||||
if (FUN_004037e0()) {
|
||||
if (GetDeviceRenderBitStatus()) {
|
||||
m_display_bit_depth = 16;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -34,14 +34,14 @@ class CConfigApp : public CWinApp {
|
||||
BOOL ReadReg(LPCSTR p_key, LPCSTR p_value, DWORD p_size) const;
|
||||
BOOL ReadRegBool(LPCSTR p_key, BOOL* p_bool) const;
|
||||
BOOL ReadRegInt(LPCSTR p_key, int* p_value) const;
|
||||
BOOL FUN_004033d0() const;
|
||||
BOOL IsDeviceInBasicRGBMode() const;
|
||||
D3DCOLORMODEL GetHardwareDeviceColorModel() const;
|
||||
BOOL IsPrimaryDriver() const;
|
||||
BOOL ReadRegisterSettings();
|
||||
BOOL ValidateSettings();
|
||||
DWORD FUN_004037a0() const;
|
||||
DWORD FUN_004037e0() const;
|
||||
BOOL FUN_00403810();
|
||||
DWORD GetConditionalDeviceRenderBitDepth() const;
|
||||
DWORD GetDeviceRenderBitStatus() const;
|
||||
BOOL AdjustDisplayBitDepthBasedOnRenderStatus();
|
||||
void CConfigApp::WriteRegisterSettings() const;
|
||||
|
||||
//{{AFX_MSG(CConfigApp)
|
||||
|
||||
@ -12,6 +12,42 @@ const char* g_strANIMATION = "ANIMATION";
|
||||
// STRING: LEGO1 0x10102024
|
||||
const char* g_strATTACH_CAMERA = "ATTACH_CAMERA";
|
||||
|
||||
// GLOBAL: LEGO1 0x10102054
|
||||
// STRING: LEGO1 0x10102018
|
||||
const char* g_strAUTO_CREATE = "AUTO_CREATE";
|
||||
|
||||
// GLOBAL: LEGO1 0x1010205c
|
||||
// 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";
|
||||
|
||||
// GLOBAL: LEGO1 0x10102068
|
||||
// STRING: LEGO1 0x10101fe4
|
||||
const char* g_strGRID = "GRID";
|
||||
|
||||
// GLOBAL: LEGO1 0x1010206c
|
||||
// STRING: LEGO1 0x10101fe0
|
||||
const char* g_strMAP = "MAP";
|
||||
|
||||
// GLOBAL: LEGO1 0x10102074
|
||||
// STRING: LEGO1 0x10101fd0
|
||||
const char* g_strTOGGLE = "TOGGLE";
|
||||
|
||||
// GLOBAL: LEGO1 0x10102078
|
||||
// STRING: LEGO1 0x10101fc4
|
||||
const char* g_strDB_CREATE = "DB_CREATE";
|
||||
|
||||
// GLOBAL: LEGO1 0x1010207c
|
||||
// STRING: LEGO1 0x10101fb4
|
||||
const char* g_strFILLER_INDEX = "FILLER_INDEX";
|
||||
|
||||
// GLOBAL: LEGO1 0x10102080
|
||||
// STRING: LEGO1 0x100f4368
|
||||
const char* g_strFROM_PARENT = "FROM_PARENT";
|
||||
@ -20,6 +56,14 @@ const char* g_strFROM_PARENT = "FROM_PARENT";
|
||||
// STRING: LEGO1 0x10101fa4
|
||||
const char* g_strHIDE_ON_STOP = "HIDE_ON_STOP";
|
||||
|
||||
// GLOBAL: LEGO1 0x10102088
|
||||
// STRING: LEGO1 0x10101f94
|
||||
const char* g_strLEFT_TO_RIGHT = "LEFT_TO_RIGHT";
|
||||
|
||||
// GLOBAL: LEGO1 0x10102094
|
||||
// STRING: LEGO1 0x10101f70
|
||||
const char* g_strTYPE = "TYPE";
|
||||
|
||||
// GLOBAL: LEGO1 0x10102098
|
||||
// STRING: LEGO1 0x10101f60
|
||||
const char* g_strMUST_SUCCEED = "MUST_SUCCEED";
|
||||
@ -28,10 +72,22 @@ 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";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020ac
|
||||
// STRING: LEGO1 0x10101f28
|
||||
const char* g_strRIGHT_TO_LEFT = "RIGHT_TO_LEFT";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020b0
|
||||
// STRING: LEGO1 0x10101f20
|
||||
const char* g_strSOUND = "SOUND";
|
||||
@ -48,6 +104,18 @@ const char* g_strSPEED = "SPEED";
|
||||
// STRING: LEGO1 0x10101f10
|
||||
const char* g_strSUBST = "SUBST";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020c0
|
||||
// STRING: LEGO1 0x10101f00
|
||||
const char* g_strTOP_TO_BOTTOM = "TOP_TO_BOTTOM";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020c4
|
||||
// STRING: LEGO1 0x10101ef0
|
||||
const char* g_strTRIGGERS_SOURCE = "TRIGGERS_SOURCE";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020c8
|
||||
// STRING: LEGO1 0x10101ee4
|
||||
const char* g_strVARIABLE = "VARIABLE";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020cc
|
||||
// STRING: LEGO1 0x100f3808
|
||||
const char* g_strVISIBILITY = "VISIBILITY";
|
||||
@ -60,6 +128,10 @@ const char* g_strWORLD = "WORLD";
|
||||
// STRING: LEGO1 0x10101ed0
|
||||
const char* g_strANIMMAN_ID = "ANIMMAN_ID";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020e0
|
||||
// STRING: LEGO1 0x10101eb0
|
||||
const char* g_strBMP_ISMAP = "BMP_ISMAP";
|
||||
|
||||
// GLOBAL: LEGO1 0x101020e4
|
||||
// STRING: LEGO1 0x10101eac
|
||||
const char* g_parseExtraTokens = ":;";
|
||||
|
||||
@ -18,6 +18,24 @@ extern const char* g_strFROM_PARENT;
|
||||
extern const char* g_strHIDE_ON_STOP;
|
||||
extern const char* g_strMUST_SUCCEED;
|
||||
extern const char* g_strSUBST;
|
||||
extern const char* g_strTRIGGERS_SOURCE;
|
||||
extern const char* g_strPTATCAM;
|
||||
extern const char* g_strTOGGLE;
|
||||
extern const char* g_strMAP;
|
||||
extern const char* g_strGRID;
|
||||
extern const char* g_strSTYLE;
|
||||
extern const char* g_strTYPE;
|
||||
extern const char* g_strLEFT_TO_RIGHT;
|
||||
extern const char* g_strRIGHT_TO_LEFT;
|
||||
extern const char* g_strBOTTOM_TO_TOP;
|
||||
extern const char* g_strTOP_TO_BOTTOM;
|
||||
extern const char* g_strFILLER_INDEX;
|
||||
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
|
||||
|
||||
@ -15,7 +15,7 @@ class Act2Actor : public LegoAnimActor {
|
||||
MxS32 VTable0x68(Vector3&, Vector3&, Vector3&) override; // vtable+0x68
|
||||
void VTable0x70(float p_und) override; // vtable+0x70
|
||||
MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94
|
||||
MxResult WaitForAnimation() override; // vtable+0x9c
|
||||
MxResult VTable0x9c() override; // vtable+0x9c
|
||||
MxS32 VTable0xa0() override; // vtable+0xa0
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1001a0a0
|
||||
|
||||
@ -32,7 +32,7 @@ class Act3 : public LegoWorld {
|
||||
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 @@ class Ambulance : public IslePathActor {
|
||||
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 @@ class AmbulanceMissionState : public LegoState {
|
||||
|
||||
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 @@ class AmbulanceMissionState : public LegoState {
|
||||
// SYNTHETIC: LEGO1 0x100376c0
|
||||
// AmbulanceMissionState::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
undefined4 m_unk0x08; // 0x08
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
MxU16 m_unk0x10; // 0x10
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
|
||||
// SIZE 0x30
|
||||
struct ModelInfo {
|
||||
char* m_modelName; // 0x00
|
||||
char* m_name; // 0x00
|
||||
MxU8 m_unk0x04; // 0x04
|
||||
float m_location[3]; // 0x08
|
||||
float m_direction[3]; // 0x14
|
||||
@ -15,18 +15,18 @@ struct ModelInfo {
|
||||
|
||||
// SIZE 0x30
|
||||
struct AnimInfo {
|
||||
char* m_animName; // 0x00
|
||||
char* m_name; // 0x00
|
||||
MxU32 m_objectId; // 0x04
|
||||
MxS16 m_unk0x08; // 0x08
|
||||
MxS16 m_location; // 0x08
|
||||
MxBool m_unk0x0a; // 0x0a
|
||||
MxU8 m_unk0x0b; // 0x0b
|
||||
MxU8 m_unk0x0c; // 0x0c
|
||||
MxU8 m_unk0x0d; // 0x0d
|
||||
MxU32 m_unk0x10[4]; // 0x10
|
||||
float m_unk0x10[4]; // 0x10
|
||||
MxU8 m_modelCount; // 0x20
|
||||
MxS16 m_unk0x22; // 0x22
|
||||
MxU16 m_unk0x22; // 0x22
|
||||
ModelInfo* m_models; // 0x24
|
||||
MxU8 m_unk0x28; // 0x28
|
||||
MxS8 m_unk0x28; // 0x28
|
||||
MxBool m_unk0x29; // 0x29
|
||||
MxS8 m_unk0x2a[3]; // 0x2a
|
||||
};
|
||||
|
||||
@ -23,10 +23,10 @@ class Bike : public IslePathActor {
|
||||
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 @@ class CarRace : public LegoRace {
|
||||
|
||||
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 @@ class DuneBuggy : public IslePathActor {
|
||||
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 @@ class ElevatorBottom : public LegoWorld {
|
||||
// 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 @@ class ElevatorBottom : public LegoWorld {
|
||||
private:
|
||||
LegoGameState::Area m_destLocation; // 0xf8
|
||||
|
||||
MxLong HandleClick(LegoControlManagerEvent& p_param);
|
||||
MxLong HandleControl(LegoControlManagerEvent& p_param);
|
||||
};
|
||||
|
||||
#endif // ELEVATORBOTTOM_H
|
||||
|
||||
@ -32,12 +32,12 @@ class GasStation : public LegoWorld {
|
||||
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 @@ class Helicopter : public IslePathActor {
|
||||
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 @@ class Helicopter : public IslePathActor {
|
||||
UnknownMx4DPointFloat m_unk0x1f4; // 0x1f4
|
||||
HelicopterState* m_state; // 0x228
|
||||
MxAtomId m_script; // 0x22c
|
||||
|
||||
private:
|
||||
void GetState();
|
||||
};
|
||||
|
||||
#endif // HELICOPTER_H
|
||||
|
||||
@ -31,7 +31,7 @@ class HistoryBook : public LegoWorld {
|
||||
|
||||
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 @@ class Hospital : public LegoWorld {
|
||||
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 @@ class Hospital : public LegoWorld {
|
||||
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 @@ class Infocenter : public LegoWorld {
|
||||
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 @@ class Infocenter : public LegoWorld {
|
||||
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 @@ class InfocenterDoor : public LegoWorld {
|
||||
// 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 @@ class InfocenterDoor : public LegoWorld {
|
||||
private:
|
||||
LegoGameState::Area m_destLocation; // 0xf8
|
||||
|
||||
MxLong HandleClick(LegoControlManagerEvent& p_param);
|
||||
MxLong HandleControl(LegoControlManagerEvent& p_param);
|
||||
};
|
||||
|
||||
#endif // INFOCENTERDOOR_H
|
||||
|
||||
@ -30,7 +30,7 @@ class InfocenterState : public LegoState {
|
||||
// FUNCTION: LEGO1 0x10071830
|
||||
MxBool IsSerializable() override { return FALSE; } // vtable+0x14
|
||||
|
||||
inline MxS16 GetMaxNameLength() { return _countof(m_letters); }
|
||||
inline MxS16 GetMaxNameLength() { return sizeOfArray(m_letters); }
|
||||
inline MxStillPresenter* GetNameLetter(MxS32 p_index) { return m_letters[p_index]; }
|
||||
inline void SetNameLetter(MxS32 p_index, MxStillPresenter* p_letter) { m_letters[p_index] = p_letter; }
|
||||
inline MxBool HasRegistered() { return m_letters[0] != NULL; }
|
||||
|
||||
@ -6,27 +6,28 @@
|
||||
#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
|
||||
class Isle : public LegoWorld {
|
||||
public:
|
||||
// For g_unk0x100f1198
|
||||
enum {
|
||||
c_bit7 = 0x40
|
||||
c_playCamAnims = 0x20,
|
||||
c_playMusic = 0x40
|
||||
};
|
||||
|
||||
Isle();
|
||||
@ -57,19 +58,26 @@ class Isle : public LegoWorld {
|
||||
// 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 @@ class Isle : public LegoWorld {
|
||||
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 @@ class IsleActor : public LegoActor {
|
||||
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 @@ class IsleActor : public LegoActor {
|
||||
// FUNCTION: LEGO1 0x1000e650
|
||||
virtual undefined4 VTable0x80(MxParam&) { return 0; } // vtable+0x80
|
||||
|
||||
private:
|
||||
protected:
|
||||
LegoWorld* m_world; // 0x78
|
||||
};
|
||||
|
||||
|
||||
@ -33,24 +33,24 @@ class IslePathActor : public LegoPathActor {
|
||||
LegoGameState::Area p_area,
|
||||
MxAtomId* p_script,
|
||||
MxS32 p_entityId,
|
||||
const char* p_path,
|
||||
const char* p_name,
|
||||
MxS16 p_src,
|
||||
float p_srcScale,
|
||||
MxS16 p_dest,
|
||||
float p_destScale,
|
||||
undefined4 p_unk0x30,
|
||||
MxU32 p_location,
|
||||
JukeboxScript::Script p_music
|
||||
)
|
||||
{
|
||||
m_area = p_area;
|
||||
m_script = p_script;
|
||||
m_entityId = p_entityId;
|
||||
strcpy(m_path, p_path);
|
||||
strcpy(m_name, p_name);
|
||||
m_src = p_src;
|
||||
m_srcScale = p_srcScale;
|
||||
m_dest = p_dest;
|
||||
m_destScale = p_destScale;
|
||||
m_unk0x30 = p_unk0x30;
|
||||
m_location = p_location;
|
||||
m_music = p_music;
|
||||
}
|
||||
|
||||
@ -60,12 +60,12 @@ class IslePathActor : public LegoPathActor {
|
||||
m_area = p_location.m_area;
|
||||
m_script = p_location.m_script;
|
||||
m_entityId = p_location.m_entityId;
|
||||
strcpy(m_path, p_location.m_path);
|
||||
strcpy(m_name, p_location.m_name);
|
||||
m_src = p_location.m_src;
|
||||
m_srcScale = p_location.m_srcScale;
|
||||
m_dest = p_location.m_dest;
|
||||
m_destScale = p_location.m_destScale;
|
||||
m_unk0x30 = p_location.m_unk0x30;
|
||||
m_location = p_location.m_location;
|
||||
m_music = p_location.m_music;
|
||||
return *this;
|
||||
}
|
||||
@ -73,12 +73,12 @@ class IslePathActor : public LegoPathActor {
|
||||
LegoGameState::Area m_area; // 0x00
|
||||
MxAtomId* m_script; // 0x04
|
||||
MxS32 m_entityId; // 0x08
|
||||
char m_path[20]; // 0x0c
|
||||
char m_name[20]; // 0x0c
|
||||
MxS16 m_src; // 0x20
|
||||
float m_srcScale; // 0x24
|
||||
MxS16 m_dest; // 0x28
|
||||
float m_destScale; // 0x2c
|
||||
undefined4 m_unk0x30; // 0x30
|
||||
MxU32 m_location; // 0x30
|
||||
JukeboxScript::Script m_music; // 0x34
|
||||
};
|
||||
|
||||
@ -106,13 +106,13 @@ class IslePathActor : public LegoPathActor {
|
||||
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 @@ class IslePathActor : public LegoPathActor {
|
||||
// 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 @@ class Jetski : public IslePathActor {
|
||||
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 @@ class JetskiRace : public LegoRace {
|
||||
|
||||
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 @@ class JukeBox : public LegoWorld {
|
||||
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
|
||||
|
||||
@ -30,7 +30,7 @@ class JukeBoxState : public LegoState {
|
||||
// SYNTHETIC: LEGO1 0x1000f3d0
|
||||
// JukeBoxState::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
// protected:
|
||||
MxU32 m_state; // 0x08
|
||||
MxU32 m_active; // 0x0c
|
||||
};
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#ifndef LEGOUNKNOWN100D5778_H
|
||||
#define LEGOUNKNOWN100D5778_H
|
||||
#ifndef LEGO3DSOUND_H
|
||||
#define LEGO3DSOUND_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxtypes.h"
|
||||
@ -10,19 +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
|
||||
@ -33,7 +34,7 @@ class LegoUnknown100d5778 {
|
||||
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 @@ class Lego3DWavePresenter : public MxWavePresenter {
|
||||
// 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 @@ class LegoAct2 : public LegoWorld {
|
||||
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 @@ class LegoActionControlPresenter : public MxMediaPresenter {
|
||||
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 @@ class LegoActorPresenter : public LegoEntityPresenter {
|
||||
// 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
|
||||
{
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
#include "actionsfwd.h"
|
||||
#include "decomp.h"
|
||||
#include "legolocations.h"
|
||||
#include "legotraninfolist.h"
|
||||
#include "mxcore.h"
|
||||
#include "mxgeometry/mxgeometry3d.h"
|
||||
@ -10,50 +11,54 @@
|
||||
class AnimState;
|
||||
class LegoAnimPresenter;
|
||||
class LegoEntity;
|
||||
class LegoExtraActor;
|
||||
class LegoFile;
|
||||
class LegoPathActor;
|
||||
class LegoPathBoundary;
|
||||
class LegoROIList;
|
||||
struct LegoUnknown100db7f4;
|
||||
class LegoWorld;
|
||||
struct ModelInfo;
|
||||
class MxDSAction;
|
||||
|
||||
// SIZE 0x18
|
||||
struct Character {
|
||||
char* m_name; // 0x00
|
||||
MxBool m_unk0x04; // 0x04
|
||||
MxS8 m_vehicleId; // 0x05
|
||||
undefined m_unk0x06; // 0x06 (unused?)
|
||||
MxBool m_unk0x07; // 0x07
|
||||
MxBool m_unk0x08; // 0x08
|
||||
MxBool m_unk0x09; // 0x09
|
||||
MxU32 m_unk0x0c; // 0x0c
|
||||
MxU32 m_unk0x10; // 0x10
|
||||
MxBool m_active; // 0x14
|
||||
MxU8 m_unk0x15; // 0x15
|
||||
MxU8 m_unk0x16; // 0x16
|
||||
};
|
||||
|
||||
// SIZE 0x08
|
||||
struct Vehicle {
|
||||
char* m_name; // 0x00
|
||||
undefined m_unk0x04; // 0x04
|
||||
MxBool m_unk0x05; // 0x05
|
||||
};
|
||||
|
||||
// SIZE 0x18
|
||||
struct Unknown0x3c {
|
||||
LegoROI* m_roi; // 0x00
|
||||
MxS32 m_characterId; // 0x04
|
||||
undefined4 m_unk0x08; // 0x08
|
||||
undefined m_unk0x0c; // 0x0c
|
||||
MxBool m_unk0x0d; // 0x0d
|
||||
float m_unk0x10; // 0x10
|
||||
MxBool m_unk0x14; // 0x14
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d8c18
|
||||
// SIZE 0x500
|
||||
class LegoAnimationManager : public MxCore {
|
||||
public:
|
||||
// SIZE 0x18
|
||||
struct Character {
|
||||
char* m_name; // 0x00
|
||||
MxBool m_inExtras; // 0x04
|
||||
MxS8 m_vehicleId; // 0x05
|
||||
undefined m_unk0x06; // 0x06 (unused?)
|
||||
MxBool m_unk0x07; // 0x07
|
||||
MxBool m_unk0x08; // 0x08
|
||||
MxBool m_unk0x09; // 0x09
|
||||
MxS32 m_unk0x0c; // 0x0c
|
||||
MxS32 m_unk0x10; // 0x10
|
||||
MxBool m_active; // 0x14
|
||||
MxU8 m_unk0x15; // 0x15
|
||||
MxS8 m_unk0x16; // 0x16
|
||||
};
|
||||
|
||||
// SIZE 0x08
|
||||
struct Vehicle {
|
||||
char* m_name; // 0x00
|
||||
MxBool m_unk0x04; // 0x04
|
||||
MxBool m_unk0x05; // 0x05
|
||||
};
|
||||
|
||||
// SIZE 0x18
|
||||
struct Extra {
|
||||
LegoROI* m_roi; // 0x00
|
||||
MxS32 m_characterId; // 0x04
|
||||
MxLong m_unk0x08; // 0x08
|
||||
MxBool m_unk0x0c; // 0x0c
|
||||
MxBool m_unk0x0d; // 0x0d
|
||||
float m_speed; // 0x10
|
||||
MxBool m_unk0x14; // 0x14
|
||||
};
|
||||
|
||||
LegoAnimationManager();
|
||||
~LegoAnimationManager() override;
|
||||
|
||||
@ -77,12 +82,14 @@ class LegoAnimationManager : public MxCore {
|
||||
void Suspend();
|
||||
void Resume();
|
||||
void FUN_1005f6d0(MxBool p_unk0x400);
|
||||
void FUN_1005f700(MxBool p_unk0x3a);
|
||||
void EnableCamAnims(MxBool p_enableCamAnims);
|
||||
MxResult LoadScriptInfo(MxS32 p_scriptIndex);
|
||||
MxBool FindVehicle(const char* p_name, MxU32& p_index);
|
||||
MxResult ReadAnimInfo(LegoFile* p_file, AnimInfo* p_info);
|
||||
MxResult ReadModelInfo(LegoFile* p_file, ModelInfo* p_info);
|
||||
void FUN_10060570(MxBool);
|
||||
void FUN_100604d0(MxBool p_unk0x08);
|
||||
void FUN_10060540(MxBool p_unk0x29);
|
||||
void FUN_10060570(MxBool p_unk0x1a);
|
||||
MxResult StartEntityAction(MxDSAction& p_dsAction, LegoEntity* p_entity);
|
||||
MxResult FUN_10060dc0(
|
||||
IsleScript::Script p_objectId,
|
||||
@ -95,16 +102,17 @@ class LegoAnimationManager : public MxCore {
|
||||
MxBool p_param8,
|
||||
MxBool p_param9
|
||||
);
|
||||
void FUN_10061010(undefined4);
|
||||
void FUN_100617c0(MxS32, MxU16&, MxU16&);
|
||||
void CameraTriggerFire(LegoPathActor* p_actor, MxBool, MxU32 p_location, MxBool p_bool);
|
||||
void FUN_10061010(MxBool p_und);
|
||||
LegoTranInfo* GetTranInfo(MxU32 p_index);
|
||||
void FUN_10062770();
|
||||
void FUN_100627d0(MxBool);
|
||||
void FUN_100629b0(MxU32, MxBool);
|
||||
void FUN_10063270(LegoROIList*, LegoAnimPresenter*);
|
||||
void PurgeExtra(MxBool p_und);
|
||||
void AddExtra(MxS32 p_location, MxBool p_und);
|
||||
void FUN_10063270(LegoROIList* p_list, LegoAnimPresenter* p_presenter);
|
||||
void FUN_10063780(LegoROIList* p_list);
|
||||
void FUN_10064670(Vector3*);
|
||||
void FUN_10064740(Vector3*);
|
||||
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);
|
||||
|
||||
@ -127,22 +135,45 @@ class LegoAnimationManager : public MxCore {
|
||||
MxResult FUN_100609f0(MxU32 p_objectId, MxMatrix* p_matrix, MxBool p_und1, MxBool p_und2);
|
||||
void DeleteAnimations();
|
||||
void FUN_10061530();
|
||||
MxResult FUN_100617c0(MxS32 p_unk0x08, MxU16& p_unk0x0e, MxU16& p_unk0x10);
|
||||
MxU16 FUN_10062110(
|
||||
LegoROI* p_roi,
|
||||
Vector3& p_direction,
|
||||
Vector3& p_position,
|
||||
LegoPathBoundary* p_boundary,
|
||||
float p_speed,
|
||||
MxU8 p_und,
|
||||
MxU8 p_unk0x0c,
|
||||
MxBool p_unk0x14
|
||||
);
|
||||
MxS8 GetCharacterIndex(const char* p_name);
|
||||
MxBool FUN_100623a0(AnimInfo& p_info);
|
||||
MxBool ModelExists(AnimInfo& p_info, const char* p_name);
|
||||
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_mood, MxU32 p_characterId);
|
||||
void FUN_10063d10();
|
||||
void FUN_100648f0(LegoTranInfo*, MxLong);
|
||||
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);
|
||||
MxResult FUN_10064380(
|
||||
const char* p_name,
|
||||
const char* p_boundaryName,
|
||||
MxS32 p_src,
|
||||
float p_srcScale,
|
||||
MxS32 p_dest,
|
||||
float p_destScale,
|
||||
MxU32 p_undIdx1,
|
||||
MxS32 p_unk0x0c,
|
||||
MxU32 p_undIdx2,
|
||||
MxS32 p_unk0x10,
|
||||
float p_speed
|
||||
);
|
||||
void FUN_100648f0(LegoTranInfo* p_tranInfo, MxLong p_unk0x404);
|
||||
void FUN_10064b50(MxLong p_time);
|
||||
|
||||
MxS32 m_scriptIndex; // 0x08
|
||||
@ -158,10 +189,10 @@ class LegoAnimationManager : public MxCore {
|
||||
MxPresenter* m_unk0x28[2]; // 0x28
|
||||
MxLong m_unk0x30[2]; // 0x30
|
||||
MxBool m_unk0x38; // 0x38
|
||||
MxBool m_unk0x39; // 0x39
|
||||
MxBool m_unk0x3a; // 0x3a
|
||||
Unknown0x3c m_unk0x3c[40]; // 0x3c
|
||||
undefined4 m_unk0x3fc; // 0x3fc
|
||||
MxBool m_animRunning; // 0x39
|
||||
MxBool m_enableCamAnims; // 0x3a
|
||||
Extra m_extras[40]; // 0x3c
|
||||
MxU32 m_lastExtraCharacterId; // 0x3fc
|
||||
MxBool m_unk0x400; // 0x400
|
||||
MxBool m_unk0x401; // 0x401
|
||||
MxBool m_unk0x402; // 0x402
|
||||
@ -169,21 +200,25 @@ class LegoAnimationManager : public MxCore {
|
||||
MxLong m_unk0x408; // 0x408
|
||||
MxLong m_unk0x40c; // 0x40c
|
||||
MxLong m_unk0x410; // 0x410
|
||||
undefined4 m_unk0x414; // 0x414
|
||||
MxU32 m_unk0x414; // 0x414
|
||||
MxU32 m_numAllowedExtras; // 0x418
|
||||
undefined4 m_unk0x41c; // 0x41c
|
||||
AnimState* m_animState; // 0x420
|
||||
LegoROIList* m_unk0x424; // 0x424
|
||||
MxBool m_unk0x428; // 0x428
|
||||
MxBool m_suspendedEnableCamAnims; // 0x428
|
||||
MxBool m_unk0x429; // 0x429
|
||||
MxBool m_unk0x42a; // 0x42a
|
||||
MxBool m_suspended; // 0x42b
|
||||
LegoTranInfo* m_unk0x42c; // 0x42c
|
||||
MxBool m_unk0x430; // 0x430
|
||||
undefined4 m_unk0x434[2]; // 0x434
|
||||
MxLong m_unk0x434; // 0x434
|
||||
MxLong m_unk0x438; // 0x438
|
||||
MxMatrix m_unk0x43c; // 0x43c
|
||||
MxMatrix m_unk0x484; // 0x484
|
||||
UnknownMx4DPointFloat m_unk0x4cc; // 0x4cc
|
||||
};
|
||||
|
||||
// TEMPLATE: LEGO1 0x10061750
|
||||
// MxListCursor<LegoTranInfo *>::MxListCursor<LegoTranInfo *>
|
||||
|
||||
#endif // LEGOANIMATIONMANAGER_H
|
||||
|
||||
@ -29,13 +29,20 @@ class LegoAnimMMPresenter : public MxCompositePresenter {
|
||||
|
||||
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
|
||||
{
|
||||
@ -55,7 +62,11 @@ class LegoAnimMMPresenter : public MxCompositePresenter {
|
||||
// SYNTHETIC: LEGO1 0x1004aa40
|
||||
// LegoAnimMMPresenter::`scalar deleting destructor'
|
||||
|
||||
void FUN_1004b840();
|
||||
MxBool FUN_1004b8b0();
|
||||
void FUN_1004b8c0();
|
||||
|
||||
inline LegoAnimPresenter* GetPresenter() { return m_presenter; }
|
||||
|
||||
private:
|
||||
MxBool FUN_1004b450();
|
||||
|
||||
@ -26,7 +26,7 @@ struct LegoAnimStruct {
|
||||
MxU32 m_index; // 0x04
|
||||
};
|
||||
|
||||
typedef map<const char*, LegoAnimStruct, LegoAnimStructComparator> LegoAnimPresenterMap;
|
||||
typedef map<const char*, LegoAnimStruct, LegoAnimStructComparator> LegoAnimStructMap;
|
||||
typedef map<const char*, const char*, LegoAnimSubstComparator> LegoAnimSubstMap;
|
||||
|
||||
// VTABLE: LEGO1 0x100d90c8
|
||||
@ -41,34 +41,41 @@ class LegoAnimPresenter : public MxVideoPresenter {
|
||||
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 @@ class LegoAnimPresenter : public MxVideoPresenter {
|
||||
|
||||
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:
|
||||
@ -95,8 +107,8 @@ class LegoAnimPresenter : public MxVideoPresenter {
|
||||
LegoBool FUN_100698b0(const CompoundObject& p_rois, const LegoChar* p_und2);
|
||||
LegoROI* FUN_100699e0(const LegoChar* p_und);
|
||||
void FUN_10069b10();
|
||||
void FUN_1006a3c0(LegoAnimPresenterMap& p_map, LegoTreeNode* p_node, LegoROI* p_roi);
|
||||
void FUN_1006a4f0(LegoAnimPresenterMap& p_map, LegoAnimNodeData* p_data, const LegoChar* p_und, LegoROI* p_roi);
|
||||
void FUN_1006a3c0(LegoAnimStructMap& p_map, LegoTreeNode* p_node, LegoROI* p_roi);
|
||||
void FUN_1006a4f0(LegoAnimStructMap& p_map, LegoAnimNodeData* p_data, const LegoChar* p_und, LegoROI* p_roi);
|
||||
void FUN_1006aa60();
|
||||
void FUN_1006ab70();
|
||||
LegoBool FUN_1006aba0();
|
||||
@ -119,14 +131,16 @@ class LegoAnimPresenter : public MxVideoPresenter {
|
||||
LegoROI** m_unk0x8c; // 0x8c
|
||||
char** m_unk0x90; // 0x90
|
||||
MxU8 m_unk0x94; // 0x94
|
||||
undefined m_unk0x95; // 0x95
|
||||
MxBool m_unk0x95; // 0x95
|
||||
MxBool m_unk0x96; // 0x96
|
||||
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,16 +2,54 @@
|
||||
#define LEGOBUILDINGMANAGER_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "misc/legotypes.h"
|
||||
#include "mxcore.h"
|
||||
|
||||
class LegoEntity;
|
||||
class LegoROI;
|
||||
class LegoStorage;
|
||||
class LegoWorld;
|
||||
class LegoCacheSound;
|
||||
class LegoPathBoundary;
|
||||
|
||||
// SIZE 0x2c
|
||||
struct LegoBuildingInfo {
|
||||
enum {
|
||||
c_bit1 = 0x01,
|
||||
c_bit2 = 0x02,
|
||||
c_bit3 = 0x04,
|
||||
c_bit4 = 0x08
|
||||
};
|
||||
|
||||
LegoEntity* m_entity; // 0x00
|
||||
const char* m_hausName; // 0x04
|
||||
MxU32 m_cycle1; // 0x08
|
||||
MxU32 m_cycle2; // 0x0c
|
||||
MxU8 m_cycle3; // 0x10
|
||||
MxS8 m_unk0x11; // 0x11
|
||||
MxS8 m_initialUnk0x11; // 0x12 = initial value loaded to m_unk0x11
|
||||
MxU8 m_flags; // 0x13
|
||||
float m_unk0x014; // 0x14
|
||||
const char* m_unk0x18; // 0x18
|
||||
float m_x; // 0x1c
|
||||
float m_y; // 0x20
|
||||
float m_z; // 0x24
|
||||
LegoPathBoundary* m_boundary; // 0x28
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d6f50
|
||||
// SIZE 0x30
|
||||
class LegoBuildingManager : public MxCore {
|
||||
public:
|
||||
// SIZE 0x14
|
||||
struct AnimEntry {
|
||||
LegoEntity* m_entity; // 0x00
|
||||
LegoROI* m_roi; // 0x04
|
||||
LegoTime m_time; // 0x08
|
||||
float m_unk0x0c; // 0x0c
|
||||
MxBool m_muted; // 0x10
|
||||
};
|
||||
|
||||
LegoBuildingManager();
|
||||
~LegoBuildingManager() override;
|
||||
|
||||
@ -29,13 +67,28 @@ class LegoBuildingManager : public MxCore {
|
||||
|
||||
void Init();
|
||||
void FUN_1002fa00();
|
||||
void UpdatePosition(MxS32 p_index, LegoWorld* p_world);
|
||||
void FUN_1002fb30();
|
||||
MxResult Write(LegoStorage* p_storage);
|
||||
MxResult Read(LegoStorage* p_storage);
|
||||
MxBool FUN_1002fdb0(LegoEntity* p_entity);
|
||||
LegoBuildingInfo* GetInfo(LegoEntity* p_entity);
|
||||
MxBool IncrementVariant(LegoEntity* p_entity);
|
||||
MxBool FUN_1002fe40(LegoEntity* p_entity);
|
||||
MxBool FUN_1002fe80(LegoEntity* p_entity);
|
||||
MxBool FUN_1002fed0(LegoEntity* p_entity);
|
||||
MxU32 GetBuildingEntityId(LegoEntity* p_entity);
|
||||
MxU32 FUN_1002ff40(LegoEntity*, MxBool);
|
||||
void FUN_10030000(LegoEntity* p_entity);
|
||||
MxBool FUN_10030000(LegoEntity* p_entity);
|
||||
MxBool FUN_10030030(MxS32 p_index);
|
||||
MxBool FUN_10030110(LegoBuildingInfo* p_data);
|
||||
void ScheduleAnimation(LegoEntity* p_entity, MxU32 p_length, MxBool p_haveSound, MxBool p_unk0x28);
|
||||
void FUN_10030590();
|
||||
void AdjustHeight(MxS32 p_index);
|
||||
MxResult FUN_10030630();
|
||||
LegoBuildingInfo* GetInfoArray(MxS32& p_length);
|
||||
void FUN_100307b0(LegoEntity* p_entity, MxS32 p_adjust);
|
||||
|
||||
static void FUN_10030800();
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1002f940
|
||||
// LegoBuildingManager::`scalar deleting destructor'
|
||||
@ -43,7 +96,13 @@ class LegoBuildingManager : public MxCore {
|
||||
private:
|
||||
static char* g_customizeAnimFile;
|
||||
|
||||
undefined m_unk0x08[0x28]; // 0x08
|
||||
MxU8 m_nextVariant; // 0x08
|
||||
MxU8 m_unk0x09; // 0x09
|
||||
AnimEntry* m_entries[5]; // 0x0c
|
||||
MxS8 m_numEntries; // 0x20
|
||||
LegoCacheSound* m_sound; // 0x24
|
||||
MxBool m_unk0x28; // 0x28
|
||||
LegoWorld* m_world; // 0x2c
|
||||
};
|
||||
|
||||
#endif // LEGOBUILDINGMANAGER_H
|
||||
|
||||
@ -54,8 +54,8 @@ class LegoCacheSoundManager {
|
||||
|
||||
virtual MxResult Tickle(); // vtable+0x00
|
||||
|
||||
LegoCacheSound* FUN_1003d170(const char* p_key);
|
||||
LegoCacheSound* FUN_1003d290(LegoCacheSound* p_sound);
|
||||
LegoCacheSound* FindSoundByKey(const char* p_key);
|
||||
LegoCacheSound* ManageSoundEntry(LegoCacheSound* p_sound);
|
||||
LegoCacheSound* FUN_1003dae0(const char* p_one, const char* p_two, MxBool p_three);
|
||||
LegoCacheSound* FUN_1003db10(LegoCacheSound* p_one, const char* p_two, MxBool p_three);
|
||||
void FUN_1003dc40(LegoCacheSound** p_und);
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
#define LEGOCACHSOUND_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "legounknown100d5778.h"
|
||||
#include "lego3dsound.h"
|
||||
#include "mxcore.h"
|
||||
#include "mxstring.h"
|
||||
|
||||
@ -37,6 +37,7 @@ class LegoCacheSound : public MxCore {
|
||||
MxResult FUN_10006a30(const char* p_str, MxBool);
|
||||
void FUN_10006b80();
|
||||
void FUN_10006be0();
|
||||
void FUN_10006cb0(undefined4 p_und1, undefined4 p_und2);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10006610
|
||||
// LegoCacheSound::`scalar deleting destructor'
|
||||
@ -46,7 +47,7 @@ class LegoCacheSound : public MxCore {
|
||||
|
||||
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 @@ class LegoCameraController : public LegoPointOfViewController {
|
||||
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();
|
||||
|
||||
@ -1,31 +0,0 @@
|
||||
#ifndef LEGOCAMERALOCATIONS_H
|
||||
#define LEGOCAMERALOCATIONS_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
// SIZE 0x60
|
||||
struct LegoCameraLocation {
|
||||
MxU32 m_index; // 0x00
|
||||
const char* m_name; // 0x04
|
||||
float m_position[3]; // 0x08
|
||||
float m_direction[3]; // 0x14
|
||||
float m_up[3]; // 0x20
|
||||
const char* m_edgeName; // 0x2c
|
||||
undefined4 m_unk0x30; // 0x30
|
||||
float m_unk0x34; // 0x34
|
||||
undefined4 m_unk0x38; // 0x38
|
||||
float m_unk0x3c; // 0x3c
|
||||
undefined4 m_unk0x40; // 0x40
|
||||
undefined4 m_unk0x44; // 0x44
|
||||
undefined4 m_unk0x48; // 0x48
|
||||
undefined4 m_unk0x4c; // 0x4c
|
||||
undefined4 m_unk0x50; // 0x50
|
||||
undefined4 m_unk0x54; // 0x54
|
||||
undefined4 m_unk0x58; // 0x58
|
||||
undefined4 m_unk0x5c; // 0x5c
|
||||
};
|
||||
|
||||
extern LegoCameraLocation g_cameraLocations[70];
|
||||
|
||||
#endif // LEGOCAMERALOCATIONS_H
|
||||
@ -29,7 +29,7 @@ class LegoCarBuild : public LegoWorld {
|
||||
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 @@ class LegoCarBuildAnimPresenter : public LegoAnimPresenter {
|
||||
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
|
||||
{
|
||||
|
||||
@ -38,8 +38,9 @@ class LegoCarRaceActor : public virtual LegoRaceActor {
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxU32 VTable0x90(float, Matrix4&) override; // vtable+0x90
|
||||
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
|
||||
void VTable0x98() override; // vtable+0x98
|
||||
MxResult WaitForAnimation() override; // vtable+0x9c
|
||||
void SwitchBoundary(LegoPathBoundary*& p_boundary, LegoUnknown100db7f4*& p_edge, float& p_unk0xe4)
|
||||
override; // vtable+0x98
|
||||
MxResult VTable0x9c() override; // vtable+0x9c
|
||||
|
||||
virtual void FUN_10080590();
|
||||
|
||||
|
||||
@ -49,6 +49,7 @@ typedef map<char*, LegoCharacter*, LegoCharacterComparator> LegoCharacterMap;
|
||||
class LegoCharacterManager {
|
||||
public:
|
||||
LegoCharacterManager();
|
||||
~LegoCharacterManager();
|
||||
|
||||
MxResult Write(LegoStorage* p_storage);
|
||||
MxResult Read(LegoStorage* p_storage);
|
||||
@ -59,6 +60,7 @@ class LegoCharacterManager {
|
||||
static MxBool Exists(const char* p_key);
|
||||
|
||||
void FUN_100832a0();
|
||||
MxBool FUN_10083b20(const char* p_key);
|
||||
MxU32 GetRefCount(LegoROI* p_roi);
|
||||
void FUN_10083c30(const char* p_name);
|
||||
void FUN_10083db0(LegoROI* p_roi);
|
||||
@ -69,6 +71,7 @@ class LegoCharacterManager {
|
||||
LegoCharacterInfo* GetInfo(LegoROI* p_roi);
|
||||
MxBool SwitchHat(LegoROI* p_roi);
|
||||
MxU32 FUN_10085140(LegoROI* p_roi, MxBool p_und);
|
||||
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 @@ class LegoControlManager : public MxCore {
|
||||
|
||||
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 @@ class LegoControlManager : public MxCore {
|
||||
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 @@ class LegoEntityPresenter : public MxCompositePresenter {
|
||||
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
|
||||
{
|
||||
|
||||
@ -46,14 +46,17 @@ class LegoExtraActor : public virtual LegoAnimActor {
|
||||
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
|
||||
MxU32 VTable0x90(float p_float, Matrix4& p_matrix) override; // vtable+0x90
|
||||
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
|
||||
MxResult WaitForAnimation() override; // vtable+0x9c
|
||||
void VTable0xa4(MxU8& p_und1, MxS32& p_und2) override; // vtable+0xa4
|
||||
MxResult VTable0x9c() override; // vtable+0x9c
|
||||
void VTable0xa4(MxBool& p_und1, MxS32& p_und2) override; // vtable+0xa4
|
||||
void VTable0xc4() override; // vtable+0xc4
|
||||
|
||||
virtual MxResult FUN_1002aae0();
|
||||
|
||||
void Restart();
|
||||
inline void FUN_1002ad8a();
|
||||
|
||||
inline void SetUnknown0x0c(undefined p_unk0x0c) { m_unk0x0c = p_unk0x0c; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1002b760
|
||||
// LegoExtraActor::`scalar deleting destructor'
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -16,6 +16,8 @@ class MxVariable;
|
||||
class MxVariableTable;
|
||||
class MxString;
|
||||
|
||||
extern const char* g_actorNames[7];
|
||||
|
||||
// SIZE 0x08
|
||||
struct ColorStringStruct {
|
||||
const char* m_targetName; // 0x00
|
||||
@ -164,6 +166,10 @@ class LegoGameState {
|
||||
void Init();
|
||||
|
||||
inline MxU8 GetActorId() { return m_actorId; }
|
||||
|
||||
// FUNCTION: BETA10 0x1004a2d0
|
||||
inline const char* GetActorName() { return g_actorNames[GetActorId()]; }
|
||||
|
||||
inline Act GetCurrentAct() { return m_currentAct; }
|
||||
inline Act GetLoadedAct() { return m_loadedAct; }
|
||||
inline Area GetCurrentArea() { return m_currentArea; }
|
||||
|
||||
@ -4,6 +4,20 @@
|
||||
#include "decomp.h"
|
||||
#include "legoloopinganimpresenter.h"
|
||||
|
||||
class LegoPathBoundary;
|
||||
|
||||
struct LegoHideAnimStructComparator {
|
||||
MxBool operator()(const char* const& p_a, const char* const& p_b) const { return strcmp(p_a, p_b) < 0; }
|
||||
};
|
||||
|
||||
// SIZE 0x08
|
||||
struct LegoHideAnimStruct {
|
||||
LegoPathBoundary* m_boundary; // 0x00
|
||||
MxU32 m_index; // 0x04
|
||||
};
|
||||
|
||||
typedef map<const char*, LegoHideAnimStruct, LegoHideAnimStructComparator> LegoHideAnimStructMap;
|
||||
|
||||
// VTABLE: LEGO1 0x100d9278
|
||||
// SIZE 0xc4
|
||||
class LegoHideAnimPresenter : public LegoLoopingAnimPresenter {
|
||||
@ -11,13 +25,20 @@ class LegoHideAnimPresenter : public LegoLoopingAnimPresenter {
|
||||
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
|
||||
{
|
||||
@ -33,14 +54,54 @@ class LegoHideAnimPresenter : public LegoLoopingAnimPresenter {
|
||||
void VTable0x8c() override; // vtable+0x8c
|
||||
void VTable0x90() override; // vtable+0x90
|
||||
|
||||
void FUN_1006db40(LegoTime p_time);
|
||||
|
||||
private:
|
||||
void Init();
|
||||
void Destroy(MxBool p_fromDestructor);
|
||||
void FUN_1006db60(LegoTreeNode* p_node, LegoTime p_time);
|
||||
void FUN_1006dc10();
|
||||
void FUN_1006e3f0(LegoHideAnimStructMap& p_map, LegoTreeNode* p_node);
|
||||
void FUN_1006e470(
|
||||
LegoHideAnimStructMap& p_map,
|
||||
LegoAnimNodeData* p_data,
|
||||
const char* p_name,
|
||||
LegoPathBoundary* p_boundary
|
||||
);
|
||||
|
||||
undefined4* m_unk0xc0; // 0xc0
|
||||
LegoPathBoundary** m_boundaryMap; // 0xc0
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
// SYNTHETIC: LEGO1 0x1006d9d0
|
||||
// LegoHideAnimPresenter::`scalar deleting destructor'
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006ddb0
|
||||
// _Tree<char const *,pair<char const * const,LegoHideAnimStruct>,map<char const *,LegoHideAnimStruct,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::_Kfn,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::~_Tree<char const *,pair<ch
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006de80
|
||||
// _Tree<char const *,pair<char const * const,LegoHideAnimStruct>,map<char const *,LegoHideAnimStruct,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::_Kfn,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::iterator::_Inc
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006dec0
|
||||
// _Tree<char const *,pair<char const * const,LegoHideAnimStruct>,map<char const *,LegoHideAnimStruct,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::_Kfn,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006e310
|
||||
// _Tree<char const *,pair<char const * const,LegoHideAnimStruct>,map<char const *,LegoHideAnimStruct,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::_Kfn,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::_Erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006e350
|
||||
// Map<char const *,LegoHideAnimStruct,LegoHideAnimStructComparator>::~Map<char const *,LegoHideAnimStruct,LegoHideAnimStructComparator>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006e3a0
|
||||
// map<char const *,LegoHideAnimStruct,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::~map<char const *,LegoHideAnimStruct,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006e6d0
|
||||
// _Tree<char const *,pair<char const * const,LegoHideAnimStruct>,map<char const *,LegoHideAnimStruct,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::_Kfn,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::iterator::_Dec
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006e720
|
||||
// _Tree<char const *,pair<char const * const,LegoHideAnimStruct>,map<char const *,LegoHideAnimStruct,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::_Kfn,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::_Insert
|
||||
|
||||
// GLOBAL: LEGO1 0x100f768c
|
||||
// _Tree<char const *,pair<char const * const,LegoHideAnimStruct>,map<char const *,LegoHideAnimStruct,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::_Kfn,LegoHideAnimStructComparator,allocator<LegoHideAnimStruct> >::_Nil
|
||||
// clang-format on
|
||||
|
||||
#endif // LEGOHIDEANIMPRESENTER_H
|
||||
|
||||
@ -43,8 +43,9 @@ class LegoJetski : public LegoJetskiRaceActor, public LegoRaceMap {
|
||||
) override; // vtable+0x6c
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
|
||||
void VTable0x98() override; // vtable+0x98
|
||||
MxResult WaitForAnimation() override; // vtable+0x9c
|
||||
void SwitchBoundary(LegoPathBoundary*& p_boundary, LegoUnknown100db7f4*& p_edge, float& p_unk0xe4)
|
||||
override; // vtable+0x98
|
||||
MxResult VTable0x9c() override; // vtable+0x9c
|
||||
|
||||
virtual void FUN_100136f0(float p_worldSpeed);
|
||||
|
||||
|
||||
@ -36,9 +36,10 @@ class LegoJetskiRaceActor : public virtual LegoCarRaceActor {
|
||||
Vector3& p_v3
|
||||
) override; // vtable+0x6c
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
void VTable0x98() override; // vtable+0x98
|
||||
MxResult WaitForAnimation() override; // vtable+0x9c
|
||||
void VTable0x1c() override; // vtable+0x1c
|
||||
void SwitchBoundary(LegoPathBoundary*& p_boundary, LegoUnknown100db7f4*& p_edge, float& p_unk0xe4)
|
||||
override; // vtable+0x98
|
||||
MxResult VTable0x9c() override; // vtable+0x9c
|
||||
void VTable0x1c() override; // vtable+0x1c
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10081d40
|
||||
// LegoJetskiRaceActor::`scalar deleting destructor'
|
||||
|
||||
@ -13,13 +13,20 @@ class LegoLoadCacheSoundPresenter : public MxWavePresenter {
|
||||
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
|
||||
|
||||
32
LEGO1/lego/legoomni/include/legolocations.h
Normal file
32
LEGO1/lego/legoomni/include/legolocations.h
Normal file
@ -0,0 +1,32 @@
|
||||
#ifndef LEGOLOCATIONS_H
|
||||
#define LEGOLOCATIONS_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
// SIZE 0x60
|
||||
struct LegoLocation {
|
||||
// SIZE 0x18
|
||||
struct Boundary {
|
||||
const char* m_name; // 0x00
|
||||
MxS32 m_src; // 0x04
|
||||
float m_srcScale; // 0x08
|
||||
MxS32 m_dest; // 0x0c
|
||||
float m_destScale; // 0x10
|
||||
MxBool m_unk0x10; // 0x14
|
||||
};
|
||||
|
||||
MxU32 m_index; // 0x00
|
||||
const char* m_name; // 0x04
|
||||
float m_position[3]; // 0x08
|
||||
float m_direction[3]; // 0x14
|
||||
float m_up[3]; // 0x20
|
||||
Boundary m_boundaryA; // 0x2c
|
||||
Boundary m_boundaryB; // 0x44
|
||||
MxBool m_unk0x5c; // 0x5c
|
||||
MxU8 m_frequency; // 0x5d
|
||||
};
|
||||
|
||||
extern LegoLocation g_locations[70];
|
||||
|
||||
#endif // LEGOLOCATIONS_H
|
||||
@ -2,6 +2,7 @@
|
||||
#define LEGOLOCOMOTIONANIMPRESENTER_H
|
||||
|
||||
#include "legoloopinganimpresenter.h"
|
||||
#include "legoroimaplist.h"
|
||||
|
||||
// VTABLE: LEGO1 0x100d9170
|
||||
// SIZE 0xd8
|
||||
@ -10,13 +11,20 @@ class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter {
|
||||
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
|
||||
{
|
||||
@ -50,12 +58,12 @@ class LegoLocomotionAnimPresenter : public LegoLoopingAnimPresenter {
|
||||
void Init();
|
||||
void Destroy(MxBool p_fromDestructor);
|
||||
|
||||
undefined4 m_unk0xc0; // 0xc0
|
||||
undefined4* m_unk0xc4; // 0xc4
|
||||
MxCore* m_unk0xc8; // 0xc8
|
||||
MxS32 m_unk0xcc; // 0xcc
|
||||
MxS32 m_unk0xd0; // 0xd0
|
||||
undefined2 m_unk0xd4; // 0xd4
|
||||
undefined4 m_unk0xc0; // 0xc0
|
||||
undefined4* m_unk0xc4; // 0xc4
|
||||
LegoROIMapList* m_roiMapList; // 0xc8
|
||||
MxS32 m_unk0xcc; // 0xcc
|
||||
MxS32 m_unk0xd0; // 0xd0
|
||||
undefined2 m_unk0xd4; // 0xd4
|
||||
};
|
||||
|
||||
#endif // LEGOLOCOMOTIONANIMPRESENTER_H
|
||||
|
||||
@ -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 @@ class LegoOmni : public MxOmni {
|
||||
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 @@ class LegoOmni : public MxOmni {
|
||||
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 @@ class LegoOmni : public MxOmni {
|
||||
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 @@ class LegoMeterPresenter : public MxStillPresenter {
|
||||
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 @@ class LegoModelPresenter : public MxVideoPresenter {
|
||||
|
||||
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
|
||||
{
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
#include "mxcore.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
struct LegoLocation;
|
||||
class Vector3;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
@ -71,8 +72,10 @@ class LegoNavController : public MxCore {
|
||||
float p_rs,
|
||||
MxBool p_urs
|
||||
);
|
||||
static MxResult UpdateCameraLocation(MxU32 p_location);
|
||||
static MxResult UpdateCameraLocation(const char* p_location);
|
||||
static MxResult UpdateLocation(MxU32 p_location);
|
||||
static MxResult UpdateLocation(const char* p_location);
|
||||
static LegoLocation* GetLocation(MxU32 p_location);
|
||||
|
||||
inline void SetLinearVel(MxFloat p_linearVel) { m_linearVel = p_linearVel; }
|
||||
inline MxFloat GetLinearVel() { return m_linearVel; }
|
||||
inline MxFloat GetRotationalVel() { return m_rotationalVel; }
|
||||
|
||||
@ -13,13 +13,20 @@ class LegoPalettePresenter : public MxVideoPresenter {
|
||||
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 @@ class LegoPartPresenter : public MxMediaPresenter {
|
||||
// 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
|
||||
{
|
||||
|
||||
@ -9,12 +9,18 @@
|
||||
struct LegoEdge;
|
||||
class LegoPathBoundary;
|
||||
class LegoPathController;
|
||||
class LegoUnknown100db7f4;
|
||||
struct LegoPathEdgeContainer;
|
||||
struct LegoUnknown100db7f4;
|
||||
class LegoWEEdge;
|
||||
|
||||
// VTABLE: LEGO1 0x100d6e28
|
||||
// SIZE 0x154
|
||||
class LegoPathActor : public LegoActor {
|
||||
public:
|
||||
enum {
|
||||
c_bit3 = 0x04
|
||||
};
|
||||
|
||||
LegoPathActor();
|
||||
~LegoPathActor() override;
|
||||
|
||||
@ -31,8 +37,8 @@ class LegoPathActor : public LegoActor {
|
||||
return !strcmp(p_name, LegoPathActor::ClassName()) || LegoActor::IsA(p_name);
|
||||
}
|
||||
|
||||
void ParseAction(char* p_extra) override; // vtable+0x20
|
||||
virtual MxS32 VTable0x68(Vector3&, Vector3&, Vector3&); // vtable+0x68
|
||||
void ParseAction(char* p_extra) override; // vtable+0x20
|
||||
virtual MxS32 VTable0x68(Vector3& p_v1, Vector3& p_v2, Vector3& p_v3); // vtable+0x68
|
||||
virtual MxU32 VTable0x6c(
|
||||
LegoPathBoundary* p_boundary,
|
||||
Vector3& p_v1,
|
||||
@ -48,7 +54,7 @@ class LegoPathActor : public LegoActor {
|
||||
virtual void SetUserNavFlag(MxBool p_userNavFlag) { m_userNavFlag = p_userNavFlag; } // vtable+0x78
|
||||
|
||||
// FUNCTION: LEGO1 0x10002d30
|
||||
virtual MxU8 GetUserNavFlag() { return m_userNavFlag; } // vtable+0x7c
|
||||
virtual MxBool GetUserNavFlag() { return m_userNavFlag; } // vtable+0x7c
|
||||
|
||||
virtual MxResult VTable0x80(
|
||||
Vector3& p_point1,
|
||||
@ -80,14 +86,18 @@ class LegoPathActor : public LegoActor {
|
||||
// FUNCTION: LEGO1 0x10002d50
|
||||
virtual MxResult VTable0x94(LegoPathActor*, MxBool) { return 0; } // vtable+0x94
|
||||
|
||||
virtual void VTable0x98(); // vtable+0x98
|
||||
virtual MxResult WaitForAnimation(); // vtable+0x9c
|
||||
virtual void SwitchBoundary(
|
||||
LegoPathBoundary*& p_boundary,
|
||||
LegoUnknown100db7f4*& p_edge,
|
||||
float& p_unk0xe4
|
||||
); // vtable+0x98
|
||||
virtual MxResult VTable0x9c(); // vtable+0x9c
|
||||
|
||||
// FUNCTION: LEGO1 0x10002d60
|
||||
virtual MxS32 VTable0xa0() { return 0; } // vtable+0xa0
|
||||
|
||||
virtual void VTable0xa4(MxU8&, MxS32&); // vtable+0xa4
|
||||
virtual void VTable0xa8(); // vtable+0xa8
|
||||
virtual void VTable0xa4(MxBool& p_und1, MxS32& p_und2); // vtable+0xa4
|
||||
virtual void VTable0xa8(); // vtable+0xa8
|
||||
|
||||
// FUNCTION: LEGO1 0x10002d70
|
||||
virtual void VTable0xac(MxFloat p_unk0x13c) { m_unk0x13c = p_unk0x13c; } // vtable+0xac
|
||||
@ -116,15 +126,27 @@ class LegoPathActor : public LegoActor {
|
||||
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; }
|
||||
inline void ClearController() { m_controller = NULL; }
|
||||
inline void SetController(LegoPathController* p_controller) { m_controller = p_controller; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1002d800
|
||||
// LegoPathActor::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
inline MxU32 FUN_1002edd0(
|
||||
list<LegoPathBoundary*>& p_boundaries,
|
||||
LegoPathBoundary* p_boundary,
|
||||
Vector3& p_v1,
|
||||
Vector3& p_v2,
|
||||
float p_f1,
|
||||
float p_f2,
|
||||
Vector3& p_v3,
|
||||
MxS32 p_und
|
||||
);
|
||||
|
||||
MxFloat m_BADuration; // 0x78
|
||||
MxFloat m_unk0x7c; // 0x7c
|
||||
MxFloat m_actorTime; // 0x80
|
||||
@ -132,13 +154,13 @@ class LegoPathActor : public LegoActor {
|
||||
LegoPathBoundary* m_boundary; // 0x88
|
||||
LegoUnknown m_unk0x8c; // 0x8c
|
||||
MxU32 m_state; // 0xdc
|
||||
LegoEdge* m_destEdge; // 0xe0
|
||||
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
|
||||
undefined* m_unk0x134; // 0x134
|
||||
LegoPathEdgeContainer* m_grec; // 0x134
|
||||
LegoPathController* m_controller; // 0x138
|
||||
MxFloat m_unk0x13c; // 0x13c
|
||||
MxFloat m_unk0x140; // 0x140
|
||||
@ -148,4 +170,19 @@ class LegoPathActor : public LegoActor {
|
||||
MxFloat m_unk0x150; // 0x150
|
||||
};
|
||||
|
||||
// TEMPLATE: LEGO1 0x10018b70
|
||||
// List<LegoBoundaryEdge>::~List<LegoBoundaryEdge>
|
||||
|
||||
// TEMPLATE: LEGO1 0x10018bc0
|
||||
// list<LegoBoundaryEdge,allocator<LegoBoundaryEdge> >::~list<LegoBoundaryEdge,allocator<LegoBoundaryEdge> >
|
||||
|
||||
// TEMPLATE: LEGO1 0x1002ef10
|
||||
// list<LegoPathBoundary *,allocator<LegoPathBoundary *> >::~list<LegoPathBoundary *,allocator<LegoPathBoundary *> >
|
||||
|
||||
// TEMPLATE: LEGO1 0x1002ef80
|
||||
// list<LegoPathBoundary *,allocator<LegoPathBoundary *> >::insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x1002efd0
|
||||
// List<LegoPathBoundary *>::~List<LegoPathBoundary *>
|
||||
|
||||
#endif // LEGOPATHACTOR_H
|
||||
|
||||
@ -15,7 +15,10 @@ struct LegoPathActorSetCompare {
|
||||
};
|
||||
|
||||
struct LegoAnimPresenterSetCompare {
|
||||
MxBool operator()(const LegoAnimPresenter* p_lhs, const LegoAnimPresenter* p_rhs) const { return 0; }
|
||||
MxBool operator()(const LegoAnimPresenter* p_lhs, const LegoAnimPresenter* p_rhs) const
|
||||
{
|
||||
return (MxS32) p_lhs < (MxS32) p_rhs;
|
||||
}
|
||||
};
|
||||
|
||||
typedef set<LegoPathActor*, LegoPathActorSetCompare> LegoPathActorSet;
|
||||
@ -26,16 +29,32 @@ typedef set<LegoAnimPresenter*, LegoAnimPresenterSetCompare> LegoAnimPresenterSe
|
||||
class LegoPathBoundary : public LegoWEGEdge {
|
||||
public:
|
||||
LegoPathBoundary();
|
||||
~LegoPathBoundary() override;
|
||||
|
||||
MxResult AddActor(LegoPathActor* p_actor);
|
||||
MxResult RemoveActor(LegoPathActor* p_actor);
|
||||
void FUN_100575b0(Vector3& p_point1, Vector3& p_point2, LegoPathActor* p_actor);
|
||||
MxU32 Intersect(float p_scale, Vector3& p_point1, Vector3& p_point2, Vector3& p_point3, LegoEdge*& p_edge);
|
||||
void SwitchBoundary(
|
||||
LegoPathActor* p_actor,
|
||||
LegoPathBoundary*& p_boundary,
|
||||
LegoUnknown100db7f4*& p_edge,
|
||||
float& p_unk0xe4
|
||||
);
|
||||
MxU32 Intersect(
|
||||
float p_scale,
|
||||
Vector3& p_point1,
|
||||
Vector3& p_point2,
|
||||
Vector3& p_point3,
|
||||
LegoUnknown100db7f4*& p_edge
|
||||
);
|
||||
MxU32 FUN_10057fe0(LegoAnimPresenter* p_presenter);
|
||||
MxU32 FUN_100586e0(LegoAnimPresenter* p_presenter);
|
||||
|
||||
inline LegoPathActorSet* GetActors() { return &m_actors; }
|
||||
inline LegoAnimPresenterSet* GetPresenters() { return &m_presenters; }
|
||||
inline LegoPathActorSet& GetActors() { return m_actors; }
|
||||
inline LegoAnimPresenterSet& GetPresenters() { return m_presenters; }
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10047a80
|
||||
// LegoPathBoundary::`scalar deleting destructor'
|
||||
// LegoPathBoundary::`vector deleting destructor'
|
||||
|
||||
private:
|
||||
LegoPathActorSet m_actors; // 0x54
|
||||
@ -79,6 +98,72 @@ class LegoPathBoundary : public LegoWEGEdge {
|
||||
// TEMPLATE: LEGO1 0x10045dd0
|
||||
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x10046310
|
||||
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x10046580
|
||||
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Lrotate
|
||||
|
||||
// TEMPLATE: LEGO1 0x100465e0
|
||||
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Rrotate
|
||||
|
||||
// TEMPLATE: LEGO1 0x1004a7a0
|
||||
// _Construct
|
||||
|
||||
// TEMPLATE: LEGO1 0x10056c20
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::~_Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoA
|
||||
|
||||
// TEMPLATE: LEGO1 0x10056cf0
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::iterator::_Inc
|
||||
|
||||
// TEMPLATE: LEGO1 0x10056d30
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x10057180
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x100571c0
|
||||
// set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::~set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >
|
||||
|
||||
// TEMPLATE: LEGO1 0x10057210
|
||||
// Set<LegoAnimPresenter *,LegoAnimPresenterSetCompare>::~Set<LegoAnimPresenter *,LegoAnimPresenterSetCompare>
|
||||
|
||||
// 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
|
||||
|
||||
|
||||
@ -2,24 +2,61 @@
|
||||
#define LEGOPATHCONTROLLER_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "geom/legounkown100db7f4.h"
|
||||
#include "legopathactor.h"
|
||||
#include "legopathboundary.h"
|
||||
#include "mxcore.h"
|
||||
#include "mxstl/stlcompat.h"
|
||||
|
||||
class LegoAnimPresenter;
|
||||
class LegoPathActor;
|
||||
class LegoPathBoundary;
|
||||
class LegoPathStruct;
|
||||
class LegoWorld;
|
||||
class MxAtomId;
|
||||
class Vector3;
|
||||
|
||||
struct LegoPathControllerComparator {
|
||||
MxBool operator()(const undefined*, const undefined*) const { return 0; }
|
||||
// VTABLE: LEGO1 0x100d7da8
|
||||
// SIZE 0x40
|
||||
struct LegoPathCtrlEdge : public LegoUnknown100db7f4 {};
|
||||
|
||||
struct LegoPathCtrlEdgeCompare {
|
||||
MxU32 operator()(const LegoPathCtrlEdge* p_lhs, const LegoPathCtrlEdge* p_rhs) const
|
||||
{
|
||||
return (MxS32) p_lhs < (MxS32) p_rhs;
|
||||
}
|
||||
};
|
||||
|
||||
typedef set<LegoPathCtrlEdge*, LegoPathCtrlEdgeCompare> LegoPathCtrlEdgeSet;
|
||||
|
||||
// VTABLE: LEGO1 0x100d7d60
|
||||
// SIZE 0x40
|
||||
class LegoPathController : public MxCore {
|
||||
public:
|
||||
// SIZE 0x08
|
||||
struct CtrlBoundary {
|
||||
// FUNCTION: LEGO1 0x10046dc0
|
||||
CtrlBoundary()
|
||||
{
|
||||
m_controller = NULL;
|
||||
m_boundary = NULL;
|
||||
}
|
||||
|
||||
LegoPathController* m_controller; // 0x00
|
||||
LegoPathBoundary* m_boundary; // 0x04
|
||||
};
|
||||
|
||||
// SIZE 0x08
|
||||
struct CtrlEdge {
|
||||
// FUNCTION: LEGO1 0x10046dd0
|
||||
CtrlEdge()
|
||||
{
|
||||
m_controller = NULL;
|
||||
m_edge = NULL;
|
||||
}
|
||||
|
||||
LegoPathController* m_controller; // 0x00
|
||||
LegoEdge* m_edge; // 0x04
|
||||
};
|
||||
|
||||
LegoPathController();
|
||||
~LegoPathController() override { Destroy(); }
|
||||
|
||||
@ -41,35 +78,121 @@ class LegoPathController : public MxCore {
|
||||
// SYNTHETIC: LEGO1 0x10045740
|
||||
// LegoPathController::`scalar deleting destructor'
|
||||
|
||||
virtual void VTable0x14(MxU8* p_data, Vector3& p_location, MxAtomId& p_trigger); // vtable+0x14
|
||||
virtual void Destroy(); // vtable+0x18
|
||||
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_path,
|
||||
const char* p_name,
|
||||
MxS32 p_src,
|
||||
float p_srcScale,
|
||||
MxS32 p_dest,
|
||||
float p_destScale
|
||||
);
|
||||
undefined4 FUN_10046770(LegoPathActor* p_actor);
|
||||
MxResult PlaceActor(
|
||||
LegoPathActor* p_actor,
|
||||
LegoAnimPresenter* p_presenter,
|
||||
Vector3& p_position,
|
||||
Vector3& p_direction
|
||||
);
|
||||
MxResult PlaceActor(LegoPathActor* p_actor);
|
||||
MxResult RemoveActor(LegoPathActor* p_actor);
|
||||
void FUN_100468f0(LegoAnimPresenter* p_presenter);
|
||||
void FUN_10046930(LegoAnimPresenter* p_presenter);
|
||||
MxResult FUN_10046b30(LegoPathBoundary** p_path, MxS32& p_value);
|
||||
MxResult FUN_10046b30(LegoPathBoundary*& p_boundaries, MxS32& p_numL);
|
||||
LegoPathBoundary* GetPathBoundary(const char* p_name);
|
||||
void Enable(MxBool p_enable);
|
||||
void FUN_10046bb0(LegoWorld* p_world);
|
||||
MxS32 FUN_1004a240(
|
||||
LegoPathEdgeContainer& p_grec,
|
||||
Vector3& p_v1,
|
||||
Vector3& p_v2,
|
||||
float p_f1,
|
||||
LegoUnknown100db7f4*& p_edge,
|
||||
LegoPathBoundary*& p_boundary
|
||||
);
|
||||
|
||||
static MxResult Init();
|
||||
static MxResult Reset();
|
||||
|
||||
private:
|
||||
LegoPathBoundary* m_unk0x08; // 0x08
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
undefined4 m_unk0x10; // 0x10
|
||||
undefined4 m_unk0x14; // 0x14
|
||||
MxS16 m_numL; // 0x18
|
||||
MxS16 m_numE; // 0x1a
|
||||
MxS16 m_numN; // 0x1c
|
||||
MxS16 m_numT; // 0x1e
|
||||
map<undefined*, undefined*, LegoPathControllerComparator> m_pfsE; // 0x20
|
||||
map<undefined*, undefined*, LegoPathControllerComparator> m_unk0x30; // 0x30
|
||||
void FUN_10046970();
|
||||
MxResult Read(LegoStorage* p_storage);
|
||||
MxResult ReadStructs(LegoStorage* p_storage);
|
||||
MxResult ReadEdges(LegoStorage* p_storage);
|
||||
MxResult ReadBoundaries(LegoStorage* p_storage);
|
||||
static MxResult ReadVector(LegoStorage* p_storage, Mx3DPointFloat& p_vec);
|
||||
static MxResult ReadVector(LegoStorage* p_storage, Mx4DPointFloat& p_vec);
|
||||
|
||||
LegoPathBoundary* m_boundaries; // 0x08
|
||||
LegoPathCtrlEdge* m_edges; // 0x0c
|
||||
Mx3DPointFloat* m_unk0x10; // 0x10
|
||||
LegoPathStruct* m_structs; // 0x14
|
||||
MxU16 m_numL; // 0x18
|
||||
MxU16 m_numE; // 0x1a
|
||||
MxU16 m_numN; // 0x1c
|
||||
MxU16 m_numT; // 0x1e
|
||||
LegoPathCtrlEdgeSet m_pfsE; // 0x20
|
||||
LegoPathActorSet m_actors; // 0x30
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
// TEMPLATE: LEGO1 0x1001fd70
|
||||
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Lbound
|
||||
|
||||
// TEMPLATE: LEGO1 0x1002c4a0
|
||||
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Buynode
|
||||
|
||||
// TEMPLATE: LEGO1 0x100451a0
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::~_Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathControl
|
||||
|
||||
// TEMPLATE: LEGO1 0x100457e0
|
||||
// Set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare>::~Set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare>
|
||||
|
||||
// TEMPLATE: LEGO1 0x10045830
|
||||
// set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::~set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >
|
||||
|
||||
// TEMPLATE: LEGO1 0x10046640
|
||||
// _Tree<LegoAnimPresenter *,LegoAnimPresenter *,set<LegoAnimPresenter *,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::_Kfn,LegoAnimPresenterSetCompare,allocator<LegoAnimPresenter *> >::find
|
||||
|
||||
// TEMPLATE: LEGO1 0x100468c0
|
||||
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Ubound
|
||||
|
||||
// TEMPLATE: LEGO1 0x10047550
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Insert
|
||||
|
||||
// TEMPLATE: LEGO1 0x100474e0
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::iterator::_Dec
|
||||
|
||||
// TEMPLATE: LEGO1 0x10047530
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Buynode
|
||||
|
||||
// TEMPLATE: LEGO1 0x100477d0
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Lrotate
|
||||
|
||||
// TEMPLATE: LEGO1 0x10047830
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Rrotate
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10047940
|
||||
// LegoPathCtrlEdge::`vector deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x100479d0
|
||||
// LegoPathCtrlEdge::LegoPathCtrlEdge
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10047a30
|
||||
// LegoPathCtrlEdge::~LegoPathCtrlEdge
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10047ae0
|
||||
// LegoUnknown100db7f4::~LegoUnknown100db7f4
|
||||
|
||||
// TEMPLATE: LEGO1 0x10048f70
|
||||
// list<LegoBoundaryEdge,allocator<LegoBoundaryEdge> >::erase
|
||||
|
||||
// TEMPLATE: LEGO1 0x1004a780
|
||||
// _Construct
|
||||
|
||||
// GLOBAL: LEGO1 0x100f4360
|
||||
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Nil
|
||||
// clang-format on
|
||||
|
||||
#endif // LEGOPATHCONTROLLER_H
|
||||
|
||||
51
LEGO1/lego/legoomni/include/legopathedgecontainer.h
Normal file
51
LEGO1/lego/legoomni/include/legopathedgecontainer.h
Normal file
@ -0,0 +1,51 @@
|
||||
#ifndef LEGOPATHEDGECONTAINER_H
|
||||
#define LEGOPATHEDGECONTAINER_H
|
||||
|
||||
#include "mxgeometry/mxgeometry3d.h"
|
||||
#include "mxstl/stlcompat.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
class LegoPathBoundary;
|
||||
struct LegoUnknown100db7f4;
|
||||
|
||||
// SIZE 0x08
|
||||
struct LegoBoundaryEdge {
|
||||
LegoUnknown100db7f4* m_edge; // 0x00
|
||||
LegoPathBoundary* m_boundary; // 0x04
|
||||
|
||||
int operator==(LegoBoundaryEdge) const { return 0; }
|
||||
int operator<(LegoBoundaryEdge) const { return 0; }
|
||||
};
|
||||
|
||||
// SIZE 0x3c
|
||||
struct LegoPathEdgeContainer : public list<LegoBoundaryEdge> {
|
||||
enum {
|
||||
c_bit1 = 0x01
|
||||
};
|
||||
|
||||
// FUNCTION: BETA10 0x100118e0
|
||||
LegoPathEdgeContainer()
|
||||
{
|
||||
m_boundary = NULL;
|
||||
m_flags = 0;
|
||||
}
|
||||
|
||||
void SetBit1(MxU32 p_flag)
|
||||
{
|
||||
if (p_flag) {
|
||||
m_flags |= c_bit1;
|
||||
}
|
||||
else {
|
||||
m_flags &= ~c_bit1;
|
||||
}
|
||||
}
|
||||
|
||||
MxU32 GetBit1() { return m_flags & c_bit1; }
|
||||
|
||||
Mx3DPointFloat m_unk0x0c; // 0x0c
|
||||
Mx3DPointFloat m_unk0x20; // 0x20
|
||||
LegoPathBoundary* m_boundary; // 0x34
|
||||
MxU8 m_flags; // 0x38
|
||||
};
|
||||
|
||||
#endif // LEGOPATHEDGECONTAINER_H
|
||||
@ -11,13 +11,20 @@ class LegoPathPresenter : public MxMediaPresenter {
|
||||
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
|
||||
{
|
||||
|
||||
80
LEGO1/lego/legoomni/include/legopathstruct.h
Normal file
80
LEGO1/lego/legoomni/include/legopathstruct.h
Normal file
@ -0,0 +1,80 @@
|
||||
#ifndef LEGOPATHSTRUCT_H
|
||||
#define LEGOPATHSTRUCT_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxatom.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
class LegoPathActor;
|
||||
class LegoWorld;
|
||||
|
||||
// VTABLE: LEGO1 0x100d7d9c
|
||||
// SIZE 0x0c
|
||||
struct LegoPathStructBase {
|
||||
public:
|
||||
enum {
|
||||
c_bit1 = 0x01 << 24,
|
||||
c_bit2 = 0x02 << 24,
|
||||
c_bit3 = 0x04 << 24,
|
||||
c_bit4 = 0x08 << 24,
|
||||
c_bit5 = 0x10 << 24,
|
||||
c_bit6 = 0x20 << 24,
|
||||
c_bit7 = 0x40 << 24
|
||||
};
|
||||
|
||||
LegoPathStructBase() : m_name(NULL), m_flags(0) {}
|
||||
|
||||
// FUNCTION: LEGO1 0x10047420
|
||||
virtual ~LegoPathStructBase()
|
||||
{
|
||||
if (m_name != NULL) {
|
||||
delete[] m_name;
|
||||
}
|
||||
}
|
||||
|
||||
char* m_name; // 0x04
|
||||
MxU32 m_flags; // 0x08
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d7da0
|
||||
// SIZE 0x14
|
||||
class LegoPathStruct : public LegoPathStructBase {
|
||||
public:
|
||||
enum Trigger {
|
||||
c_camAnim = 'C',
|
||||
c_d = 'D',
|
||||
c_e = 'E',
|
||||
c_g = 'G',
|
||||
c_h = 'H',
|
||||
c_music = 'M',
|
||||
c_s = 'S',
|
||||
c_w = 'W'
|
||||
};
|
||||
|
||||
// FUNCTION: LEGO1 0x100473a0
|
||||
LegoPathStruct() : m_world(NULL) {}
|
||||
|
||||
// FUNCTION: LEGO1 0x10047470
|
||||
~LegoPathStruct() override {}
|
||||
|
||||
virtual void HandleTrigger(LegoPathActor* p_actor, MxBool p_direction, MxU32 p_data); // vtable+0x04
|
||||
|
||||
inline void SetWorld(LegoWorld* p_world) { m_world = p_world; }
|
||||
inline void SetAtomId(const MxAtomId& p_atomId) { m_atomId = p_atomId; }
|
||||
|
||||
private:
|
||||
MxBool HandleTrigger(LegoPathActor* p_actor, MxBool p_direction, MxU32 p_data, MxBool p_bool);
|
||||
void FUN_1001bc40(const char* p_name, MxU32 p_data, MxBool p_bool);
|
||||
void PlayMusic(MxBool p_direction, MxU32 p_data);
|
||||
|
||||
LegoWorld* m_world; // 0x0c
|
||||
MxAtomId m_atomId; // 0x10
|
||||
};
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10047440
|
||||
// LegoPathStructBase::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10047890
|
||||
// LegoPathStruct::`vector deleting destructor'
|
||||
|
||||
#endif // LEGOPATHSTRUCT_H
|
||||
@ -15,13 +15,20 @@ class LegoPhonemePresenter : public MxFlcPresenter {
|
||||
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 @@ class LegoRace : public LegoWorld {
|
||||
|
||||
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 @@ class LegoRace : public LegoWorld {
|
||||
|
||||
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
|
||||
|
||||
@ -42,8 +42,9 @@ class LegoRaceCar : public LegoCarRaceActor, public LegoRaceMap {
|
||||
) override; // vtable+0x6c
|
||||
void VTable0x70(float p_float) override; // vtable+0x70
|
||||
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
|
||||
void VTable0x98() override; // vtable+0x98
|
||||
MxResult WaitForAnimation() override; // vtable+0x9c
|
||||
void SwitchBoundary(LegoPathBoundary*& p_boundary, LegoUnknown100db7f4*& p_edge, float& p_unk0xe4)
|
||||
override; // vtable+0x98
|
||||
MxResult VTable0x9c() override; // vtable+0x9c
|
||||
|
||||
virtual void FUN_10012ea0(float p_worldSpeed);
|
||||
virtual void FUN_10012ff0(float);
|
||||
|
||||
55
LEGO1/lego/legoomni/include/legoroimaplist.h
Normal file
55
LEGO1/lego/legoomni/include/legoroimaplist.h
Normal file
@ -0,0 +1,55 @@
|
||||
#ifndef LEGOROIMAPLIST_H
|
||||
#define LEGOROIMAPLIST_H
|
||||
|
||||
#include "mxlist.h"
|
||||
#include "mxtypes.h"
|
||||
|
||||
class LegoROI;
|
||||
|
||||
// VTABLE: LEGO1 0x100d9218
|
||||
// class MxCollection<LegoROI **>
|
||||
|
||||
// VTABLE: LEGO1 0x100d9230
|
||||
// class MxList<LegoROI **>
|
||||
|
||||
// VTABLE: LEGO1 0x100d9248
|
||||
// class MxPtrList<LegoROI *>
|
||||
|
||||
// VTABLE: LEGO1 0x100d9260
|
||||
// SIZE 0x18
|
||||
class LegoROIMapList : public MxPtrList<LegoROI*> {
|
||||
public:
|
||||
LegoROIMapList() : MxPtrList<LegoROI*>(TRUE) {}
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1006d360
|
||||
// LegoROIMapList::`scalar deleting destructor'
|
||||
};
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006d250
|
||||
// MxCollection<LegoROI * *>::Compare
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006d260
|
||||
// MxCollection<LegoROI * *>::~MxCollection<LegoROI * *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006d2b0
|
||||
// MxCollection<LegoROI * *>::Destroy
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006d2c0
|
||||
// MxList<LegoROI * *>::~MxList<LegoROI * *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006d3d0
|
||||
// MxPtrList<LegoROI *>::~MxPtrList<LegoROI *>
|
||||
|
||||
// TEMPLATE: LEGO1 0x1006d350
|
||||
// MxPtrList<LegoROI *>::Destroy
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1006d420
|
||||
// MxCollection<LegoROI * *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1006d490
|
||||
// MxList<LegoROI * *>::`scalar deleting destructor'
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1006d540
|
||||
// MxPtrList<LegoROI *>::`scalar deleting destructor'
|
||||
|
||||
#endif // LEGOROIMAPLIST_H
|
||||
@ -11,13 +11,20 @@ class LegoTexturePresenter : public MxMediaPresenter {
|
||||
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
|
||||
{
|
||||
|
||||
@ -13,6 +13,7 @@ class MxPresenter;
|
||||
// SIZE 0x78
|
||||
struct LegoTranInfo {
|
||||
enum {
|
||||
c_bit1 = 0x01,
|
||||
c_bit2 = 0x02
|
||||
};
|
||||
|
||||
@ -22,7 +23,7 @@ struct LegoTranInfo {
|
||||
m_unk0x08 = NULL;
|
||||
m_unk0x0c = NULL;
|
||||
m_unk0x10 = 0;
|
||||
m_unk0x12 = -1;
|
||||
m_location = -1;
|
||||
m_unk0x14 = FALSE;
|
||||
m_unk0x1c = NULL;
|
||||
m_unk0x20 = NULL;
|
||||
@ -41,7 +42,7 @@ struct LegoTranInfo {
|
||||
LegoROI* m_unk0x08; // 0x08
|
||||
MxMatrix* m_unk0x0c; // 0x0c
|
||||
MxU8 m_unk0x10; // 0x10
|
||||
MxS16 m_unk0x12; // 0x12
|
||||
MxS16 m_location; // 0x12
|
||||
MxBool m_unk0x14; // 0x14
|
||||
MxBool m_unk0x15; // 0x15
|
||||
MxU32 m_objectId; // 0x18
|
||||
|
||||
@ -7,12 +7,12 @@
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
class IslePathActor;
|
||||
class MxAtomId;
|
||||
class LegoEntity;
|
||||
class LegoFile;
|
||||
class LegoAnimPresenter;
|
||||
class LegoNamedTexture;
|
||||
class LegoPathActor;
|
||||
class LegoROI;
|
||||
class LegoTreeNode;
|
||||
|
||||
@ -24,10 +24,10 @@ Extra::ActionType MatchActionString(const char*);
|
||||
void InvokeAction(Extra::ActionType p_actionId, const MxAtomId& p_pAtom, MxS32 p_targetEntityId, LegoEntity* p_sender);
|
||||
void SetCameraControllerFromIsle();
|
||||
void ConvertHSVToRGB(float p_h, float p_s, float p_v, float* p_rOut, float* p_bOut, float* p_gOut);
|
||||
void FUN_1003ecc0(IslePathActor* p_actor, undefined4, undefined4, MxBool);
|
||||
void PlayCamAnim(LegoPathActor* p_actor, MxBool p_unused, MxU32 p_location, MxBool p_bool);
|
||||
void FUN_1003eda0();
|
||||
MxBool RemoveFromCurrentWorld(const MxAtomId& p_atomId, MxS32 p_id);
|
||||
void FUN_1003ef00(MxBool);
|
||||
void FUN_1003ef00(MxBool p_enable);
|
||||
void SetAppCursor(WPARAM p_wparam);
|
||||
MxBool FUN_1003ef60();
|
||||
MxBool RemoveFromWorld(MxAtomId& p_entityAtom, MxS32 p_entityId, MxAtomId& p_worldAtom, MxS32 p_worldEntityId);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -88,7 +88,7 @@ class LegoVideoManager : public MxVideoManager {
|
||||
MxS32 m_cursorY; // 0x510
|
||||
LPDIRECTDRAWSURFACE m_cursorSurface; // 0x514
|
||||
RECT m_cursorRect; // 0x518
|
||||
undefined4 m_unk0x528; // 0x528
|
||||
LPDIRECTDRAWSURFACE m_unk0x528; // 0x528
|
||||
MxBool m_drawFPS; // 0x52c
|
||||
RECT m_fpsRect; // 0x530
|
||||
HFONT m_arialFont; // 0x540
|
||||
|
||||
@ -8,7 +8,6 @@
|
||||
#include "mxpresenterlist.h"
|
||||
#include "roi/legoroi.h"
|
||||
|
||||
class IslePathActor;
|
||||
class LegoCameraController;
|
||||
class LegoPathBoundary;
|
||||
class LegoHideAnimPresenter;
|
||||
@ -60,38 +59,41 @@ class LegoWorld : public LegoEntity {
|
||||
// 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();
|
||||
void Remove(MxCore* p_object);
|
||||
MxResult FUN_1001f720(
|
||||
IslePathActor* p_actor,
|
||||
const char* p_path,
|
||||
MxResult PlaceActor(
|
||||
LegoPathActor* p_actor,
|
||||
const char* p_name,
|
||||
MxS32 p_src,
|
||||
float p_srcScale,
|
||||
MxS32 p_dest,
|
||||
float p_destScale
|
||||
);
|
||||
undefined4 FUN_1001fa70(IslePathActor* p_actor);
|
||||
undefined4 FUN_1001fb70(
|
||||
IslePathActor* p_actor,
|
||||
MxResult PlaceActor(LegoPathActor* p_actor);
|
||||
MxResult PlaceActor(
|
||||
LegoPathActor* p_actor,
|
||||
LegoAnimPresenter* p_presenter,
|
||||
Vector3& p_position,
|
||||
Vector3& p_direction
|
||||
);
|
||||
void FUN_1001fc80(IslePathActor* 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);
|
||||
void AddPath(LegoPathController* p_controller);
|
||||
MxResult GetCurrPathInfo(LegoPathBoundary** p_path, MxS32& p_value);
|
||||
MxResult GetCurrPathInfo(LegoPathBoundary** p_boundaries, MxS32& p_numL);
|
||||
MxCore* Find(const char* p_class, const char* p_name);
|
||||
MxCore* Find(const MxAtomId& p_atom, MxS32 p_entityId);
|
||||
|
||||
inline LegoCameraController* GetCamera() { return m_cameraController; }
|
||||
inline LegoEntityList* GetEntityList() { return m_entityList; }
|
||||
inline MxS32 GetScriptIndex() { return m_scriptIndex; }
|
||||
inline MxCoreSet& GetUnknown0xd0() { return m_set0xd0; }
|
||||
inline list<LegoROI*>& GetROIList() { return m_roiList; }
|
||||
inline LegoHideAnimPresenter* GetHideAnimPresenter() { return m_hideAnimPresenter; }
|
||||
|
||||
inline void SetScriptIndex(MxS32 p_scriptIndex) { m_scriptIndex = p_scriptIndex; }
|
||||
|
||||
|
||||
@ -18,13 +18,20 @@ class LegoWorldPresenter : public LegoEntityPresenter {
|
||||
|
||||
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 @@ class Motocycle : public IslePathActor {
|
||||
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 @@ class MxControlPresenter : public MxCompositePresenter {
|
||||
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 @@ class Pizza : public IsleActor {
|
||||
}
|
||||
|
||||
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 @@ class Pizza : public IsleActor {
|
||||
// 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 @@ class PizzaMissionState : public LegoState {
|
||||
// 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 @@ class Pizzeria : public IsleActor {
|
||||
}
|
||||
|
||||
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 @@ class PizzeriaState : public LegoState {
|
||||
// SYNTHETIC: LEGO1 0x10017ce0
|
||||
// PizzeriaState::`scalar deleting destructor'
|
||||
|
||||
MxU32 FUN_10017d70();
|
||||
|
||||
private:
|
||||
Playlist m_unk0x08[5]; // 0x08
|
||||
PizzeriaStateStruct m_unk0x44; // 0x44
|
||||
|
||||
@ -36,14 +36,14 @@ class Police : public LegoWorld {
|
||||
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 @@ class RaceCar : public IslePathActor {
|
||||
}
|
||||
|
||||
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 @@ class Radio : public MxCore {
|
||||
}
|
||||
|
||||
void Initialize(MxBool p_und);
|
||||
void CreateState();
|
||||
void Play();
|
||||
void Stop();
|
||||
|
||||
@ -39,14 +40,12 @@ class Radio : public MxCore {
|
||||
// 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 @@ class RegistrationBook : public LegoWorld {
|
||||
|
||||
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 @@ class RegistrationBook : public LegoWorld {
|
||||
|
||||
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 @@ class Score : public LegoWorld {
|
||||
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,19 +26,21 @@ class SkateBoard : public IslePathActor {
|
||||
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
|
||||
|
||||
void FUN_10010510();
|
||||
inline void SetUnknown0x160(MxBool p_unk0x160) { m_unk0x160 = p_unk0x160; }
|
||||
|
||||
void ActivateSceneActions();
|
||||
|
||||
// SYNTHETIC: LEGO1 0x1000ff60
|
||||
// SkateBoard::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
void FUN_10010270(MxBool p_enable);
|
||||
void EnableScenePresentation(MxBool p_enable);
|
||||
|
||||
MxBool m_unk0x160; // 0x160
|
||||
Act1State* m_act1state; // 0x164
|
||||
|
||||
@ -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 @@ class TowTrack : public IslePathActor {
|
||||
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 @@ class TowTrackMissionState : public LegoState {
|
||||
// SYNTHETIC: LEGO1 0x1004e060
|
||||
// TowTrackMissionState::`scalar deleting destructor'
|
||||
|
||||
protected:
|
||||
undefined4 m_unk0x08; // 0x08
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
MxU8 m_unk0x10; // 0x10
|
||||
|
||||
@ -34,7 +34,7 @@ Act1State::Act1State() : m_unk0x00c(0), m_unk0x00e(0), m_unk0x008(NULL), m_unk0x
|
||||
m_unk0x1b0 = NULL;
|
||||
m_unk0x021 = 1;
|
||||
m_elevFloor = Act1State::c_floor1;
|
||||
m_unk0x00c = _countof(g_unk0x100f37f0);
|
||||
m_unk0x00c = sizeOfArray(g_unk0x100f37f0);
|
||||
m_unk0x1b4 = NULL;
|
||||
m_unk0x1b8 = NULL;
|
||||
m_unk0x208 = NULL;
|
||||
|
||||
@ -22,7 +22,7 @@ MxResult Act2Actor::VTable0x94(LegoPathActor*, MxBool)
|
||||
}
|
||||
|
||||
// STUB: LEGO1 0x10018a20
|
||||
MxResult Act2Actor::WaitForAnimation()
|
||||
MxResult Act2Actor::VTable0x9c()
|
||||
{
|
||||
// TODO
|
||||
return SUCCESS;
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user