mirror of
https://github.com/isledecomp/isle.git
synced 2025-10-24 17:04:17 +00:00
Implement/match Act3::ShootPizza and Act3::ShootDonut (#1203)
* Implement/match `Act3::LaunchPizza` and `Act3::LaunchDonut` * Match Helicopter::HandleControl * Rename * Adjust total function count * Rename
This commit is contained in:
committed by
GitHub
parent
07def56326
commit
c2ee761f81
@@ -17,7 +17,9 @@ class Helicopter;
|
||||
|
||||
// SIZE 0x0c
|
||||
struct Act3ListElement {
|
||||
undefined4 m_unk0x00[3]; // 0x00
|
||||
MxU32 m_objectId; // 0x00
|
||||
undefined4 m_unk0x04; // 0x04
|
||||
undefined m_unk0x08; // 0x08
|
||||
|
||||
int operator==(Act3ListElement) const { return 0; }
|
||||
int operator<(Act3ListElement) const { return 0; }
|
||||
@@ -26,12 +28,13 @@ struct Act3ListElement {
|
||||
// SIZE 0x10
|
||||
class Act3List : private list<Act3ListElement> {
|
||||
public:
|
||||
Act3List() { m_unk0x04 = 0; }
|
||||
Act3List() { m_unk0x0c = 0; }
|
||||
|
||||
void FUN_10071fa0();
|
||||
void FUN_100720d0(MxU32 p_objectId);
|
||||
|
||||
private:
|
||||
undefined4 m_unk0x04; // 0x0c
|
||||
undefined4 m_unk0x0c; // 0x0c
|
||||
};
|
||||
|
||||
// VTABLE: LEGO1 0x100d4fc8
|
||||
@@ -103,8 +106,8 @@ public:
|
||||
// SYNTHETIC: LEGO1 0x10072630
|
||||
// Act3::`scalar deleting destructor'
|
||||
|
||||
MxBool FUN_100727e0(LegoPathController*, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
|
||||
MxBool FUN_10072980(LegoPathController*, Mx3DPointFloat& p_loc, Mx3DPointFloat& p_dir, Mx3DPointFloat& p_up);
|
||||
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);
|
||||
void FUN_10073400();
|
||||
void FUN_10073430();
|
||||
|
||||
|
||||
@@ -4,12 +4,14 @@
|
||||
#include "legopathactor.h"
|
||||
#include "mxgeometry/mxgeometry3d.h"
|
||||
|
||||
class Act3;
|
||||
|
||||
// VTABLE: LEGO1 0x100d8460
|
||||
// SIZE 0x1a0
|
||||
class Act3Ammo : public LegoPathActor {
|
||||
public:
|
||||
enum {
|
||||
c_bit4 = 0x04
|
||||
c_placed = 0x04
|
||||
};
|
||||
|
||||
Act3Ammo();
|
||||
@@ -18,20 +20,33 @@ public:
|
||||
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
||||
void VTable0x70(float p_time) override; // vtable+0x70
|
||||
|
||||
MxU16 GetFlags() { return m_flags; }
|
||||
// FUNCTION: BETA10 0x10017750
|
||||
MxU32 IsPlaced() { return m_ammoFlag & c_placed; }
|
||||
|
||||
MxFloat GetUnknown0x158() { return m_unk0x158; }
|
||||
|
||||
// FUNCTION: BETA10 0x100177b0
|
||||
Mx3DPointFloat* GetUnknown0x160() { return m_unk0x160; }
|
||||
|
||||
// FUNCTION: BETA10 0x100177e0
|
||||
MxFloat* GetUnknown0x19c() { return &m_unk0x19c; }
|
||||
|
||||
void SetUnknown0x158(MxFloat p_unk0x158) { m_unk0x158 = p_unk0x158; }
|
||||
|
||||
MxResult FUN_10053980(Act3* p_a3, MxU32 p_isDonut, MxS32 p_index);
|
||||
MxResult FUN_10053b40(Vector3& p_srcLoc, Vector3& p_srcDir, Vector3& p_srcUp);
|
||||
MxResult FUN_10053cb0(LegoPathController* p_controller, LegoPathBoundary* p_boundary, MxFloat p_unk0x19c);
|
||||
MxResult FUN_10053d30(LegoPathController* p_controller, MxFloat p_unk0x19c);
|
||||
|
||||
// SYNTHETIC: LEGO1 0x10053880
|
||||
// Act3Ammo::`scalar deleting destructor'
|
||||
|
||||
private:
|
||||
MxU16 m_flags; // 0x154
|
||||
MxU16 m_ammoFlag; // 0x154
|
||||
MxFloat m_unk0x158; // 0x158
|
||||
undefined4 m_unk0x15c; // 0x15c
|
||||
Act3* m_a3; // 0x15c
|
||||
Mx3DPointFloat m_unk0x160[3]; // 0x160
|
||||
undefined4 m_unk0x19c; // 0x19c
|
||||
MxFloat m_unk0x19c; // 0x19c
|
||||
};
|
||||
|
||||
#endif // ACT3AMMO_H
|
||||
|
||||
@@ -135,7 +135,7 @@ public:
|
||||
// FUNCTION: BETA10 0x1001c860
|
||||
MxU32 GetState() { return m_state; }
|
||||
|
||||
LegoPathController* GetController() { return m_controller; }
|
||||
LegoPathController* GetController() { return m_pathController; }
|
||||
MxBool GetCollideBox() { return m_collideBox; }
|
||||
MxFloat GetLastTime() { return m_lastTime; }
|
||||
MxFloat GetActorTime() { return m_actorTime; }
|
||||
@@ -145,7 +145,7 @@ public:
|
||||
// FUNCTION: BETA10 0x10013430
|
||||
void SetState(MxU32 p_state) { m_state = p_state; }
|
||||
|
||||
void SetController(LegoPathController* p_controller) { m_controller = p_controller; }
|
||||
void SetController(LegoPathController* p_pathController) { m_pathController = p_pathController; }
|
||||
void SetLastTime(MxFloat p_lastTime) { m_lastTime = p_lastTime; }
|
||||
void SetActorTime(MxFloat p_actorTime) { m_actorTime = p_actorTime; }
|
||||
|
||||
@@ -167,27 +167,27 @@ protected:
|
||||
MxS32 p_und
|
||||
);
|
||||
|
||||
MxFloat m_BADuration; // 0x78
|
||||
MxFloat m_unk0x7c; // 0x7c
|
||||
MxFloat m_actorTime; // 0x80
|
||||
MxFloat m_lastTime; // 0x84
|
||||
LegoPathBoundary* m_boundary; // 0x88
|
||||
LegoUnknown m_unk0x8c; // 0x8c
|
||||
MxU32 m_state; // 0xdc
|
||||
LegoUnknown100db7f4* m_destEdge; // 0xe0
|
||||
MxFloat m_unk0xe4; // 0xe4
|
||||
MxBool m_collideBox; // 0xe8
|
||||
MxBool m_unk0xe9; // 0xe9
|
||||
MxBool m_userNavFlag; // 0xea
|
||||
MxMatrix m_unk0xec; // 0xec
|
||||
LegoPathEdgeContainer* m_grec; // 0x134
|
||||
LegoPathController* m_controller; // 0x138
|
||||
MxFloat m_maxLinearVel; // 0x13c
|
||||
MxFloat m_unk0x140; // 0x140
|
||||
MxFloat m_unk0x144; // 0x144
|
||||
MxU8 m_unk0x148; // 0x148
|
||||
MxS32 m_unk0x14c; // 0x14c
|
||||
MxFloat m_unk0x150; // 0x150
|
||||
MxFloat m_BADuration; // 0x78
|
||||
MxFloat m_unk0x7c; // 0x7c
|
||||
MxFloat m_actorTime; // 0x80
|
||||
MxFloat m_lastTime; // 0x84
|
||||
LegoPathBoundary* m_boundary; // 0x88
|
||||
LegoUnknown m_unk0x8c; // 0x8c
|
||||
MxU32 m_state; // 0xdc
|
||||
LegoUnknown100db7f4* m_destEdge; // 0xe0
|
||||
MxFloat m_unk0xe4; // 0xe4
|
||||
MxBool m_collideBox; // 0xe8
|
||||
MxBool m_unk0xe9; // 0xe9
|
||||
MxBool m_userNavFlag; // 0xea
|
||||
MxMatrix m_unk0xec; // 0xec
|
||||
LegoPathEdgeContainer* m_grec; // 0x134
|
||||
LegoPathController* m_pathController; // 0x138
|
||||
MxFloat m_maxLinearVel; // 0x13c
|
||||
MxFloat m_unk0x140; // 0x140
|
||||
MxFloat m_unk0x144; // 0x144
|
||||
MxU8 m_unk0x148; // 0x148
|
||||
MxS32 m_unk0x14c; // 0x14c
|
||||
MxFloat m_unk0x150; // 0x150
|
||||
};
|
||||
|
||||
// TEMPLATE: LEGO1 0x10018b70
|
||||
|
||||
@@ -111,14 +111,6 @@ public:
|
||||
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
|
||||
);
|
||||
MxResult FUN_10048310(
|
||||
LegoPathEdgeContainer* p_grec,
|
||||
const Vector3& p_oldPosition,
|
||||
@@ -130,6 +122,21 @@ public:
|
||||
LegoU8 p_mask,
|
||||
MxFloat* p_param9
|
||||
);
|
||||
MxS32 FUN_1004a240(
|
||||
LegoPathEdgeContainer& p_grec,
|
||||
Vector3& p_v1,
|
||||
Vector3& p_v2,
|
||||
float p_f1,
|
||||
LegoUnknown100db7f4*& p_edge,
|
||||
LegoPathBoundary*& p_boundary
|
||||
);
|
||||
undefined4 FUN_1004a380(
|
||||
Vector3& p_param1,
|
||||
Vector3& p_param2,
|
||||
Mx3DPointFloat* p_param3,
|
||||
LegoPathBoundary*& p_boundary,
|
||||
MxFloat& p_param5
|
||||
);
|
||||
|
||||
static MxResult Init();
|
||||
static MxResult Reset();
|
||||
|
||||
Reference in New Issue
Block a user