Files

59 lines
1.5 KiB
C++
Raw Permalink Normal View History

#ifndef _CGUNCONTROLLER
#define _CGUNCONTROLLER
2022-10-06 23:55:58 +03:00
#include "types.h"
2022-11-25 14:41:28 +02:00
#include "MetroidPrime/Weapons/GunController/CGSComboFire.hpp"
#include "MetroidPrime/Weapons/GunController/CGSFidget.hpp"
2026-02-04 15:15:59 -08:00
#include "MetroidPrime/Weapons/GunController/CGSFreeLook.hpp"
2022-10-07 02:28:42 +03:00
2022-10-06 23:55:58 +03:00
class CModelData;
enum EGunState {
kGS_Inactive,
kGS_Default,
kGS_FreeLook,
kGS_ComboFire,
kGS_Idle,
kGS_Fidget,
kGS_Strike,
kGS_BigStrike
};
class CStateManager;
class CGunController {
CModelData& x0_modelData;
2022-10-07 02:28:42 +03:00
CGSFreeLook x4_freeLook;
2022-11-25 14:41:28 +02:00
CGSComboFire x1c_comboFire;
CGSFidget x30_fidget;
2026-02-04 15:15:59 -08:00
char x4c_pad[0x4];
2022-10-06 23:55:58 +03:00
EGunState x50_gunState;
int x54_curAnimId;
bool x58_24_animDone : 1;
bool x58_25_enteredComboFire : 1;
public:
explicit CGunController(CModelData& modelData);
2026-02-04 15:15:59 -08:00
~CGunController();
2022-10-06 23:55:58 +03:00
void EnterFreeLook(CStateManager&, int, int);
void EnterComboFire(CStateManager&, int);
void EnterFidget(CStateManager&, int, int, int);
2022-10-10 22:15:26 +03:00
void EnterStruck(CStateManager&, float, bool, bool);
2022-10-06 23:55:58 +03:00
void LoadFidgetAnimAsync(CStateManager&, int, int, int);
2022-10-07 02:12:59 +03:00
int Update(float, CStateManager&);
2022-10-06 23:55:58 +03:00
void EnterIdle(CStateManager&);
2022-11-25 14:41:28 +02:00
void ReturnToDefault(CStateManager&, float, bool);
2022-10-06 23:55:58 +03:00
void Reset();
void ReturnToBasePosition(CStateManager&);
2022-11-25 14:41:28 +02:00
bool IsComboOver() const { return x1c_comboFire.IsComboOver(); }
void UnLoadFidget() { x30_fidget.UnLoadAnim(); }
bool IsFidgetLoaded() const { return x30_fidget.IsAnimLoaded(); }
2022-10-07 02:28:42 +03:00
int GetFreeLookSetId() const { return x4_freeLook.GetSetId(); }
2022-10-06 23:55:58 +03:00
};
2022-10-07 00:07:41 +03:00
CHECK_SIZEOF(CGunController, 0x5C)
2022-10-06 23:55:58 +03:00
#endif // _CGUNCONTROLLER