#ifndef _CBSLOOPATTACK
#define _CBSLOOPATTACK

#include "MetroidPrime/BodyState/CBodyState.hpp"

class CBSLoopAttack : public CBodyState {
public:
  CBSLoopAttack();

  bool CanShoot() const override { return true; }
  void Start(CBodyController& bc, CStateManager& mgr) override;
  pas::EAnimationState UpdateBody(float dt, CBodyController& bc, CStateManager& mgr) override;
  void Shutdown(CBodyController&) override;

  pas::ELoopState GetState() const { return x4_state; }
  pas::ELoopAttackType GetAttackType() const { return x8_loopAttackType; }
  bool GetAdvance() const { return xc_25_advance; }

private:
  pas::ELoopState x4_state;
  pas::ELoopAttackType x8_loopAttackType;
  bool xc_24_waitForAnimOver : 1;
  bool xc_25_advance : 1;

  pas::EAnimationState GetBodyStateTransition(float dt, CBodyController& bc);
};

#endif // _CBSLOOPATTACK
