2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 09:47:43 +00:00

Initial CBodyState stubs

This commit is contained in:
2016-04-07 00:10:08 -07:00
parent 8f4cc0876e
commit b3687e46cc
6 changed files with 199 additions and 7 deletions

View File

@@ -0,0 +1,138 @@
#ifndef CBODYSTATE_HPP
#define CBODYSTATE_HPP
#include "RetroTypes.hpp"
namespace urde
{
namespace pas
{
enum class ELocomotionType
{
};
enum class ELocomotionAnim
{
};
}
class CBodyController;
class CStateManager;
class CBodyState
{
public:
virtual bool IsInAir(const CBodyController&) const { return false; }
virtual bool IsDead() const { return false; }
virtual bool IsMoving() const { return false; }
virtual bool ApplyGravity() const { return true; }
virtual bool ApplyHeadTracking() const { return true; }
virtual bool ApplyAnimationDeltas() const { return true; }
virtual bool CanShoot() const { return false; }
virtual void Start(CBodyController&, CStateManager&) = 0;
virtual void UpdateBody(float, CBodyController&, CStateManager&) = 0;
virtual void Shutdown(CBodyController&)=0;
};
class CBSAttack : public CBodyState
{
public:
virtual bool CanShoot() const { return false; }
virtual void Start(CBodyController &, CStateManager &) {}
virtual void UpdateBody(float, CBodyController &, CStateManager&);
virtual void Shutdown(CBodyController&) {}
};
class CBSDie : public CBodyState
{
bool x8_isDead = false;
public:
bool IsDead() const { return x8_isDead; }
void Start(CBodyController &, CStateManager &) {}
void UpdateBody(float, CBodyController &, CStateManager&) {}
void Shutdown(CBodyController &) {}
};
class CBSFall : public CBodyState
{
public:
void Start(CBodyController &, CStateManager &) {}
void UpdateBody(float, CBodyController &, CStateManager&) {}
void Shutdown(CBodyController &) {}
};
class CBSGetup : public CBodyState
{
public:
void Start(CBodyController &, CStateManager &) {}
void UpdateBody(float, CBodyController &, CStateManager&) {}
void Shutdown(CBodyController &) {}
};
class CBSKnockBack : public CBodyState
{
public:
bool IsMoving() const { return true; }
void Start(CBodyController &, CStateManager &) {}
void UpdateBody(float, CBodyController &, CStateManager&) {}
void Shutdown(CBodyController &) {}
};
class CBSLieOnGround : public CBodyState
{
public:
void Start(CBodyController &, CStateManager &) {}
void UpdateBody(float, CBodyController &, CStateManager&) {}
void Shutdown(CBodyController &) {}
};
class CBSStep : public CBodyState
{
public:
bool IsMoving() const { return true; }
bool CanShoot() const { return true; }
void Start(CBodyController &, CStateManager &) {}
void UpdateBody(float, CBodyController &, CStateManager&) {}
void Shutdown(CBodyController &) {}
};
class CBSTurn : public CBodyState
{
public:
virtual bool CanShoot() const { return true; }
virtual void Start(CBodyController &, CStateManager &) {}
virtual void UpdateBody(float, CBodyController &, CStateManager&) {}
virtual void Shutdown(CBodyController &) {}
virtual void GetBodyStateTransition(float, CBodyController&);
};
class CBSFlyerTurn : public CBSTurn
{
public:
virtual void Start(CBodyController &, CStateManager &) {}
virtual void UpdateBody(float, CBodyController &, CStateManager&) {}
};
class CBSLoopAttack : public CBodyState
{
public:
virtual bool CanShoot() const { return true; }
virtual void Start(CBodyController &, CStateManager &) {}
virtual void UpdateBody(float, CBodyController &, CStateManager&);
virtual void Shutdown(CBodyController&) {}
};
class CBSLocomotion : public CBodyState
{
public:
virtual bool IsMoving() const = 0;
virtual bool CanShoot() const { return true; }
virtual void Start(CBodyController &, CStateManager &) {}
virtual void UpdateBody(float, CBodyController &, CStateManager&) {}
virtual void Shutdown() const {}
virtual bool IsPitchable() const { return true; }
virtual float GetLocomotionSpeed(pas::ELocomotionType, pas::ELocomotionAnim) = 0;
virtual void ApplyLocomotionPysics(float, CBodyController&) {}
virtual void UpdateLocomotionAnimation(float, const CBodyController& )=0;
virtual void GetBodyStateTransition(float, CBodyState&) {}
};
}
#endif // CBODYSTATE_HPP