Implement/match several functions in Act3, refactor (#1197)

* Implement/match several functions in Act3, refactor

* Fix naming

* Rename

* Add comment

* Add annotation

* Add BETA assert
This commit is contained in:
Christian Semmler
2024-12-08 10:00:57 -07:00
committed by GitHub
parent 97fb6e4f15
commit 1aff40dd94
37 changed files with 244 additions and 112 deletions

View File

@@ -22,7 +22,7 @@ public:
void SetROI(LegoROI* p_roi, MxBool p_bool1, MxBool p_bool2) override; // vtable+0x24
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
MxS32 VTable0x68(Vector3& p_v1, Vector3& p_v2, Vector3& p_v3) override; // vtable+0x68
void VTable0x70(float p_und) override; // vtable+0x70
void VTable0x70(float p_time) override; // vtable+0x70
MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94
MxResult VTable0x9c() override; // vtable+0x9c
MxS32 VTable0xa0() override; // vtable+0xa0

View File

@@ -6,8 +6,15 @@
#include "legostate.h"
#include "legoworld.h"
class Act3Brickster;
class Act3Cop;
class Act3Shark;
class Helicopter;
// Macros confirmed by BETA10
#define MAX_PIZZAS 20
#define MAX_DONUTS 20
// SIZE 0x0c
struct Act3ListElement {
undefined4 m_unk0x00[3]; // 0x00
@@ -89,7 +96,7 @@ public:
MxBool Escape() override; // vtable+0x64
void Enable(MxBool p_enable) override; // vtable+0x68
void SetHelicopter(Helicopter* p_helicopter) { m_helicopter = p_helicopter; }
void SetHelicopter(Helicopter* p_copter) { m_copter = p_copter; }
void SetDestLocation(LegoGameState::Area p_destLocation) { m_destLocation = p_destLocation; }
// SYNTHETIC: LEGO1 0x10072630
@@ -101,15 +108,15 @@ public:
void FUN_10073430();
protected:
undefined4 m_unk0xf8; // 0xf8
Act3Ammo m_unk0xfc[20]; // 0xfc
Act3Ammo m_unk0x217c[20]; // 0x217c
Act3State* m_state; // 0xf8
Act3Ammo m_pizzas[MAX_PIZZAS]; // 0xfc
Act3Ammo m_donuts[MAX_DONUTS]; // 0x217c
undefined m_unk0x41fc; // 0x41fc
undefined4 m_unk0x4200; // 0x4200
undefined4 m_unk0x4204; // 0x4204
undefined4 m_unk0x4208; // 0x4208
Helicopter* m_helicopter; // 0x420c
undefined4 m_unk0x4210; // 0x4210
Act3Cop* m_cop1; // 0x4200
Act3Cop* m_cop2; // 0x4204
Act3Brickster* m_brickster; // 0x4208
Helicopter* m_copter; // 0x420c
Act3Shark* m_shark; // 0x4210
MxFloat m_unk0x4214; // 0x4214
undefined4 m_unk0x4218; // 0x4218
undefined m_unk0x421c; // 0x421c
@@ -117,7 +124,7 @@ protected:
undefined m_unk0x421e; // 0x421e
Act3List m_unk0x4220; // 0x4220
undefined4 m_unk0x4230[15]; // 0x4230
undefined4 m_unk0x426c; // 0x426c
Act3Script::Script m_unk0x426c; // 0x426c
LegoGameState::Area m_destLocation; // 0x4270
};

View File

@@ -20,7 +20,7 @@ public:
return "Act3Actor";
}
MxU32 VTable0x90(float p_float, Matrix4& p_transform) override; // vtable+0x90
MxU32 VTable0x90(float p_time, Matrix4& p_transform) override; // vtable+0x90
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
// SYNTHETIC: LEGO1 0x10043330

View File

