2022-10-28 21:42:35 +00:00
|
|
|
#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);
|
|
|
|
|
2023-02-06 17:01:01 +00:00
|
|
|
~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;
|
2022-10-28 21:42:35 +00:00
|
|
|
|
|
|
|
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;
|
|
|
|
|
2023-10-19 17:07:37 +00:00
|
|
|
void UpdateJets(CStateManager&);
|
2022-10-28 21:42:35 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // _CPUFFER
|