metaforce/Runtime/Weapon/CGunController.hpp

66 lines
1.4 KiB
C++

#ifndef __URDE_CGUNCONTROLLER_HPP__
#define __URDE_CGUNCONTROLLER_HPP__
#include "Character/CModelData.hpp"
#include "CGSFreeLook.hpp"
#include "CGSComboFire.hpp"
#include "CGSFidget.hpp"
namespace urde
{
enum class EGunState
{
Zero,
One,
FreeLook,
ComboFire,
Four,
Fidget,
Six,
Seven
};
class CGunController
{
CModelData& x0_modelData;
CGSFreeLook x4_freeLook;
CGSComboFire x1c_comboFire;
CGSFidget x30_fidget;
EGunState x50_gunState = EGunState::Zero;
u32 x54_ = -1;
union {
struct
{
bool x58_24_ : 1;
bool x58_25_ : 1;
};
u8 _dummy = 0;
};
public:
CGunController(CModelData& modelData)
: x0_modelData(modelData)
{
x58_24_ = true;
}
void UnLoadFidget();
void LoadFidgetAnimAsync(CStateManager&, s32, s32, s32);
void GetFreeLookSetId() const;
bool IsFidgetLoaded() const;
bool IsComboOver() const;
void EnterFreeLook(CStateManager&, s32, s32);
void EnterComboFire(CStateManager&, s32);
void EnterFidget(CStateManager&, s32, s32, s32);
void EnterStruck(CStateManager&, float);
void EnterIdle(CStateManager&);
bool Update(float, CStateManager&);
void ReturnToDefault(CStateManager&, float);
void ReturnToBasePosition(CStateManager&, float);
void Reset();
};
}
#endif // __URDE_CGUNCONTROLLER_HPP__