Implement/match Act3Brickster::HitActor (#1212)

* Implement/match `Act3Brickster::HitActor`

* Fixes

* Fixes

* Fixes

* Add `Act3Cop::VTable0x9c`

* Fix
This commit is contained in:
Christian Semmler
2024-12-12 09:10:44 -07:00
committed by GitHub
parent fe57a94416
commit aceba71fbb
25 changed files with 166 additions and 78 deletions

View File

@@ -23,7 +23,7 @@ public:
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_time) override; // vtable+0x70
MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94
MxResult HitActor(LegoPathActor*, MxBool) override; // vtable+0x94
MxResult VTable0x9c() override; // vtable+0x9c
MxS32 VTable0xa0() override; // vtable+0xa0

View File

@@ -26,7 +26,7 @@ public:
return !strcmp(p_name, Act2Brick::ClassName()) || LegoEntity::IsA(p_name);
}
MxResult VTable0x94(LegoPathActor* p_actor, MxBool) override; // vtable+0x94
MxResult HitActor(LegoPathActor* p_actor, MxBool) override; // vtable+0x94
// SYNTHETIC: LEGO1 0x1007a450
// Act2Brick::`scalar deleting destructor'

View File

@@ -6,7 +6,7 @@
// VTABLE: LEGO1 0x100d4ed8
// SIZE 0x154
class Act2GenActor : public LegoPathActor {
MxResult VTable0x94(LegoPathActor* p_actor, MxBool) override; // vtable+0x94
MxResult HitActor(LegoPathActor* p_actor, MxBool) override; // vtable+0x94
// SYNTHETIC: LEGO1 0x1000f5a0
// Act2GenActor::`scalar deleting destructor'

View File

@@ -113,12 +113,12 @@ public:
void SetShark(Act3Shark* p_shark) { m_shark = p_shark; }
void SetDestLocation(LegoGameState::Area p_destLocation) { m_destLocation = p_destLocation; }
Act3Brickster* GetBrickster() { return m_brickster; }
// SYNTHETIC: LEGO1 0x10072630
// Act3::`scalar deleting destructor'
void EatPizza(MxS32 p_index);
void EatDonut(MxS32 p_index);
void RemovePizza(Act3Ammo& p_p);
void RemoveDonut(Act3Ammo& p_p);
MxResult ShootPizza(LegoPathController* p_controller, Vector3& p_location, Vector3& p_direction, Vector3& p_up);
MxResult ShootDonut(LegoPathController* p_controller, Vector3& p_location, Vector3& p_direction, Vector3& p_up);
@@ -128,6 +128,11 @@ public:
void GoodEnding(const Matrix4& p_matrix);
static void DebugPrintf(const char* p_format, ...);
// BETA indicates that the actors access certain members directly.
friend class Act3Brickster;
friend class Act3Cop;
friend class Act3Shark;
protected:
MxLong HandleTransitionEnd();

View File

@@ -23,8 +23,8 @@ public:
return "Act3Actor";
}
MxU32 VTable0x90(float p_time, Matrix4& p_transform) override; // vtable+0x90
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
MxU32 VTable0x90(float p_time, Matrix4& p_transform) override; // vtable+0x90
MxResult HitActor(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
MxFloat GetUnknown0x1c() { return m_unk0x1c; }
@@ -37,9 +37,9 @@ public:
// Act3Actor::~Act3Actor
private:
MxFloat m_unk0x1c; // 0x1c
static Mx3DPointFloat g_unk0x10104ef0;
MxFloat m_unk0x1c; // 0x1c
};
// VTABLE: LEGO1 0x100d7750 LegoPathActor
@@ -49,10 +49,10 @@ class Act3Cop : public Act3Actor {
public:
Act3Cop();
void ParseAction(char* p_extra) override; // vtable+0x20
void VTable0x70(float p_time) override; // vtable+0x70
MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94
MxResult VTable0x9c() override; // vtable+0x9c
void ParseAction(char* p_extra) override; // vtable+0x20
void VTable0x70(float p_time) override; // vtable+0x70
MxResult HitActor(LegoPathActor*, MxBool) override; // vtable+0x94
MxResult VTable0x9c() override; // vtable+0x9c
MxFloat GetUnknown0x20() { return m_unk0x20; }
@@ -66,7 +66,7 @@ public:
private:
MxFloat m_unk0x20; // 0x20
LegoWorld* m_world; // 0x24
undefined4 m_unk0x24[2]; // 0x28
undefined4 m_unk0x28[2]; // 0x28
};
// VTABLE: LEGO1 0x100d7838 LegoPathActor
@@ -77,9 +77,9 @@ public:
Act3Brickster();
~Act3Brickster() override;
void ParseAction(char* p_extra) override; // vtable+0x20
void VTable0x70(float p_time) override; // vtable+0x70
MxResult VTable0x94(LegoPathActor*, MxBool) override; // vtable+0x94
void ParseAction(char* p_extra) override; // vtable+0x20
void VTable0x70(float p_time) override; // vtable+0x70
MxResult HitActor(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
void SwitchBoundary(
LegoPathBoundary*& p_boundary,
LegoUnknown100db7f4*& p_edge,

View File

@@ -68,6 +68,8 @@ public:
}
}
MxU32 IsBit5() { return m_ammoFlag & c_bit5; }
MxFloat GetUnknown0x158() { return m_unk0x158; }
void SetUnknown0x158(MxFloat p_unk0x158) { m_unk0x158 = p_unk0x158; }

View File

@@ -24,10 +24,10 @@ public:
return !strcmp(p_name, Doors::ClassName()) || LegoPathActor::IsA(p_name);
}
void ParseAction(char* p_extra) override; // vtable+0x20
void VTable0x70(float p_time) override; // vtable+0x70
MxResult VTable0x94(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
virtual MxFloat VTable0xcc(float p_time); // vtable+0xcc
void ParseAction(char* p_extra) override; // vtable+0x20
void VTable0x70(float p_time) override; // vtable+0x70
MxResult HitActor(LegoPathActor* p_actor, MxBool p_bool) override; // vtable+0x94
virtual MxFloat VTable0xcc(float p_time); // vtable+0xcc
// SYNTHETIC: LEGO1 0x1000e580
// Doors::`scalar deleting destructor'

View File

@@ -42,14 +42,14 @@ public:
float p_f1,
float p_f2,
Vector3& p_v3
) override; // vtable+0x6c
void VTable0x70(float p_time) override; // vtable+0x70
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
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
void VTable0xc4() override; // vtable+0xc4
) override; // vtable+0x6c
void VTable0x70(float p_time) override; // vtable+0x70
void VTable0x74(Matrix4& p_transform) override; // vtable+0x74
MxU32 VTable0x90(float p_time, Matrix4& p_matrix) override; // vtable+0x90
MxResult HitActor(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
void VTable0xc4() override; // vtable+0xc4
virtual MxResult FUN_1002aae0();

View File

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

View File

@@ -91,7 +91,7 @@ public:
virtual MxU32 VTable0x90(float, Matrix4&) { return FALSE; } // vtable+0x90
// FUNCTION: LEGO1 0x10002d50
virtual MxResult VTable0x94(LegoPathActor*, MxBool) { return 0; } // vtable+0x94
virtual MxResult HitActor(LegoPathActor*, MxBool) { return 0; } // vtable+0x94
virtual void SwitchBoundary(
LegoPathBoundary*& p_boundary,

View File

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

View File

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