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

CBeetle implementation

This commit is contained in:
Jack Andersen
2018-12-30 19:01:42 -10:00
parent 0ec81477cf
commit 147a9396c4
22 changed files with 1214 additions and 92 deletions

View File

@@ -485,12 +485,12 @@ bool CSpacePirate::ShouldFrenzy(CStateManager& mgr) {
return x63c_frenzyFrames >= 0;
}
void CSpacePirate::ResetTeamAiRole(CStateManager& mgr) {
void CSpacePirate::SquadReset(CStateManager& mgr) {
CTeamAiMgr::ResetTeamAiRole(!x634_27_melee ? CTeamAiMgr::EAttackType::Projectile : CTeamAiMgr::EAttackType::Melee,
mgr, x8c8_teamAiMgrId, GetUniqueId(), true);
}
void CSpacePirate::AssignTeamAiRole(CStateManager& mgr) {
void CSpacePirate::SquadAdd(CStateManager& mgr) {
if (x8c8_teamAiMgrId == kInvalidUniqueId)
x8c8_teamAiMgrId = CTeamAiMgr::GetTeamAiMgr(*this, mgr);
if (x8c8_teamAiMgrId != kInvalidUniqueId) {
@@ -502,7 +502,7 @@ void CSpacePirate::AssignTeamAiRole(CStateManager& mgr) {
}
}
void CSpacePirate::RemoveTeamAiRole(CStateManager& mgr) {
void CSpacePirate::SquadRemove(CStateManager& mgr) {
if (x8c8_teamAiMgrId != kInvalidUniqueId) {
if (TCastToPtr<CTeamAiMgr> aimgr = mgr.ObjectById(x8c8_teamAiMgrId)) {
if (aimgr->IsPartOfTeam(GetUniqueId())) {
@@ -611,7 +611,7 @@ void CSpacePirate::UpdateAttacks(float dt, CStateManager& mgr) {
}
if (reset)
ResetTeamAiRole(mgr);
SquadReset(mgr);
xe7_31_targetable = CheckTargetable(mgr);
}
@@ -852,7 +852,7 @@ void CSpacePirate::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, C
x638_31_mayStartAttack = true;
else
x400_24_hitByPlayerProjectile = true;
AssignTeamAiRole(mgr);
SquadAdd(mgr);
} else if (x634_25_ceilingAmbush) {
RemoveMaterial(EMaterialTypes::GroundCollider, mgr);
x328_27_onGround = false;
@@ -956,7 +956,7 @@ void CSpacePirate::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, C
break;
case EScriptObjectMessage::Deactivate:
case EScriptObjectMessage::Deleted:
RemoveTeamAiRole(mgr);
SquadRemove(mgr);
mChargePlayerList.remove(GetUniqueId());
break;
case EScriptObjectMessage::Start:
@@ -1137,7 +1137,8 @@ bool CSpacePirate::Listen(const zeus::CVector3f& pos, EListenNoiseType type) {
return ret;
}
zeus::CVector3f CSpacePirate::GetOrigin(const CStateManager& mgr, const CTeamAiRole& role) const {
zeus::CVector3f CSpacePirate::GetOrigin(const CStateManager& mgr, const CTeamAiRole& role,
const zeus::CVector3f& aimPos) const {
return GetTranslation();
}
@@ -1220,7 +1221,7 @@ void CSpacePirate::Dead(CStateManager& mgr, EStateMsg msg, float dt) {
case EStateMsg::Activate:
x764_boneTracking.SetActive(false);
SetEyeParticleActive(mgr, false);
ResetTeamAiRole(mgr);
SquadReset(mgr);
break;
case EStateMsg::Update:
if (x450_bodyController->GetCurrentStateId() == pas::EAnimationState::Death) {
@@ -1773,7 +1774,7 @@ void CSpacePirate::GetUp(CStateManager& mgr, EStateMsg msg, float dt) {
switch (msg) {
case EStateMsg::Activate:
x32c_animState = EAnimState::Ready;
ResetTeamAiRole(mgr);
SquadReset(mgr);
x8dc_leashTimer = 0.f;
break;
case EStateMsg::Update: