2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-15 16:46:10 +00:00

More CFlaahgraImps

This commit is contained in:
2019-06-20 14:22:06 -07:00
parent 6df0fcde50
commit a67ea52617
3 changed files with 217 additions and 27 deletions

View File

@@ -98,7 +98,7 @@ class CFlaahgra : public CPatterned {
std::unique_ptr<CCollisionActorManager> x7a0_rightArmCollision;
std::unique_ptr<CCollisionActorManager> x7a4_sphereCollision;
s32 x7a8_ = -1;
u32 x7ac_ = 1;
bool x7ac_ = true;
u32 x7b0_ = 1;
s32 x7b4_ = -1;
float x7b8_ = 0.f;
@@ -116,7 +116,7 @@ class CFlaahgra : public CPatterned {
TUniqueId x80c_headActor = kInvalidUniqueId;
float x810_ = 0.f;
float x814_ = 0.f;
float x818_ = 0.f;
float x818_curHp = 0.f;
float x81c_ = 0.f;
zeus::CVector3f x820_;
u32 x82c_ = 0;
@@ -164,7 +164,7 @@ class CFlaahgra : public CPatterned {
void UpdateAimPosition(CStateManager&, float);
void SetMaterialProperties(const std::unique_ptr<CCollisionActorManager>&, CStateManager&);
bool sub801ae670();
bool sub801aebb8(TUniqueId);
bool IsSphereCollider(TUniqueId);
void SetCollisionActorBounds(CStateManager& mgr, const std::unique_ptr<CCollisionActorManager>& colMgr,
const zeus::CVector3f& extendedBounds);
@@ -172,8 +172,12 @@ class CFlaahgra : public CPatterned {
float GetEndActionTime();
void SetupHealthInfo(CStateManager&);
zeus::CVector3f GetAttacktargetPos(CStateManager&) const;
void RattlePlayer(CStateManager& mgr, const zeus::CVector3f& vec);
bool sub801e4f8() { return x7a8_ == 0 || x7a8_ == 1; }
void sub801ade80() {}
void UpdateHeadDamageVulnerability(CStateManager&, bool);
u32 sub801ae828(CStateManager&);
public:
DEFINE_PATTERNED(Flaahgra);
CFlaahgra(TUniqueId, std::string_view, const CEntityInfo&, const zeus::CTransform&, const CAnimRes&,
@@ -182,6 +186,7 @@ public:
void Think(float, CStateManager&);
void PreThink(float, CStateManager&);
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&);
void AddToRenderer(const zeus::CFrustum&, const CStateManager&) const;
bool CanRenderUnsorted(const CStateManager&) const { return true; }
zeus::CVector3f GetAimPosition(const CStateManager&, float) const { return x820_; }
void Death(CStateManager&, const zeus::CVector3f&, EScriptObjectState);
@@ -196,6 +201,9 @@ public:
bool ShouldTurn(CStateManager&, float);
bool ShouldAttack(CStateManager&, float) { return true; }
bool BreakAttack(CStateManager&, float) { return x7d4_ >= x56c_.xc_ && !x8e4_29_getup; }
bool IsDizzy(CStateManager&, float) {
return x450_bodyController->GetBodyStateInfo().GetCurrentStateId() == pas::EAnimationState::LoopReaction;
}
void FadeIn(CStateManager&, EStateMsg, float);
void FadeOut(CStateManager&, EStateMsg, float);
@@ -203,5 +211,8 @@ public:
void GetUp(CStateManager&, EStateMsg, float);
void Growth(CStateManager&, EStateMsg, float);
void Generate(CStateManager&, EStateMsg, float);
void Faint(CStateManager&, EStateMsg, float);
void Dead(CStateManager&, EStateMsg, float);
void Attack(CStateManager&, EStateMsg, float);
};
}