@@ -12,7 +12,7 @@ public:
~Act3Brickster() override;
void ParseAction(char* p_extra) override; // vtable+0x20
void VTable0x70(float p_und) override; // vtable+0x70
void VTable0x70(float p_time) override; // vtable+0x70
MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94
void SwitchBoundary(
LegoPathBoundary*& p_boundary,

View File

@@ -11,7 +11,7 @@ public:
Act3Cop();
void ParseAction(char* p_extra) override; // vtable+0x20
void VTable0x70(float p_und) override; // vtable+0x70
void VTable0x70(float p_time) override; // vtable+0x70
MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94
MxResult VTable0x9c() override; // vtable+0x9c

View File

@@ -17,8 +17,8 @@ public:
return "Act3Shark";
}
void ParseAction(char*) override; // vtable+0x20
void VTable0x70(float p_float) override; // vtable+0x70
void ParseAction(char*) override; // vtable+0x20
void VTable0x70(float p_time) override; // vtable+0x70
// LegoAnimActor vtable
virtual MxResult FUN_10042ce0(void*); // vtable+0x10

View File

@@ -25,9 +25,9 @@ public:
}
void ParseAction(char* p_extra) override; // vtable+0x20
void VTable0x70(float p_float) override; // vtable+0x70
void VTable0x70(float p_time) override; // vtable+0x70
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
virtual MxFloat VTable0xcc(float p_float); // vtable+0xcc
virtual MxFloat VTable0xcc(float p_time); // vtable+0xcc
// SYNTHETIC: LEGO1 0x1000e580
// Doors::`scalar deleting destructor'

View File

@@ -66,7 +66,7 @@ public:
}
MxResult Create(MxDSAction& p_dsAction) override; // vtable+0x18
void VTable0x70(float p_float) override; // vtable+0x70
void VTable0x70(float p_time) override; // vtable+0x70
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
MxLong HandleClick() override; // vtable+0xcc
MxLong HandleControl(LegoControlManagerNotificationParam& p_param) override; // vtable+0xd4

View File

@@ -55,7 +55,7 @@ public:
void ParseAction(char* p_extra) override; // vtable+0x20
void SetWorldSpeed(MxFloat p_worldSpeed) override; // vtable+0x30
void VTable0x70(float p_und) override; // vtable+0x70
void VTable0x70(float p_time) override; // vtable+0x70
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
virtual MxResult FUN_1001c1f0(float& p_und);

View File

@@ -87,8 +87,8 @@ public:
MxResult FUN_10030630();
LegoBuildingInfo* GetInfoArray(MxS32& p_length);
void FUN_100307b0(LegoEntity* p_entity, MxS32 p_adjust);
void FUN_10030800();
static void FUN_10030800();
static const char* GetCustomizeAnimFile() { return g_customizeAnimFile; }
// SYNTHETIC: LEGO1 0x1002f940

View File

@@ -43,9 +43,9 @@ public:
float p_f2,
Vector3& p_v3
) override; // vtable+0x6c
void VTable0x70(float) override; // vtable+0x70
void VTable0x70(float p_time) override; // vtable+0x70
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
MxU32 VTable0x90(float p_float, Matrix4& p_matrix) override; // vtable+0x90
MxU32 VTable0x90(float p_time, Matrix4& p_matrix) override; // vtable+0x90
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
MxResult VTable0x9c() override; // vtable+0x9c
void VTable0xa4(MxBool& p_und1, MxS32& p_und2) override; // vtable+0xa4

View File

@@ -40,7 +40,7 @@ public:
float p_f2,
Vector3& p_v3
) override; // vtable+0x6c
void VTable0x70(float p_float) override; // vtable+0x70
void VTable0x70(float p_time) override; // vtable+0x70
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
void SwitchBoundary(LegoPathBoundary*& p_boundary, LegoUnknown100db7f4*& p_edge, float& p_unk0xe4)
override; // vtable+0x98

View File

@@ -39,7 +39,7 @@ public:
float p_f2,
Vector3& p_v3
) override; // vtable+0x6c
void VTable0x70(float p_float) override; // vtable+0x70
void VTable0x70(float p_time) override; // vtable+0x70
MxS32 VTable0x1c(LegoPathBoundary* p_boundary, LegoEdge* p_edge) override; // vtable+0x1c
// SYNTHETIC: LEGO1 0x10013a80

View File

