2024-12-07 13:57:59 -05:00
|
|
|
#ifndef ACT3AMMO_H
|
|
|
|
#define ACT3AMMO_H
|
|
|
|
|
|
|
|
#include "legopathactor.h"
|
|
|
|
#include "mxgeometry/mxgeometry3d.h"
|
|
|
|
|
2024-12-09 17:41:51 -05:00
|
|
|
class Act3;
|
|
|
|
|
2024-12-07 13:57:59 -05:00
|
|
|
// VTABLE: LEGO1 0x100d8460
|
|
|
|
// SIZE 0x1a0
|
|
|
|
class Act3Ammo : public LegoPathActor {
|
|
|
|
public:
|
2024-12-08 13:39:03 -05:00
|
|
|
enum {
|
2024-12-10 16:35:59 -05:00
|
|
|
c_pizza = 0x01,
|
|
|
|
c_donut = 0x02,
|
|
|
|
c_valid = 0x04,
|
2024-12-11 15:13:34 -05:00
|
|
|
c_bit4 = 0x08,
|
|
|
|
c_bit5 = 0x10
|
2024-12-08 13:39:03 -05:00
|
|
|
};
|
|
|
|
|
2024-12-07 13:57:59 -05:00
|
|
|
Act3Ammo();
|
|
|
|
~Act3Ammo() override;
|
|
|
|
|
|
|
|
void Destroy(MxBool p_fromDestructor) override; // vtable+0x1c
|
2024-12-13 14:30:50 -05:00
|
|
|
void Animate(float p_time) override; // vtable+0x70
|
2024-12-07 13:57:59 -05:00
|
|
|
|
2024-12-09 17:41:51 -05:00
|
|
|
// FUNCTION: BETA10 0x10017750
|
2024-12-10 16:35:59 -05:00
|
|
|
MxU32 IsValid() { return m_ammoFlag & c_valid; }
|
2024-12-08 13:39:03 -05:00
|
|
|
|
2024-12-09 17:41:51 -05:00
|
|
|
// FUNCTION: BETA10 0x100177b0
|
2024-12-11 14:52:53 -05:00
|
|
|
Mx3DPointFloat* GetUnknown0x160() { return m_eq; }
|
2024-12-09 17:41:51 -05:00
|
|
|
|
|
|
|
// FUNCTION: BETA10 0x100177e0
|
|
|
|
MxFloat* GetUnknown0x19c() { return &m_unk0x19c; }
|
|
|
|
|
2024-12-10 16:35:59 -05:00
|
|
|
// FUNCTION: BETA10 0x1001fbd0
|
|
|
|
void SetValid(MxBool p_valid)
|
|
|
|
{
|
|
|
|
if (p_valid) {
|
|
|
|
m_ammoFlag |= c_valid;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
m_ammoFlag &= ~c_valid;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// FUNCTION: BETA10 0x1001fc80
|
|
|
|
MxU32 IsPizza() { return m_ammoFlag & c_pizza; }
|
|
|
|
|
2024-12-13 16:56:26 -05:00
|
|
|
// FUNCTION: BETA10 0x10021d60
|
|
|
|
MxU32 IsDonut() { return m_ammoFlag & c_donut; }
|
|
|
|
|
2024-12-10 16:35:59 -05:00
|
|
|
// FUNCTION: BETA10 0x1001fcb0
|
|
|
|
void SetBit4(MxBool p_bit4)
|
|
|
|
{
|
|
|
|
if (p_bit4) {
|
|
|
|
m_ammoFlag |= c_bit4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
m_ammoFlag &= ~c_bit4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-12-13 16:56:26 -05:00
|
|
|
// FUNCTION: BETA10 0x10021d90
|
|
|
|
MxU32 IsBit4() { return m_ammoFlag & c_bit4; }
|
|
|
|
|
2024-12-11 15:13:34 -05:00
|
|
|
void SetBit5(MxBool p_bit5)
|
|
|
|
{
|
|
|
|
if (p_bit5) {
|
|
|
|
m_ammoFlag |= c_bit5;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
m_ammoFlag &= ~c_bit5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-12-12 11:10:44 -05:00
|
|
|
MxU32 IsBit5() { return m_ammoFlag & c_bit5; }
|
|
|
|
|
2024-12-10 16:35:59 -05:00
|
|
|
MxFloat GetUnknown0x158() { return m_unk0x158; }
|
|
|
|
|
2024-12-08 13:39:03 -05:00
|
|
|
void SetUnknown0x158(MxFloat p_unk0x158) { m_unk0x158 = p_unk0x158; }
|
|
|
|
|
2024-12-11 14:52:53 -05:00
|
|
|
MxResult Remove();
|
2024-12-13 16:56:26 -05:00
|
|
|
MxResult Create(Act3* p_world, MxU32 p_isPizza, MxS32 p_index);
|
2024-12-09 17:41:51 -05:00
|
|
|
MxResult FUN_10053b40(Vector3& p_srcLoc, Vector3& p_srcDir, Vector3& p_srcUp);
|
2024-12-10 16:35:59 -05:00
|
|
|
MxResult FUN_10053cb0(LegoPathController* p_p, LegoPathBoundary* p_boundary, MxFloat p_unk0x19c);
|
|
|
|
MxResult FUN_10053d30(LegoPathController* p_p, MxFloat p_unk0x19c);
|
2024-12-09 17:41:51 -05:00
|
|
|
|
2024-12-07 13:57:59 -05:00
|
|
|
// SYNTHETIC: LEGO1 0x10053880
|
|
|
|
// Act3Ammo::`scalar deleting destructor'
|
|
|
|
|
|
|
|
private:
|
2024-12-13 16:56:26 -05:00
|
|
|
MxResult FUN_10053db0(float p_param1, const Matrix4& p_param2);
|
|
|
|
|
|
|
|
static Mx3DPointFloat g_unk0x10104f08;
|
|
|
|
|
2024-12-11 14:52:53 -05:00
|
|
|
MxU16 m_ammoFlag; // 0x154
|
|
|
|
MxFloat m_unk0x158; // 0x158
|
2024-12-13 16:56:26 -05:00
|
|
|
Act3* m_world; // 0x15c
|
2024-12-11 14:52:53 -05:00
|
|
|
Mx3DPointFloat m_eq[3]; // 0x160
|
|
|
|
MxFloat m_unk0x19c; // 0x19c
|
2024-12-07 13:57:59 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // ACT3AMMO_H
|