mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-16 00:57:02 +00:00
More CPuddleSpore implementations
This commit is contained in:
@@ -24,10 +24,14 @@ class CPuddleSpore : public CPatterned {
|
||||
u32 x5c8_ = 0;
|
||||
u32 x5cc_ = 0;
|
||||
TToken<CGenDescription> x5d0_;
|
||||
std::vector<std::unique_ptr<CElementGen>> x5dc_; // originally a vector of CElementGen
|
||||
std::vector<std::unique_ptr<CElementGen>> x5dc_elemGens; // originally a vector of CElementGen
|
||||
CProjectileInfo x5ec_projectileInfo;
|
||||
bool x614_24 : 1;
|
||||
bool x614_25 : 1;
|
||||
|
||||
bool HitShell(const zeus::CVector3f& ) const;
|
||||
void KnockPlayer(CStateManager&, float);
|
||||
void UpdateBoundingState(const zeus::CAABox&, CStateManager&, float);
|
||||
public:
|
||||
DEFINE_PATTERNED(PuddleSpore)
|
||||
|
||||
@@ -36,7 +40,44 @@ public:
|
||||
const CActorParameters&, CAssetId, const CDamageInfo&);
|
||||
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr);
|
||||
void PreThink(float, CStateManager&);
|
||||
void Think(float, CStateManager&);
|
||||
void Render(const CStateManager&) const;
|
||||
void Touch(CActor&, CStateManager&);
|
||||
void FluidFXThink(EFluidState, CScriptWater&, CStateManager&);
|
||||
void KnockBack(const zeus::CVector3f& dir, CStateManager& mgr, const CDamageInfo& dInfo, EKnockBackType type,
|
||||
bool inDeferred, float dt)
|
||||
{
|
||||
if (x5c8_ == 1)
|
||||
return;
|
||||
CPatterned::KnockBack(dir, mgr, dInfo, type, inDeferred, dt);
|
||||
}
|
||||
EWeaponCollisionResponseTypes GetCollisionResponseType(const zeus::CVector3f& point, const zeus::CVector3f&,
|
||||
const CWeaponMode&, EProjectileAttrib) const
|
||||
{
|
||||
return HitShell(point) ? EWeaponCollisionResponseTypes::Unknown84 : EWeaponCollisionResponseTypes::Unknown34;
|
||||
}
|
||||
void DoUserAnimEvent(CStateManager&, const CInt32POINode&, EUserEventType, float);
|
||||
void CollidedWith(TUniqueId uid, const CCollisionInfoList& colList, CStateManager& mgr)
|
||||
{
|
||||
if (x5c8_ == 2)
|
||||
return;
|
||||
CPatterned::CollidedWith(uid, colList, mgr);
|
||||
}
|
||||
const CCollisionPrimitive* GetCollisionPrimitive() const { return &x5a0_; }
|
||||
zeus::CAABox CalculateBoundingBox() const;
|
||||
CProjectileInfo* GetProjectileInfo() { return &x5ec_projectileInfo; }
|
||||
|
||||
bool InAttackPosition(CStateManager&, float) { return x568_ >= x570_; }
|
||||
bool ShouldAttack(CStateManager&, float) { return x568_ >= x574_; }
|
||||
bool ShouldTurn(CStateManager&, float);
|
||||
bool AnimOver(CStateManager&, float) { return x5cc_ == 2; }
|
||||
|
||||
void InActive(CStateManager&, EStateMsg, float);
|
||||
void Active(CStateManager&, EStateMsg, float);
|
||||
void Run(CStateManager&, EStateMsg, float);
|
||||
void TurnAround(CStateManager&, EStateMsg, float);
|
||||
void GetUp(CStateManager&, EStateMsg, float);
|
||||
void Attack(CStateManager&, EStateMsg, float);
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user