Add CPlayerGun::Charging

This commit is contained in:
Henrique Gemignani Passos Lima
2026-07-04 14:21:14 +03:00
parent 67858cc318
commit d921d18c2d
7 changed files with 110 additions and 14 deletions
+7 -5
View File
@@ -169,9 +169,9 @@ private:
int x3d8_unk; // 0x3d8
TUniqueId m_orbitNextTargetId; // 0x3dc
float x3e0_unk; // 0x3e0
rstl::vector< TUniqueId > m_nearbyOrbitObjects; // 0x3e4
rstl::vector< TUniqueId > m_onScreenOrbitObjects; // 0x468
rstl::vector< TUniqueId > m_offScreenOrbitObjects; // 0x4ec
rstl::reserved_vector< TUniqueId, 64 > m_nearbyOrbitObjects; // 0x3e4
rstl::reserved_vector< TUniqueId, 64 > m_onScreenOrbitObjects; // 0x468
rstl::reserved_vector< TUniqueId, 64 > m_offScreenOrbitObjects; // 0x4ec
bool m_orbitLockEstablished; // 0x570
float m_orbitPreventionTimer; // 0x574
bool m_sidewaysDashing; // 0x578
@@ -233,11 +233,11 @@ private:
short xeca_unk; // 0xeca
CColor xecc_unk; // 0xecc
int xed0_unk; // 0xed0
UnkStructA* xed4_unk; // 0xed4
UnkStructA* xed4_unk; // 0xed4
void* xed8_unk; // 0xed8
UnkStructB xedc_unk; // 0xedc
int xf6c_unk; // 0xf6c
UnkStructC* xf70_unk; // 0xf70
UnkStructC* xf70_unk; // 0xf70
TReservedAverage< float, 20 > m_moveSpeedAvg; // 0xf74
float m_moveSpeed; // 0xfc8
float m_flatMoveSpeed; // 0xfcc
@@ -249,7 +249,9 @@ private:
char m_pad_5[0x18]; // 0x12fc
CPlayerState* m_playerState; // 0x1314
CCameraManager* m_cameraManager; // 0x1318
char m_pad_6[0x1A8]; // 0x1320
};
CHECK_SIZEOF(CPlayer, 0x14c8)
// size: 0x14c8
#endif // _CPLAYER
+42 -1
View File
@@ -3,13 +3,54 @@
#include "MetroidPrime//TGameTypes.hpp"
class CStateManager;
class CPlayer;
enum EChargeState {
kCS_Normal,
kCS_Charged,
};
class CPlayerGun {
public:
enum EChargePhase {
kCP_NotCharging,
kCP_Phase_1,
kCP_Phase_2,
kCP_Phase_3,
kCP_AnimAndSfx,
kCP_Phase_5,
};
CPlayerGun(TUniqueId, int);
~CPlayerGun();
CPlayer* GetPlayer(CStateManager& mgr) const;
void PlayAnim(CStateManager&, int animType, int loop);
bool IsOutOfAmmoToShoot(CStateManager&) const;
void ResetCharge(CStateManager&, bool);
void StopChargeSound(CStateManager&, bool);
void EnableChargeFx(CStateManager&, bool);
void Charging(CStateManager&, int);
private:
char m_pad[0x814];
char m_pad0[0x3a4]; // 0x000
EChargeState m_chargeState; // 0x3a4
char m_pad1[0x2EC]; // 0x3a8
EChargePhase m_chargePhase; // 0x694
char m_pad2[0xD8]; // 0x698
int m_0x770;
char m_pad3[0x9C]; // 0x774
uint m_0x810_b0 : 1;
uint m_0x810_b1 : 1;
uint m_0x810_b2 : 1;
uint m_0x810_b3 : 1;
uint m_0x810_b4 : 1;
uint m_0x810_b5 : 1;
};
CHECK_SIZEOF(CPlayerGun, 0x814)
@@ -296,6 +296,7 @@ public:
void fn_80084B6C();
void fn_80084928(const UnknownPlayerStateStruct&);
float GetChargeBeamFactor() const { return chargeBeamFactor; }
void IncrementChargeBeamFactor(float);
void DecrementAmmoAndDisplayAlertIfOut(const CStateManager&, EItemType, int quantity);