2020-04-03 00:13:32 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "Runtime/World/CPatterned.hpp"
|
|
|
|
#include "Runtime/Particle/CParticleElectric.hpp"
|
|
|
|
|
2021-04-10 08:42:06 +00:00
|
|
|
namespace metaforce::MP1 {
|
2020-04-03 00:13:32 +00:00
|
|
|
class CPhazonHealingNodule : public CPatterned {
|
|
|
|
private:
|
2020-04-03 07:44:42 +00:00
|
|
|
int x568_active = 0;
|
|
|
|
bool x56c_emitting = false;
|
|
|
|
TUniqueId x56e_connId = kInvalidUniqueId;
|
|
|
|
TCachedToken<CElectricDescription> x570_electricDesc;
|
|
|
|
std::unique_ptr<CParticleElectric> x57c_particleElectric; // was rstl::rc_ptr
|
|
|
|
CHealthInfo x580_initialHealthInfo;
|
|
|
|
int x588_state = 0; // not init in ctr; same as CElitePirate::EState?
|
|
|
|
std::string x58c_actorLctr;
|
2020-04-03 00:13:32 +00:00
|
|
|
// u32 x59c_;
|
|
|
|
|
|
|
|
public:
|
2020-04-03 07:46:21 +00:00
|
|
|
DEFINE_PATTERNED(PhazonHealingNodule);
|
|
|
|
|
2020-04-03 00:13:32 +00:00
|
|
|
CPhazonHealingNodule(TUniqueId uid, std::string_view name, const CEntityInfo& info, const zeus::CTransform& xf,
|
|
|
|
CModelData&& mData, const CActorParameters& actParams, const CPatternedInfo& pInfo,
|
2020-04-03 07:44:42 +00:00
|
|
|
CAssetId particleDescId, std::string actorLctr);
|
|
|
|
|
|
|
|
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
|
|
|
|
void DoUserAnimEvent(CStateManager& mgr, const CInt32POINode& node, EUserEventType type, float dt) override;
|
2020-04-10 00:15:25 +00:00
|
|
|
void Render(CStateManager& mgr) override;
|
2020-04-03 07:44:42 +00:00
|
|
|
void Think(float dt, CStateManager& mgr) override;
|
|
|
|
|
|
|
|
void Death(CStateManager& mgr, const zeus::CVector3f& direction, EScriptObjectState state) override;
|
|
|
|
void Faint(CStateManager& mgr, EStateMsg msg, float dt) override;
|
|
|
|
void Growth(CStateManager& mgr, EStateMsg msg, float dt) override;
|
|
|
|
void KnockBack(const zeus::CVector3f& vec, CStateManager& mgr, const CDamageInfo& info, EKnockBackType type,
|
|
|
|
bool inDeferred, float magnitude) override;
|
|
|
|
void Lurk(CStateManager& mgr, EStateMsg msg, float dt) override;
|
|
|
|
void Patrol(CStateManager& mgr, EStateMsg msg, float dt) override;
|
|
|
|
|
2020-04-05 06:26:35 +00:00
|
|
|
bool InRange(CStateManager &, float arg) override;
|
|
|
|
bool InDetectionRange(CStateManager &, float arg) override;
|
|
|
|
bool AnimOver(CStateManager &, float arg) override;
|
|
|
|
|
|
|
|
void MassiveDeath(CStateManager &mgr) override;
|
|
|
|
void MassiveFrozenDeath(CStateManager &mgr) override;
|
|
|
|
void PhazeOut(CStateManager &) override;
|
|
|
|
|
2020-04-03 07:44:42 +00:00
|
|
|
private:
|
|
|
|
void UpdateParticleElectric(CStateManager& mgr);
|
2020-04-03 00:13:32 +00:00
|
|
|
};
|
2021-04-10 08:42:06 +00:00
|
|
|
} // namespace metaforce::MP1
|