Match and link CBSTaunt

Former-commit-id: 9c26f252bb
This commit is contained in:
Henrique Gemignani Passos Lima
2022-10-28 14:34:03 +03:00
parent 7c7f523da0
commit 1a369240b2
7 changed files with 100 additions and 11 deletions

View File

@@ -0,0 +1,53 @@
#include "MetroidPrime/BodyState/CBSTaunt.hpp"
#include "MetroidPrime/CStateManager.hpp"
#include "MetroidPrime/BodyState/CBodyController.hpp"
#include "Kyoto/Animation/CPASAnimParmData.hpp"
CBSTaunt::CBSTaunt() {}
void CBSTaunt::Start(CBodyController& bc, CStateManager& mgr) {
const CBCTauntCmd* cmd = static_cast<const CBCTauntCmd*>(bc.CommandMgr().GetCmd(kBSC_Taunt));
const CPASAnimParmData parms(pas::kAS_Taunt, CPASAnimParm::FromEnum(cmd->GetTauntType()));
bc.PlayBestAnimation(parms, *mgr.Random());
}
pas::EAnimationState CBSTaunt::UpdateBody(float dt, CBodyController& bc, CStateManager& mgr) {
const pas::EAnimationState st = GetBodyStateTransition(dt, bc);
if (st == pas::kAS_Invalid) {
CBodyStateCmdMgr& cmdMgr = bc.CommandMgr();
if (cmdMgr.GetTargetVector().IsNonZero()) {
bc.FaceDirection(cmdMgr.GetTargetVector(), dt);
}
}
return st;
}
void CBSTaunt::Shutdown(CBodyController&) override {}
pas::EAnimationState CBSTaunt::GetBodyStateTransition(float dt, CBodyController& bc) {
CBodyStateCmdMgr& cmdMgr = bc.CommandMgr();
if (cmdMgr.GetCmd(kBSC_Hurled)) {
return pas::kAS_Hurled;
}
if (cmdMgr.GetCmd(kBSC_KnockDown)) {
return pas::kAS_Fall;
}
if (cmdMgr.GetCmd(kBSC_LoopHitReaction)) {
return pas::kAS_LoopReaction;
}
if (cmdMgr.GetCmd(kBSC_KnockBack)) {
return pas::kAS_KnockBack;
}
if (cmdMgr.GetCmd(kBSC_Locomotion)) {
return pas::kAS_Locomotion;
}
if (bc.IsAnimationOver()) {
return pas::kAS_Locomotion;
}
return pas::kAS_Invalid;
}
CBSTaunt::~CBSTaunt() {}