#ifndef _CPUFFER #define _CPUFFER #include "types.h" #include "MetroidPrime/CDamageInfo.hpp" #include "MetroidPrime/Enemies/CPatterned.hpp" class CPatternedInfo; class CGenDescription; class CPuffer : public CPatterned { public: CPuffer(TUniqueId uid, const rstl::string& name, const CEntityInfo& info, const CTransform4f& xf, const CModelData& modelData, const CActorParameters& actorParameters, const CPatternedInfo& patternedInfo, float hoverSpeed, CAssetId cloudEffect, const CDamageInfo& cloudDamage, CAssetId cloudSteam, float f2, bool b1, bool b2, bool b3, const CDamageInfo& explosionDamage, ushort sfxId); ~CPuffer() override; void Accept(IVisitor&) override; void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) override; void Think(float, CStateManager&) override; rstl::optional_object< CAABox > GetTouchBounds() const override; void Touch(CActor&, CStateManager&) override; void Death(CStateManager&, const CVector3f&, EScriptObjectState) override; private: CVector3f x568_face; TToken< CGenDescription > x574_cloudEffect; CDamageInfo x57c_cloudDamage; bool x598_24_ : 1; bool x598_25_ : 1; bool x598_26_ : 1; ushort x59a_; CDamageInfo x59c_explosionDamage; float x5b8_; CAssetId x5bc_cloudSteam; CVector3f x5c0_move; TUniqueId x5cc_; int x5d0_enabledParticles; rstl::reserved_vector< CVector3f, 14 > x5d4_gasLocators; void UpdateJets(CStateManager&); }; #endif // _CPUFFER