@@ -38,7 +38,6 @@ public:
void SetTargets(int p_hPos, int p_vPos, MxBool p_accel);
void SetControlMax(int p_hMax, int p_vMax);
void SetTrackDefaultParams(MxBool p_state) { m_trackDefault = p_state; }
void SetToDefaultParams();
MxBool CalculateNewPosDir(
const Vector3& p_curPos,
@@ -88,6 +87,13 @@ public:
// FUNCTION: BETA10 0x100c7880
void SetTrackDefault(MxS32 p_trackDefault) { m_trackDefault = p_trackDefault; }
// FUNCTION: BETA10 0x100178a0
void Reset()
{
m_trackDefault = TRUE;
SetToDefaultParams();
}
MxFloat GetLinearVel() { return m_linearVel; }
MxFloat GetRotationalVel() { return m_rotationalVel; }
MxFloat GetMaxLinearVel() { return m_maxLinearVel; }
@@ -96,17 +102,17 @@ public:
void ResetMaxLinearVel(MxFloat p_maxLinearVel)
{
m_maxLinearVel = p_maxLinearVel;
m_trackDefault = 0;
m_trackDefault = FALSE;
}
void ResetMaxLinearAccel(MxFloat p_maxLinearAccel)
{
m_maxLinearAccel = p_maxLinearAccel;
m_trackDefault = 0;
m_trackDefault = FALSE;
}
void ResetMaxLinearDeccel(MxFloat p_maxLinearDeccel)
{
m_maxLinearDeccel = p_maxLinearDeccel;
m_trackDefault = 0;
m_trackDefault = FALSE;
}
// FUNCTION: BETA10 0x100c9a10

View File

@@ -49,6 +49,7 @@ public:
MxBool FUN_10026c50(LegoEntity* p_entity);
void ScheduleAnimation(LegoEntity* p_entity, MxLong p_length);
void FUN_10027120();
void FUN_10027200();
static void SetCustomizeAnimFile(const char* p_value);
static const char* GetCustomizeAnimFile() { return g_customizeAnimFile; }

View File

@@ -31,7 +31,7 @@ public:
}
MxS32 VTable0x68(Vector3& p_v1, Vector3& p_v2, Vector3& p_v3) override; // vtable+0x68
MxU32 VTable0x90(float p_float, Matrix4& p_matrix) override; // vtable+0x90
MxU32 VTable0x90(float p_time, Matrix4& p_matrix) override; // vtable+0x90
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
// FUNCTION: LEGO1 0x10014aa0

View File

@@ -21,9 +21,9 @@ public:
~LegoRaceMap() override;
// LegoPathActor vtable
MxLong Notify(MxParam& p_param) override; // vtable+0x04
void ParseAction(char* p_extra) override; // vtable+0x20
void VTable0x70(float p_und) override = 0; // vtable+0x70
MxLong Notify(MxParam& p_param) override; // vtable+0x04
void ParseAction(char* p_extra) override; // vtable+0x20
void VTable0x70(float p_time) override = 0; // vtable+0x70
// LegoRaceMap vtable
virtual void FUN_1005d4b0(); // vtable+0x00

View File

@@ -66,7 +66,7 @@ public:
float p_f2,
Vector3& p_v3
) override; // vtable+0x6c
void VTable0x70(float p_float) override; // vtable+0x70
void VTable0x70(float p_time) override; // vtable+0x70
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
void SwitchBoundary(LegoPathBoundary*& p_boundary, LegoUnknown100db7f4*& p_edge, float& p_unk0xe4)
override; // vtable+0x98

View File

@@ -42,13 +42,13 @@ public:
float p_f1,
float p_f2,
Vector3& p_v3
) override; // vtable+0x6c
void VTable0x70(float p_float) override; // vtable+0x70
) override; // vtable+0x6c
void VTable0x70(float p_time) override; // vtable+0x70
void SwitchBoundary(LegoPathBoundary*& p_boundary, LegoUnknown100db7f4*& p_edge, float& p_unk0xe4)
override; // vtable+0x98
MxResult VTable0x9c() override; // vtable+0x9c
virtual void FUN_10080590(float p_float);
virtual void FUN_10080590(float p_time);
// FUNCTION: LEGO1 0x10012bb0
virtual void FUN_10012bb0(float p_unk0x14) { m_unk0x14 = p_unk0x14; }