Phillip Stephens 2644cb1ea4
Ripper (#21)
* Match and link CRipper

* Apply symbols
2025-05-08 12:46:53 -07:00

39 lines
1.6 KiB
C++

#ifndef _CRIPPER
#define _CRIPPER
#include "MetroidPrime/CGrappleParameters.hpp"
#include "MetroidPrime/Enemies/CPatterned.hpp"
#include "MetroidPrime/TCastTo.hpp"
class CRipper : public CPatterned {
static const uint skNumProperties;
public:
static uint GetNumProperties() { return skNumProperties; }
CRipper(TUniqueId uid, const rstl::string& name, EFlavorType type, const CEntityInfo& info,
const CTransform4f& transform, const CModelData& modelData,
const CPatternedInfo& patternedInfo, const CActorParameters& actorParams,
const CGrappleParameters& grappleParams);
~CRipper();
void Accept(IVisitor& visitor) override;
void Think(float dt, CStateManager& mgr) override;
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CStateManager& mgr) override;
EWeaponCollisionResponseTypes GetCollisionResponseType(const CVector3f& position, const CVector3f& direction, const CWeaponMode& mode, int projectileAtrib) const override;
void KnockBack(const CVector3f& direction, CStateManager& mgr, const CDamageInfo& damage, EKnockBackType knockBack, bool inDeferred, float mag) override;
bool PathOver(CStateManager& mgr, float arg) override;
void Patrol(CStateManager& mgr, EStateMsg msg, float arg) override;
private:
void ProcessGrapplePoint(CStateManager& mgr);
void AddGrapplePoint(CStateManager& mgr);
void RemoveGrapplePoint(CStateManager& mgr);
void AddPlatform(CStateManager& mgr);
void RemovePlatform(CStateManager& mgr);
CGrappleParameters mGrappleParams;
TUniqueId mGrapplePoint;
TUniqueId mPlatform;
bool mMuted : 1;
};
#endif // _CRIPPER