mirror of https://github.com/AxioDL/metaforce.git
Fix Flaahgra's attack by using the correct variable in CBodyController
This commit is contained in:
parent
e579d9454f
commit
6718f697dd
|
@ -798,13 +798,13 @@ void CFlaahgra::SetMaterialProperties(const std::unique_ptr<CCollisionActorManag
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CFlaahgra::ShouldTurn(CStateManager& mgr, float /*unused*/) {
|
bool CFlaahgra::ShouldTurn(CStateManager& mgr, float /*arg*/) {
|
||||||
zeus::CVector2f posDiff = mgr.GetPlayer().GetTranslation().toVec2f() - GetTranslation().toVec2f();
|
zeus::CVector2f posDiff = mgr.GetPlayer().GetTranslation().toVec2f() - GetTranslation().toVec2f();
|
||||||
zeus::CVector2f frontVec = x34_transform.frontVector().toVec2f();
|
zeus::CVector2f frontVec = x34_transform.frontVector().toVec2f();
|
||||||
return zeus::CVector2f::getAngleDiff(frontVec, posDiff) > zeus::degToRad(15.f);
|
return zeus::CVector2f::getAngleDiff(frontVec, posDiff) > zeus::degToRad(15.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlaahgra::TurnAround(CStateManager& mgr, EStateMsg msg, float /*unused*/) {
|
void CFlaahgra::TurnAround(CStateManager& mgr, EStateMsg msg, float /*arg*/) {
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x6cc_boneTracking->SetTarget(mgr.GetPlayer().GetUniqueId());
|
x6cc_boneTracking->SetTarget(mgr.GetPlayer().GetUniqueId());
|
||||||
x6cc_boneTracking->SetActive(true);
|
x6cc_boneTracking->SetActive(true);
|
||||||
|
@ -833,7 +833,7 @@ bool CFlaahgra::IsSphereCollider(TUniqueId uid) const {
|
||||||
return it != x7fc_sphereColliders.end();
|
return it != x7fc_sphereColliders.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlaahgra::GetUp(CStateManager& mgr, EStateMsg msg, float /*unused*/) {
|
void CFlaahgra::GetUp(CStateManager& mgr, EStateMsg msg, float /*arg*/) {
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x568_state = EState::Zero;
|
x568_state = EState::Zero;
|
||||||
x784_ = x780_;
|
x784_ = x780_;
|
||||||
|
@ -923,7 +923,7 @@ float CFlaahgra::GetEndActionTime() const {
|
||||||
return eventTime.GetSeconds();
|
return eventTime.GetSeconds();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlaahgra::Generate(CStateManager& mgr, EStateMsg msg, float /*unused*/) {
|
void CFlaahgra::Generate(CStateManager& mgr, EStateMsg msg, float /*arg*/) {
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x568_state = EState::Zero;
|
x568_state = EState::Zero;
|
||||||
} else if (msg == EStateMsg::Update) {
|
} else if (msg == EStateMsg::Update) {
|
||||||
|
@ -1015,7 +1015,7 @@ void CFlaahgra::Faint(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlaahgra::Dead(CStateManager& mgr, EStateMsg msg, float /*dt*/) {
|
void CFlaahgra::Dead(CStateManager& mgr, EStateMsg msg, float /*arg*/) {
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x568_state = (x450_bodyController->GetFallState() != pas::EFallState::Zero ||
|
x568_state = (x450_bodyController->GetFallState() != pas::EFallState::Zero ||
|
||||||
x450_bodyController->GetBodyStateInfo().GetCurrentStateId() == pas::EAnimationState::Fall)
|
x450_bodyController->GetBodyStateInfo().GetCurrentStateId() == pas::EAnimationState::Fall)
|
||||||
|
@ -1054,6 +1054,9 @@ void CFlaahgra::Dead(CStateManager& mgr, EStateMsg msg, float /*dt*/) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlaahgra::Attack(CStateManager& mgr, EStateMsg msg, float arg) {
|
void CFlaahgra::Attack(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||||
|
fmt::print(FMT_STRING("CFlaahgra::Attack {}\n"), (msg == EStateMsg::Activate ? "Activate"
|
||||||
|
: msg == EStateMsg::Update ? "Update"
|
||||||
|
: "Deactivate"));
|
||||||
static constexpr std::array kStates1{
|
static constexpr std::array kStates1{
|
||||||
-1, -1, -1, 2, -1,
|
-1, -1, -1, 2, -1,
|
||||||
};
|
};
|
||||||
|
@ -1076,24 +1079,22 @@ void CFlaahgra::Attack(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
x78c_ = sub801ae754(mgr);
|
x78c_ = sub801ae754(mgr);
|
||||||
x798_meleeInitialAnimState = x450_bodyController->GetBodyStateInfo().GetCurrentStateId();
|
x798_meleeInitialAnimState = x450_bodyController->GetCurrentAnimId();
|
||||||
} else {
|
} else {
|
||||||
x450_bodyController->GetCommandMgr().DeliverCmd(CBCMeleeAttackCmd(kSeverity[x7a8_]));
|
x450_bodyController->GetCommandMgr().DeliverCmd(CBCMeleeAttackCmd(kSeverity[x7a8_]));
|
||||||
}
|
}
|
||||||
} else if (x568_state == EState::One) {
|
} else if (x568_state == EState::One) {
|
||||||
if (x450_bodyController->GetBodyStateInfo().GetCurrentStateId() != pas::EAnimationState::MeleeAttack) {
|
if (x450_bodyController->GetBodyStateInfo().GetCurrentStateId() == pas::EAnimationState::MeleeAttack) {
|
||||||
x568_state = EState::Four;
|
if (x798_meleeInitialAnimState == x450_bodyController->GetCurrentAnimId()) {
|
||||||
} else {
|
|
||||||
if (x798_meleeInitialAnimState != x450_bodyController->GetBodyStateInfo().GetCurrentStateId()) {
|
|
||||||
x568_state = EState::Two;
|
|
||||||
} else {
|
|
||||||
x450_bodyController->GetCommandMgr().DeliverTargetVector(x78c_);
|
x450_bodyController->GetCommandMgr().DeliverTargetVector(x78c_);
|
||||||
if (!ShouldAttack(mgr, 0.f)) {
|
if (ShouldAttack(mgr, 0.f)) {
|
||||||
return;
|
x450_bodyController->GetCommandMgr().DeliverCmd(CBCMeleeAttackCmd(kSeverity[kStates1[x7a8_]]));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
x450_bodyController->GetCommandMgr().DeliverCmd(CBCMeleeAttackCmd(kSeverity[kStates1[x7a8_]]));
|
x568_state = EState::Two;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
x568_state = EState::Four;
|
||||||
}
|
}
|
||||||
} else if (x568_state == EState::Two) {
|
} else if (x568_state == EState::Two) {
|
||||||
if (x450_bodyController->GetBodyStateInfo().GetCurrentStateId() != pas::EAnimationState::MeleeAttack) {
|
if (x450_bodyController->GetBodyStateInfo().GetCurrentStateId() != pas::EAnimationState::MeleeAttack) {
|
||||||
|
@ -1120,10 +1121,9 @@ void CFlaahgra::Attack(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||||
|
|
||||||
u32 CFlaahgra::sub801ae828(const CStateManager& mgr) const {
|
u32 CFlaahgra::sub801ae828(const CStateManager& mgr) const {
|
||||||
const CPlayer& player = mgr.GetPlayer();
|
const CPlayer& player = mgr.GetPlayer();
|
||||||
if (player.GetMorphballTransitionState() != CPlayer::EPlayerMorphBallState::Morphed) {
|
if (player.GetMorphballTransitionState() != CPlayer::EPlayerMorphBallState::Morphed &&
|
||||||
if (x7cc_generateEndCooldown > 0.f || player.GetVelocity().magSquared() < 25.f) {
|
(x7cc_generateEndCooldown > 0.f || player.GetVelocity().magSquared() < 25.f)) {
|
||||||
return 3;
|
return 3;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetTransform().basis[0].dot(player.GetVelocity()) > 0.f) {
|
if (GetTransform().basis[0].dot(player.GetVelocity()) > 0.f) {
|
||||||
|
@ -1161,7 +1161,7 @@ void CFlaahgra::Dizzy(CStateManager& /*unused*/, EStateMsg msg, float arg) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlaahgra::Suck(CStateManager& mgr, EStateMsg msg, float /*unused*/) {
|
void CFlaahgra::Suck(CStateManager& mgr, EStateMsg msg, float /*arg*/) {
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x568_state = EState::Zero;
|
x568_state = EState::Zero;
|
||||||
x8e4_26_ = false;
|
x8e4_26_ = false;
|
||||||
|
@ -1190,7 +1190,7 @@ void CFlaahgra::Suck(CStateManager& mgr, EStateMsg msg, float /*unused*/) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlaahgra::ProjectileAttack(CStateManager& mgr, EStateMsg msg, float /*unused*/) {
|
void CFlaahgra::ProjectileAttack(CStateManager& mgr, EStateMsg msg, float /*arg*/) {
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x568_state = EState::Zero;
|
x568_state = EState::Zero;
|
||||||
SendScriptMsgs(EScriptObjectState::Attack, mgr, EScriptObjectMessage::None);
|
SendScriptMsgs(EScriptObjectState::Attack, mgr, EScriptObjectMessage::None);
|
||||||
|
@ -1237,7 +1237,7 @@ void CFlaahgra::ProjectileAttack(CStateManager& mgr, EStateMsg msg, float /*unus
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlaahgra::Cover(CStateManager& mgr, EStateMsg msg, float /*unused*/) {
|
void CFlaahgra::Cover(CStateManager& mgr, EStateMsg msg, float /*arg*/) {
|
||||||
static constexpr std::array severities{pas::ESeverity::Eight, pas::ESeverity::Seven};
|
static constexpr std::array severities{pas::ESeverity::Eight, pas::ESeverity::Seven};
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x77c_targetMirrorWaypointId = GetMirrorNearestPlayer(mgr);
|
x77c_targetMirrorWaypointId = GetMirrorNearestPlayer(mgr);
|
||||||
|
@ -1285,7 +1285,7 @@ void CFlaahgra::Cover(CStateManager& mgr, EStateMsg msg, float /*unused*/) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlaahgra::SpecialAttack(CStateManager& mgr, EStateMsg msg, float /*unused*/) {
|
void CFlaahgra::SpecialAttack(CStateManager& mgr, EStateMsg msg, float /*arg*/) {
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x568_state = EState::Zero;
|
x568_state = EState::Zero;
|
||||||
x8e5_24_ = false;
|
x8e5_24_ = false;
|
||||||
|
@ -1317,7 +1317,7 @@ void CFlaahgra::SpecialAttack(CStateManager& mgr, EStateMsg msg, float /*unused*
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CFlaahgra::CoverCheck(CStateManager& mgr, float /*unused*/) {
|
bool CFlaahgra::CoverCheck(CStateManager& mgr, float /*arg*/) {
|
||||||
if (x7f8_ <= 0 && x7bc_ > 0.f) {
|
if (x7f8_ <= 0 && x7bc_ > 0.f) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1353,7 +1353,7 @@ TUniqueId CFlaahgra::GetMirrorNearestPlayer(const CStateManager& mgr) const {
|
||||||
return nearId;
|
return nearId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFlaahgra::Enraged(CStateManager& /*unused*/, EStateMsg msg, float /*unused*/) {
|
void CFlaahgra::Enraged(CStateManager& /*mgr*/, EStateMsg msg, float /*arg*/) {
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x568_state = EState::Zero;
|
x568_state = EState::Zero;
|
||||||
} else if (msg == EStateMsg::Update) {
|
} else if (msg == EStateMsg::Update) {
|
||||||
|
|
|
@ -5,13 +5,13 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "Runtime/CDependencyGroup.hpp"
|
#include "Runtime/CDependencyGroup.hpp"
|
||||||
#include "Runtime/rstl.hpp"
|
|
||||||
#include "Runtime/Collision/CJointCollisionDescription.hpp"
|
#include "Runtime/Collision/CJointCollisionDescription.hpp"
|
||||||
#include "Runtime/MP1/World/CFlaahgraProjectile.hpp"
|
#include "Runtime/MP1/World/CFlaahgraProjectile.hpp"
|
||||||
#include "Runtime/Weapon/CProjectileInfo.hpp"
|
#include "Runtime/Weapon/CProjectileInfo.hpp"
|
||||||
#include "Runtime/World/CActorParameters.hpp"
|
#include "Runtime/World/CActorParameters.hpp"
|
||||||
#include "Runtime/World/CAnimationParameters.hpp"
|
#include "Runtime/World/CAnimationParameters.hpp"
|
||||||
#include "Runtime/World/CPatterned.hpp"
|
#include "Runtime/World/CPatterned.hpp"
|
||||||
|
#include "Runtime/rstl.hpp"
|
||||||
|
|
||||||
#include <zeus/CAABox.hpp>
|
#include <zeus/CAABox.hpp>
|
||||||
#include <zeus/CColor.hpp>
|
#include <zeus/CColor.hpp>
|
||||||
|
@ -51,7 +51,7 @@ public:
|
||||||
static constexpr u32 GetNumProperties() { return 23; }
|
static constexpr u32 GetNumProperties() { return 23; }
|
||||||
explicit CFlaahgraData(CInputStream&);
|
explicit CFlaahgraData(CInputStream&);
|
||||||
|
|
||||||
const CAnimationParameters& GetAnimationParameters() const { return x14c_animationParameters; }
|
[[nodiscard]] const CAnimationParameters& GetAnimationParameters() const { return x14c_animationParameters; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class CFlaahgraRenderer : public CActor {
|
class CFlaahgraRenderer : public CActor {
|
||||||
|
@ -60,9 +60,9 @@ class CFlaahgraRenderer : public CActor {
|
||||||
public:
|
public:
|
||||||
CFlaahgraRenderer(TUniqueId, TUniqueId, std::string_view, const CEntityInfo&, const zeus::CTransform&);
|
CFlaahgraRenderer(TUniqueId, TUniqueId, std::string_view, const CEntityInfo&, const zeus::CTransform&);
|
||||||
|
|
||||||
void AddToRenderer(const zeus::CFrustum&, CStateManager&) override;
|
void AddToRenderer(const zeus::CFrustum& frustum, CStateManager& mgr) override;
|
||||||
void Accept(IVisitor&) override;
|
void Accept(IVisitor& visitor) override;
|
||||||
std::optional<zeus::CAABox> GetTouchBounds() const override { return {}; }
|
[[nodiscard]] std::optional<zeus::CAABox> GetTouchBounds() const override { return {}; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class CFlaahgraPlants : public CActor {
|
class CFlaahgraPlants : public CActor {
|
||||||
|
@ -78,23 +78,16 @@ public:
|
||||||
CFlaahgraPlants(const TToken<CGenDescription>&, const CActorParameters&, TUniqueId, TAreaId, TUniqueId,
|
CFlaahgraPlants(const TToken<CGenDescription>&, const CActorParameters&, TUniqueId, TAreaId, TUniqueId,
|
||||||
const zeus::CTransform&, const CDamageInfo&, const zeus::CVector3f&);
|
const zeus::CTransform&, const CDamageInfo&, const zeus::CVector3f&);
|
||||||
|
|
||||||
void Accept(IVisitor&) override;
|
void Accept(IVisitor& visitor) override;
|
||||||
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) override;
|
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CStateManager& mgr) override;
|
||||||
void Think(float, CStateManager&) override;
|
void Think(float dt, CStateManager& mgr) override;
|
||||||
void AddToRenderer(const zeus::CFrustum&, CStateManager&) override;
|
void AddToRenderer(const zeus::CFrustum& frustum, CStateManager& mgr) override;
|
||||||
std::optional<zeus::CAABox> GetTouchBounds() const override;
|
[[nodiscard]] std::optional<zeus::CAABox> GetTouchBounds() const override;
|
||||||
void Touch(CActor&, CStateManager&) override;
|
void Touch(CActor& actor, CStateManager& mgr) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CFlaahgra : public CPatterned {
|
class CFlaahgra : public CPatterned {
|
||||||
enum class EState {
|
enum class EState { Invalid = -1, Zero, One, Two, Three, Four } x568_state = EState::Invalid;
|
||||||
Invalid = -1,
|
|
||||||
Zero,
|
|
||||||
One,
|
|
||||||
Two,
|
|
||||||
Three,
|
|
||||||
Four
|
|
||||||
} x568_state = EState::Invalid;
|
|
||||||
CFlaahgraData x56c_data;
|
CFlaahgraData x56c_data;
|
||||||
std::unique_ptr<CBoneTracking> x6cc_boneTracking; // Used to be an rstl::optional_object<CBoneTracking*>
|
std::unique_ptr<CBoneTracking> x6cc_boneTracking; // Used to be an rstl::optional_object<CBoneTracking*>
|
||||||
TUniqueId x6d0_rendererId = kInvalidUniqueId;
|
TUniqueId x6d0_rendererId = kInvalidUniqueId;
|
||||||
|
@ -109,7 +102,7 @@ class CFlaahgra : public CPatterned {
|
||||||
u32 x784_ = 1;
|
u32 x784_ = 1;
|
||||||
u32 x788_stage = 0;
|
u32 x788_stage = 0;
|
||||||
zeus::CVector3f x78c_;
|
zeus::CVector3f x78c_;
|
||||||
pas::EAnimationState x798_meleeInitialAnimState = pas::EAnimationState::Invalid;
|
s32 x798_meleeInitialAnimState = -1;
|
||||||
std::unique_ptr<CCollisionActorManager> x79c_leftArmCollision;
|
std::unique_ptr<CCollisionActorManager> x79c_leftArmCollision;
|
||||||
std::unique_ptr<CCollisionActorManager> x7a0_rightArmCollision;
|
std::unique_ptr<CCollisionActorManager> x7a0_rightArmCollision;
|
||||||
std::unique_ptr<CCollisionActorManager> x7a4_sphereCollision;
|
std::unique_ptr<CCollisionActorManager> x7a4_sphereCollision;
|
||||||
|
@ -173,25 +166,25 @@ class CFlaahgra : public CPatterned {
|
||||||
void UpdateHealthInfo(CStateManager&);
|
void UpdateHealthInfo(CStateManager&);
|
||||||
void UpdateAimPosition(CStateManager&, float);
|
void UpdateAimPosition(CStateManager&, float);
|
||||||
void SetMaterialProperties(const std::unique_ptr<CCollisionActorManager>&, CStateManager&);
|
void SetMaterialProperties(const std::unique_ptr<CCollisionActorManager>&, CStateManager&);
|
||||||
bool sub801ae650() const { return (x7a8_ == 0 || x7a8_ == 1); }
|
[[nodiscard]] bool sub801ae650() const { return x7a8_ == 0 || x7a8_ == 1; }
|
||||||
bool sub801ae670() const { return (x7a8_ == 2 || x7a8_ == 3 || x7a8_ == 4); }
|
[[nodiscard]] bool sub801ae670() const { return (x7a8_ == 2 || x7a8_ == 3 || x7a8_ == 4); }
|
||||||
bool IsSphereCollider(TUniqueId) const;
|
[[nodiscard]] bool IsSphereCollider(TUniqueId) const;
|
||||||
void SetCollisionActorBounds(CStateManager& mgr, const std::unique_ptr<CCollisionActorManager>& colMgr,
|
void SetCollisionActorBounds(CStateManager& mgr, const std::unique_ptr<CCollisionActorManager>& colMgr,
|
||||||
const zeus::CVector3f& extendedBounds);
|
const zeus::CVector3f& extendedBounds);
|
||||||
|
|
||||||
void UpdateScale(float, float, float);
|
void UpdateScale(float, float, float);
|
||||||
float GetEndActionTime() const;
|
[[nodiscard]] float GetEndActionTime() const;
|
||||||
void SetupHealthInfo(CStateManager&);
|
void SetupHealthInfo(CStateManager&);
|
||||||
zeus::CVector3f GetAttackTargetPos(const CStateManager& mgr) const;
|
[[nodiscard]] zeus::CVector3f GetAttackTargetPos(const CStateManager& mgr) const;
|
||||||
void RattlePlayer(CStateManager& mgr, const zeus::CVector3f& vec);
|
void RattlePlayer(CStateManager& mgr, const zeus::CVector3f& vec);
|
||||||
void CalculateFallDirection();
|
void CalculateFallDirection();
|
||||||
void UpdateHeadDamageVulnerability(CStateManager&, bool);
|
void UpdateHeadDamageVulnerability(CStateManager&, bool);
|
||||||
|
|
||||||
u32 sub801ae828(const CStateManager&) const;
|
[[nodiscard]] u32 sub801ae828(const CStateManager&) const;
|
||||||
zeus::CVector3f sub801ae754(const CStateManager&) const;
|
[[nodiscard]] zeus::CVector3f sub801ae754(const CStateManager&) const;
|
||||||
CFlaahgraProjectile* CreateProjectile(const zeus::CTransform& xf, CStateManager& mgr);
|
CFlaahgraProjectile* CreateProjectile(const zeus::CTransform& xf, CStateManager& mgr);
|
||||||
|
|
||||||
TUniqueId GetMirrorNearestPlayer(const CStateManager&) const;
|
[[nodiscard]] TUniqueId GetMirrorNearestPlayer(const CStateManager&) const;
|
||||||
bool sub_801ae638();
|
bool sub_801ae638();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -200,47 +193,51 @@ public:
|
||||||
const CPatternedInfo&, const CActorParameters&, CFlaahgraData);
|
const CPatternedInfo&, const CActorParameters&, CFlaahgraData);
|
||||||
|
|
||||||
void Accept(IVisitor& visitor) override;
|
void Accept(IVisitor& visitor) override;
|
||||||
void Think(float, CStateManager&) override;
|
void Think(float dt, CStateManager& mgr) override;
|
||||||
void PreThink(float, CStateManager&) override;
|
void PreThink(float dt, CStateManager& mgr) override;
|
||||||
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&) override;
|
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CStateManager& mgr) override;
|
||||||
void AddToRenderer(const zeus::CFrustum&, CStateManager&) override;
|
void AddToRenderer(const zeus::CFrustum& frustum, CStateManager& mgr) override;
|
||||||
bool CanRenderUnsorted(const CStateManager&) const override { return true; }
|
[[nodiscard]] bool CanRenderUnsorted(const CStateManager& mgr) const override { return true; }
|
||||||
zeus::CVector3f GetAimPosition(const CStateManager&, float) const override { return x820_aimPosition; }
|
[[nodiscard]] zeus::CVector3f GetAimPosition(const CStateManager& mgr, float dt) const override {
|
||||||
void Death(CStateManager&, const zeus::CVector3f&, EScriptObjectState) override;
|
return x820_aimPosition;
|
||||||
void DoUserAnimEvent(CStateManager&, const CInt32POINode&, EUserEventType, float dt) override;
|
}
|
||||||
|
void Death(CStateManager& mgr, const zeus::CVector3f& direction, EScriptObjectState state) override;
|
||||||
|
void DoUserAnimEvent(CStateManager& mgr, const CInt32POINode& node, EUserEventType type, float dt) override;
|
||||||
|
|
||||||
CProjectileInfo* GetProjectileInfo() override {
|
CProjectileInfo* GetProjectileInfo() override {
|
||||||
return x8e4_30_bigStrike ? &x704_bigStrikeProjectileInfo : &x6dc_normalProjectileInfo;
|
return x8e4_30_bigStrike ? &x704_bigStrikeProjectileInfo : &x6dc_normalProjectileInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AnimOver(CStateManager&, float) override { return x568_state == EState::Four; }
|
bool AnimOver(CStateManager& mgr, float arg) override { return x568_state == EState::Four; }
|
||||||
bool AIStage(CStateManager&, float arg) override { return x780_ == u32(arg); }
|
bool AIStage(CStateManager& mgr, float arg) override { return x780_ == u32(arg); }
|
||||||
bool HitSomething(CStateManager&, float arg) override { return x7d0_hitSomethingTime > 0.f; }
|
bool HitSomething(CStateManager& mgr, float arg) override { return x7d0_hitSomethingTime > 0.f; }
|
||||||
bool OffLine(CStateManager&, float) override { return (x8e5_29_ && x8e5_28_); }
|
bool OffLine(CStateManager& mgr, float arg) override { return (x8e5_29_ && x8e5_28_); }
|
||||||
bool ShouldTurn(CStateManager&, float) override;
|
bool ShouldTurn(CStateManager& mgr, float arg) override;
|
||||||
bool ShouldAttack(CStateManager&, float) override;
|
bool ShouldAttack(CStateManager& mgr, float arg) override;
|
||||||
bool BreakAttack(CStateManager&, float) override { return x7d4_faintTime >= x56c_data.xc_faintDuration && !x8e4_29_getup; }
|
bool BreakAttack(CStateManager& mgr, float arg) override {
|
||||||
bool IsDizzy(CStateManager&, float) override {
|
return x7d4_faintTime >= x56c_data.xc_faintDuration && !x8e4_29_getup;
|
||||||
|
}
|
||||||
|
bool IsDizzy(CStateManager& mgr, float arg) override {
|
||||||
return x450_bodyController->GetBodyStateInfo().GetCurrentStateId() == pas::EAnimationState::LoopReaction;
|
return x450_bodyController->GetBodyStateInfo().GetCurrentStateId() == pas::EAnimationState::LoopReaction;
|
||||||
}
|
}
|
||||||
bool CoverCheck(CStateManager&, float) override;
|
bool CoverCheck(CStateManager& mgr, float arg) override;
|
||||||
bool ShouldSpecialAttack(CStateManager& mgr, float arg) override;
|
bool ShouldSpecialAttack(CStateManager& mgr, float arg) override;
|
||||||
bool ShouldFire(CStateManager& mgr, float arg) override;
|
bool ShouldFire(CStateManager& mgr, float arg) override;
|
||||||
|
|
||||||
void FadeIn(CStateManager&, EStateMsg, float) override;
|
void FadeIn(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void FadeOut(CStateManager&, EStateMsg, float) override;
|
void FadeOut(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void TurnAround(CStateManager&, EStateMsg, float) override;
|
void TurnAround(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void GetUp(CStateManager&, EStateMsg, float) override;
|
void GetUp(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void Growth(CStateManager&, EStateMsg, float) override;
|
void Growth(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void Generate(CStateManager&, EStateMsg, float) override;
|
void Generate(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void Faint(CStateManager&, EStateMsg, float) override;
|
void Faint(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void Dead(CStateManager&, EStateMsg, float) override;
|
void Dead(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void Attack(CStateManager&, EStateMsg, float) override;
|
void Attack(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void Dizzy(CStateManager&, EStateMsg, float) override;
|
void Dizzy(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void Suck(CStateManager&, EStateMsg, float) override;
|
void Suck(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void ProjectileAttack(CStateManager&, EStateMsg, float) override;
|
void ProjectileAttack(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void Cover(CStateManager&, EStateMsg, float) override;
|
void Cover(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void SpecialAttack(CStateManager&, EStateMsg, float) override;
|
void SpecialAttack(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
void Enraged(CStateManager&, EStateMsg, float) override;
|
void Enraged(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||||
};
|
};
|
||||||
} // namespace metaforce::MP1
|
} // namespace metaforce::MP1
|
||||||
|
|
Loading…
Reference in New Issue