#ifndef _CMETAREE #define _CMETAREE #include "types.h" #include "MetroidPrime/CDamageInfo.hpp" #include "MetroidPrime/Enemies/CPatterned.hpp" class CPatternedInfo; class CGenDescription; class CMetaree : public CPatterned { public: CMetaree(TUniqueId uid, const rstl::string& name, EFlavorType flavor, const CEntityInfo& info, const CTransform4f& xf, const CModelData& mData, const CPatternedInfo& pInfo, const CDamageInfo& dInfo, float f1, const CVector3f& v1, float f2, EBodyType bodyType, float f3, float f4, const CActorParameters& aParms); // CEntity void Accept(IVisitor& visitor) override; void Think(float dt, CStateManager& mgr) override; void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override; // CActor void Touch(CActor&, CStateManager&) override; // CPhysicsActor void CollidedWith(const TUniqueId& id, const CCollisionInfoList& list, CStateManager& mgr) override; // CAi void Dead(CStateManager&, EStateMsg, float) override; void Halt(CStateManager&, EStateMsg, float) override; void Attack(CStateManager&, EStateMsg, float) override; void Active(CStateManager&, EStateMsg, float) override; void InActive(CStateManager&, EStateMsg, float) override; void Flee(CStateManager&, EStateMsg, float) override; void Explode(CStateManager&, EStateMsg, float) override; bool InRange(CStateManager&, float) override; bool Delay(CStateManager&, float) override; bool ShouldAttack(CStateManager&, float) override; // CPatterned void ThinkAboutMove(float) override; private: float x568_delay; float x56c_haltDelay; float x570_dropHeight; CVector3f x574_offset; float x580_attackSpeed; CVector3f x584_lookPos; CVector3f x590_projectileDelta; CVector3f x59c_velocity; int x5a8_; CDamageInfo x5ac_damageInfo; ushort x5c8_attackSfx; bool x5ca_24_ : 1; bool x5ca_25_started : 1; bool x5ca_26_deactivated : 1; uint x5cc_; }; #endif // _CMETAREE