mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
Boss/BossKnuckle: Implement BossKnuckleAnimCtrl
This commit is contained in:
parent
b6f947c559
commit
ddb965dc60
|
|
@ -5180,271 +5180,271 @@ Boss/BossKnuckle/BossKnuckleAnimCtrl.o:
|
|||
label:
|
||||
- _ZN19BossKnuckleAnimCtrlC1EP11BossKnuckle
|
||||
- _ZN19BossKnuckleAnimCtrlC2EP11BossKnuckle
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0273e4
|
||||
size: 4
|
||||
label: _ZN19BossKnuckleAnimCtrl6updateEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0273e8
|
||||
size: 12
|
||||
label: _ZN19BossKnuckleAnimCtrl9startWaitEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0273f4
|
||||
size: 116
|
||||
label: _ZN19BossKnuckleAnimCtrl20startAttackGraspSignEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027468
|
||||
size: 16
|
||||
label: _ZN19BossKnuckleAnimCtrl14isPlayerDamageEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027478
|
||||
size: 88
|
||||
label: _ZN19BossKnuckleAnimCtrl10isNumbnessEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0274d0
|
||||
size: 116
|
||||
label: _ZN19BossKnuckleAnimCtrl9startSandEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027544
|
||||
size: 12
|
||||
label: _ZN19BossKnuckleAnimCtrl17startGraspMoveHitEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027550
|
||||
size: 116
|
||||
label: _ZN19BossKnuckleAnimCtrl25startNumbnessIfNotPlayingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0275c4
|
||||
size: 132
|
||||
label: _ZN19BossKnuckleAnimCtrl22startAngryIfNotPlayingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027648
|
||||
size: 120
|
||||
label: _ZN19BossKnuckleAnimCtrl7isAngryEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0276c0
|
||||
size: 72
|
||||
label: _ZN19BossKnuckleAnimCtrl30startAngryHighLoopIfNotPlayingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027708
|
||||
size: 72
|
||||
label: _ZN19BossKnuckleAnimCtrl33startAngryHighOneTimeIfNotPlayingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027750
|
||||
size: 100
|
||||
label: _ZN19BossKnuckleAnimCtrl26startMoveFrontIfNotPlayingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0277b4
|
||||
size: 100
|
||||
label: _ZN19BossKnuckleAnimCtrl21startFearIfNotPlayingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027818
|
||||
size: 88
|
||||
label: _ZN19BossKnuckleAnimCtrl6isFearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027870
|
||||
size: 68
|
||||
label: _ZN19BossKnuckleAnimCtrl20endNumbnessIfPlayingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0278b4
|
||||
size: 100
|
||||
label: _ZN19BossKnuckleAnimCtrl17endAngryIfPlayingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027918
|
||||
size: 68
|
||||
label: _ZN19BossKnuckleAnimCtrl16endFearIfPlayingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x02795c
|
||||
size: 68
|
||||
label: _ZN19BossKnuckleAnimCtrl21endMoveFrontIfPlayingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x0279a0
|
||||
size: 276
|
||||
label: _ZN19BossKnuckleAnimCtrl17startPlayerDamageEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027ab4
|
||||
size: 4
|
||||
label: _ZN19BossKnuckleAnimCtrl14exeBeforeStartEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027ab8
|
||||
size: 60
|
||||
label: _ZN19BossKnuckleAnimCtrl7exeWaitEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027af4
|
||||
size: 60
|
||||
label: _ZN19BossKnuckleAnimCtrl18exeAttackGraspSignEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027b30
|
||||
size: 88
|
||||
label: _ZN19BossKnuckleAnimCtrl7exeSandEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027b88
|
||||
size: 92
|
||||
label: _ZN19BossKnuckleAnimCtrl16exeNumbnessStartEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027be4
|
||||
size: 60
|
||||
label: _ZN19BossKnuckleAnimCtrl11exeNumbnessEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027c20
|
||||
size: 88
|
||||
label: _ZN19BossKnuckleAnimCtrl14exeNumbnessEndEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027c78
|
||||
size: 60
|
||||
label: _ZN19BossKnuckleAnimCtrl15exeGraspMoveHitEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027cb4
|
||||
size: 92
|
||||
label: _ZN19BossKnuckleAnimCtrl13exeAngryStartEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027d10
|
||||
size: 60
|
||||
label: _ZN19BossKnuckleAnimCtrl8exeAngryEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027d4c
|
||||
size: 88
|
||||
label: _ZN19BossKnuckleAnimCtrl11exeAngryEndEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027da4
|
||||
size: 60
|
||||
label: _ZN19BossKnuckleAnimCtrl16exeAngryHighLoopEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027de0
|
||||
size: 92
|
||||
label: _ZN19BossKnuckleAnimCtrl19exeAngryHighOneTimeEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027e3c
|
||||
size: 92
|
||||
label: _ZN19BossKnuckleAnimCtrl12exeFearStartEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027e98
|
||||
size: 60
|
||||
label: _ZN19BossKnuckleAnimCtrl7exeFearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027ed4
|
||||
size: 88
|
||||
label: _ZN19BossKnuckleAnimCtrl10exeFearEndEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027f2c
|
||||
size: 92
|
||||
label: _ZN19BossKnuckleAnimCtrl17exeMoveFrontStartEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027f88
|
||||
size: 60
|
||||
label: _ZN19BossKnuckleAnimCtrl12exeMoveFrontEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x027fc4
|
||||
size: 88
|
||||
label: _ZN19BossKnuckleAnimCtrl15exeMoveFrontEndEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x02801c
|
||||
size: 84
|
||||
label: _ZN19BossKnuckleAnimCtrl15exePlayerDamageEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x028070
|
||||
size: 36
|
||||
label: _ZN19BossKnuckleAnimCtrlD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x028094
|
||||
size: 4
|
||||
label: _ZNK12_GLOBAL__N_133BossKnuckleAnimCtrlNrvBeforeStart7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x028098
|
||||
size: 64
|
||||
label: _ZNK12_GLOBAL__N_126BossKnuckleAnimCtrlNrvWait7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x0280d8
|
||||
size: 64
|
||||
label: _ZNK12_GLOBAL__N_137BossKnuckleAnimCtrlNrvAttackGraspSign7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x028118
|
||||
size: 92
|
||||
label: _ZNK12_GLOBAL__N_126BossKnuckleAnimCtrlNrvSand7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x028174
|
||||
size: 64
|
||||
label: _ZNK12_GLOBAL__N_134BossKnuckleAnimCtrlNrvGraspMoveHit7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x0281b4
|
||||
size: 96
|
||||
label: _ZNK12_GLOBAL__N_135BossKnuckleAnimCtrlNrvNumbnessStart7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x028214
|
||||
size: 96
|
||||
label: _ZNK12_GLOBAL__N_132BossKnuckleAnimCtrlNrvAngryStart7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x028274
|
||||
size: 64
|
||||
label: _ZNK12_GLOBAL__N_135BossKnuckleAnimCtrlNrvAngryHighLoop7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x0282b4
|
||||
size: 96
|
||||
label: _ZNK12_GLOBAL__N_138BossKnuckleAnimCtrlNrvAngryHighOneTime7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x028314
|
||||
size: 96
|
||||
label: _ZNK12_GLOBAL__N_136BossKnuckleAnimCtrlNrvMoveFrontStart7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x028374
|
||||
size: 64
|
||||
label: _ZNK12_GLOBAL__N_131BossKnuckleAnimCtrlNrvMoveFront7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x0283b4
|
||||
size: 92
|
||||
label: _ZNK12_GLOBAL__N_134BossKnuckleAnimCtrlNrvMoveFrontEnd7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x028410
|
||||
size: 96
|
||||
label: _ZNK12_GLOBAL__N_131BossKnuckleAnimCtrlNrvFearStart7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x028470
|
||||
size: 64
|
||||
label: _ZNK12_GLOBAL__N_130BossKnuckleAnimCtrlNrvNumbness7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x0284b0
|
||||
size: 92
|
||||
label: _ZNK12_GLOBAL__N_133BossKnuckleAnimCtrlNrvNumbnessEnd7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x02850c
|
||||
size: 64
|
||||
label: _ZNK12_GLOBAL__N_127BossKnuckleAnimCtrlNrvAngry7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x02854c
|
||||
size: 92
|
||||
label: _ZNK12_GLOBAL__N_130BossKnuckleAnimCtrlNrvAngryEnd7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x0285a8
|
||||
size: 64
|
||||
label: _ZNK12_GLOBAL__N_126BossKnuckleAnimCtrlNrvFear7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x0285e8
|
||||
size: 92
|
||||
label: _ZNK12_GLOBAL__N_129BossKnuckleAnimCtrlNrvFearEnd7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x028644
|
||||
size: 88
|
||||
label: _ZNK12_GLOBAL__N_134BossKnuckleAnimCtrlNrvPlayerDamage7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
Boss/BossKnuckle/BossKnuckleCounterGround.o:
|
||||
'.text':
|
||||
|
|
|
|||
61
src/Boss/BossKnuckle/BossKnuckle.h
Normal file
61
src/Boss/BossKnuckle/BossKnuckle.h
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
#pragma once
|
||||
|
||||
#include "Library/LiveActor/LiveActor.h"
|
||||
|
||||
#include "Demo/IUseDemoSkip.h"
|
||||
|
||||
namespace al {
|
||||
struct ActorInitInfo;
|
||||
class HitSensor;
|
||||
class Nerve;
|
||||
class SensorMsg;
|
||||
} // namespace al
|
||||
|
||||
class BossKnuckle : public al::LiveActor, public IUseDemoSkip {
|
||||
public:
|
||||
BossKnuckle(const char* name);
|
||||
|
||||
void init(const al::ActorInitInfo& initInfo) override;
|
||||
void initAfterPlacement() override;
|
||||
void attackSensor(al::HitSensor* self, al::HitSensor* other) override;
|
||||
bool receiveMsg(const al::SensorMsg* msg, al::HitSensor* other, al::HitSensor* self) override;
|
||||
void control() override;
|
||||
void appear() override;
|
||||
|
||||
bool isFirstDemo() const override;
|
||||
bool isEnableSkipDemo() const override;
|
||||
void skipDemo() override;
|
||||
|
||||
void finishStartDemo(bool isSkip);
|
||||
void exeWait();
|
||||
void turnToPlayer();
|
||||
void updateBodySyncPos();
|
||||
void syncHandIfWaiting();
|
||||
void checkHackAndSetNerve();
|
||||
void exeRelay();
|
||||
void updatePlayerDemo();
|
||||
void exeAttackBeatStart();
|
||||
void exeAttackBeat();
|
||||
void genMummyAgainstPlayer(s32 mummyCount);
|
||||
void relayNextNerve(const al::Nerve* nerve, s32 step, bool isImmediate);
|
||||
void exeAttackHandFall();
|
||||
s32 countAliveIce();
|
||||
void exeAttackHandFallFirstPainDemo();
|
||||
void exeAttackSideStamp();
|
||||
void exeRunAwayStart();
|
||||
void exeRunAway();
|
||||
void breakAirIce();
|
||||
void startPlayerDemo();
|
||||
void exeDamage();
|
||||
void exeRestoreHand();
|
||||
void exeAttackRocketPunch();
|
||||
void genMummy(const al::LiveActor* actor, s32 mummyCount);
|
||||
void exeReturn();
|
||||
void exeBeforeBattleStart();
|
||||
void exeBeforeDemoBattleStartWait();
|
||||
void exeDemoBattleStart();
|
||||
void addDemoActorAll();
|
||||
void exeDemoBattleEnd();
|
||||
void exeAfterBattleEnd();
|
||||
void breakAllIce();
|
||||
};
|
||||
338
src/Boss/BossKnuckle/BossKnuckleAnimCtrl.cpp
Normal file
338
src/Boss/BossKnuckle/BossKnuckleAnimCtrl.cpp
Normal file
|
|
@ -0,0 +1,338 @@
|
|||
#include "Boss/BossKnuckle/BossKnuckleAnimCtrl.h"
|
||||
|
||||
#include "Library/LiveActor/ActorActionFunction.h"
|
||||
#include "Library/Nerve/NerveSetupUtil.h"
|
||||
#include "Library/Nerve/NerveUtil.h"
|
||||
|
||||
#include "Boss/BossKnuckle/BossKnuckle.h"
|
||||
|
||||
namespace {
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, BeforeStart)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, GraspMoveHit)
|
||||
NERVES_MAKE_NOSTRUCT(BossKnuckleAnimCtrl, BeforeStart, GraspMoveHit)
|
||||
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, Wait)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, AttackGraspSign)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, Sand)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, NumbnessStart)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, AngryStart)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, AngryHighLoop)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, AngryHighOneTime)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, MoveFrontStart)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, MoveFront)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, MoveFrontEnd)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, FearStart)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, Numbness)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, NumbnessEnd)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, Angry)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, AngryEnd)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, Fear)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, FearEnd)
|
||||
NERVE_IMPL(BossKnuckleAnimCtrl, PlayerDamage)
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(BossKnuckleAnimCtrl, Wait, AttackGraspSign, Sand, NumbnessStart, AngryStart,
|
||||
AngryHighLoop, AngryHighOneTime, MoveFrontStart, MoveFront, MoveFrontEnd,
|
||||
FearStart, Numbness, NumbnessEnd, Angry, AngryEnd, Fear, FearEnd, PlayerDamage)
|
||||
} // namespace
|
||||
|
||||
BossKnuckleAnimCtrl::BossKnuckleAnimCtrl(BossKnuckle* bossKnuckle)
|
||||
: al::NerveExecutor("ボスナックルアニメコントロール"), mBossKnuckle(bossKnuckle) {
|
||||
initNerve(&BeforeStart, 0);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::update() {
|
||||
updateNerve();
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::startWait() {
|
||||
al::setNerve(this, &Wait);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::startAttackGraspSign() {
|
||||
if (isPlayerDamage())
|
||||
return;
|
||||
if (isNumbness())
|
||||
return;
|
||||
|
||||
al::setNerve(this, &AttackGraspSign);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::startSand() {
|
||||
if (isPlayerDamage())
|
||||
return;
|
||||
if (isNumbness())
|
||||
return;
|
||||
|
||||
al::setNerve(this, &Sand);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::startGraspMoveHit() {
|
||||
al::setNerve(this, &GraspMoveHit);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::startNumbnessIfNotPlaying() {
|
||||
if (isPlayerDamage())
|
||||
return;
|
||||
if (isNumbness())
|
||||
return;
|
||||
|
||||
al::setNerve(this, &NumbnessStart);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::startAngryIfNotPlaying() {
|
||||
if (isAngry())
|
||||
return;
|
||||
|
||||
al::setNerve(this, &AngryStart);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::startAngryHighLoopIfNotPlaying() {
|
||||
if (al::isNerve(this, &AngryHighLoop))
|
||||
return;
|
||||
|
||||
al::setNerve(this, &AngryHighLoop);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::startAngryHighOneTimeIfNotPlaying() {
|
||||
if (al::isNerve(this, &AngryHighOneTime))
|
||||
return;
|
||||
|
||||
al::setNerve(this, &AngryHighOneTime);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::startMoveFrontIfNotPlaying() {
|
||||
if (al::isNerve(this, &MoveFrontStart))
|
||||
return;
|
||||
if (al::isNerve(this, &MoveFront))
|
||||
return;
|
||||
if (al::isNerve(this, &MoveFrontEnd))
|
||||
return;
|
||||
|
||||
al::setNerve(this, &MoveFrontStart);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::startFearIfNotPlaying() {
|
||||
if (isFear())
|
||||
return;
|
||||
|
||||
al::setNerve(this, &FearStart);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::endMoveFrontIfPlaying() {
|
||||
if (!al::isNerve(this, &MoveFront))
|
||||
return;
|
||||
|
||||
al::setNerve(this, &MoveFrontEnd);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeNumbnessStart() {
|
||||
if (al::isFirstStep(this))
|
||||
al::startAction(mBossKnuckle, "AttackGraspNumbnessStart");
|
||||
if (al::isActionEnd(mBossKnuckle))
|
||||
al::setNerve(this, &Numbness);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::endNumbnessIfPlaying() {
|
||||
if (!al::isNerve(this, &Numbness))
|
||||
return;
|
||||
|
||||
al::setNerve(this, &NumbnessEnd);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeAngryStart() {
|
||||
if (al::isFirstStep(this))
|
||||
al::startAction(mBossKnuckle, "AngryStart");
|
||||
if (al::isActionEnd(mBossKnuckle))
|
||||
al::setNerve(this, &Angry);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::endAngryIfPlaying() {
|
||||
if (al::isNerve(this, &Angry)) {
|
||||
al::setNerve(this, &AngryEnd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (al::isNerve(this, &AngryHighLoop)) {
|
||||
al::setNerve(this, &AngryEnd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!al::isNerve(this, &AngryHighOneTime))
|
||||
return;
|
||||
|
||||
al::setNerve(this, &AngryEnd);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeFearStart() {
|
||||
if (al::isFirstStep(this))
|
||||
al::startAction(mBossKnuckle, "FearStart");
|
||||
if (al::isActionEnd(mBossKnuckle))
|
||||
al::setNerve(this, &Fear);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::endFearIfPlaying() {
|
||||
if (!al::isNerve(this, &Fear))
|
||||
return;
|
||||
|
||||
al::setNerve(this, &FearEnd);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::startPlayerDamage() {
|
||||
if (al::isNerve(this, &PlayerDamage))
|
||||
return;
|
||||
|
||||
if (al::isNerve(this, &AngryStart) || al::isNerve(this, &Angry) ||
|
||||
al::isNerve(this, &AngryEnd) || al::isNerve(this, &AngryHighLoop) ||
|
||||
al::isNerve(this, &AngryHighOneTime)) {
|
||||
mPlayerDamageReturnNerve = &Angry;
|
||||
} else if (al::isNerve(this, &NumbnessStart) || al::isNerve(this, &Numbness) ||
|
||||
al::isNerve(this, &NumbnessEnd)) {
|
||||
mPlayerDamageReturnNerve = &Numbness;
|
||||
} else {
|
||||
if (!al::isNerve(this, &FearStart) && !al::isNerve(this, &Fear) &&
|
||||
!al::isNerve(this, &FearEnd)) {
|
||||
mPlayerDamageReturnNerve = &Wait;
|
||||
al::setNerve(this, &PlayerDamage);
|
||||
return;
|
||||
}
|
||||
|
||||
mPlayerDamageReturnNerve = &Fear;
|
||||
}
|
||||
|
||||
al::setNerve(this, &PlayerDamage);
|
||||
}
|
||||
|
||||
bool BossKnuckleAnimCtrl::isPlayerDamage() {
|
||||
return al::isNerve(this, &PlayerDamage);
|
||||
}
|
||||
|
||||
bool BossKnuckleAnimCtrl::isNumbness() {
|
||||
return al::isNerve(this, &NumbnessStart) || al::isNerve(this, &Numbness) ||
|
||||
al::isNerve(this, &NumbnessEnd);
|
||||
}
|
||||
|
||||
bool BossKnuckleAnimCtrl::isAngry() {
|
||||
return al::isNerve(this, &AngryStart) || al::isNerve(this, &Angry) ||
|
||||
al::isNerve(this, &AngryEnd) || al::isNerve(this, &AngryHighLoop) ||
|
||||
al::isNerve(this, &AngryHighOneTime);
|
||||
}
|
||||
|
||||
bool BossKnuckleAnimCtrl::isFear() {
|
||||
return al::isNerve(this, &FearStart) || al::isNerve(this, &Fear) || al::isNerve(this, &FearEnd);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeBeforeStart() {}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeWait() {
|
||||
if (al::isFirstStep(this)) {
|
||||
al::startAction(mBossKnuckle, "Wait");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeAttackGraspSign() {
|
||||
if (al::isFirstStep(this)) {
|
||||
al::tryStartActionIfNotPlaying(mBossKnuckle, "AttackGraspSign");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeSand() {
|
||||
if (al::isFirstStep(this))
|
||||
al::tryStartActionIfNotPlaying(mBossKnuckle, "AttackGraspSand");
|
||||
if (al::isActionEnd(mBossKnuckle))
|
||||
al::setNerve(this, &Wait);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeNumbness() {
|
||||
if (al::isFirstStep(this)) {
|
||||
al::tryStartActionIfNotPlaying(mBossKnuckle, "AttackGraspNumbness");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeNumbnessEnd() {
|
||||
if (al::isFirstStep(this))
|
||||
al::startAction(mBossKnuckle, "AttackGraspNumbnessEnd");
|
||||
if (al::isActionEnd(mBossKnuckle))
|
||||
al::setNerve(this, &Wait);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeGraspMoveHit() {
|
||||
if (al::isFirstStep(this)) {
|
||||
al::startAction(mBossKnuckle, "GraspMoveHit");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeAngry() {
|
||||
if (al::isFirstStep(this)) {
|
||||
al::startAction(mBossKnuckle, "Angry");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeAngryEnd() {
|
||||
if (al::isFirstStep(this))
|
||||
al::startAction(mBossKnuckle, "AngryEnd");
|
||||
if (al::isActionEnd(mBossKnuckle))
|
||||
al::setNerve(this, &Wait);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeAngryHighLoop() {
|
||||
if (al::isFirstStep(this)) {
|
||||
al::startAction(mBossKnuckle, "AngryHigh1");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeAngryHighOneTime() {
|
||||
if (al::isFirstStep(this))
|
||||
al::startAction(mBossKnuckle, "AngryHigh2");
|
||||
if (al::isActionEnd(mBossKnuckle))
|
||||
al::setNerve(this, &Angry);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeFear() {
|
||||
if (al::isFirstStep(this)) {
|
||||
al::startAction(mBossKnuckle, "Fear");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeFearEnd() {
|
||||
if (al::isFirstStep(this))
|
||||
al::startAction(mBossKnuckle, "FearEnd");
|
||||
if (al::isActionEnd(mBossKnuckle))
|
||||
al::setNerve(this, &Wait);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeMoveFrontStart() {
|
||||
if (al::isFirstStep(this))
|
||||
al::startAction(mBossKnuckle, "MoveFrontStart");
|
||||
if (al::isActionEnd(mBossKnuckle))
|
||||
al::setNerve(this, &MoveFront);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeMoveFront() {
|
||||
if (al::isFirstStep(this)) {
|
||||
al::startAction(mBossKnuckle, "MoveFront");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exeMoveFrontEnd() {
|
||||
if (al::isFirstStep(this))
|
||||
al::startAction(mBossKnuckle, "MoveFrontEnd");
|
||||
if (al::isActionEnd(mBossKnuckle))
|
||||
al::setNerve(this, &Wait);
|
||||
}
|
||||
|
||||
void BossKnuckleAnimCtrl::exePlayerDamage() {
|
||||
if (al::isFirstStep(this))
|
||||
al::startAction(mBossKnuckle, "PlayerDamage");
|
||||
if (al::isActionEnd(mBossKnuckle))
|
||||
al::setNerve(this, mPlayerDamageReturnNerve);
|
||||
}
|
||||
|
||||
BossKnuckleAnimCtrl::~BossKnuckleAnimCtrl() = default;
|
||||
58
src/Boss/BossKnuckle/BossKnuckleAnimCtrl.h
Normal file
58
src/Boss/BossKnuckle/BossKnuckleAnimCtrl.h
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
#pragma once
|
||||
|
||||
#include "Library/Nerve/NerveExecutor.h"
|
||||
|
||||
class BossKnuckle;
|
||||
|
||||
class BossKnuckleAnimCtrl : public al::NerveExecutor {
|
||||
public:
|
||||
BossKnuckleAnimCtrl(BossKnuckle* bossKnuckle);
|
||||
|
||||
void update();
|
||||
void startWait();
|
||||
void startAttackGraspSign();
|
||||
bool isPlayerDamage();
|
||||
bool isNumbness();
|
||||
void startSand();
|
||||
void startGraspMoveHit();
|
||||
void startNumbnessIfNotPlaying();
|
||||
void startAngryIfNotPlaying();
|
||||
bool isAngry();
|
||||
void startAngryHighLoopIfNotPlaying();
|
||||
void startAngryHighOneTimeIfNotPlaying();
|
||||
void startMoveFrontIfNotPlaying();
|
||||
void startFearIfNotPlaying();
|
||||
bool isFear();
|
||||
void endNumbnessIfPlaying();
|
||||
void endAngryIfPlaying();
|
||||
void endFearIfPlaying();
|
||||
void endMoveFrontIfPlaying();
|
||||
void startPlayerDamage();
|
||||
void exeBeforeStart();
|
||||
void exeWait();
|
||||
void exeAttackGraspSign();
|
||||
void exeSand();
|
||||
void exeNumbnessStart();
|
||||
void exeNumbness();
|
||||
void exeNumbnessEnd();
|
||||
void exeGraspMoveHit();
|
||||
void exeAngryStart();
|
||||
void exeAngry();
|
||||
void exeAngryEnd();
|
||||
void exeAngryHighLoop();
|
||||
void exeAngryHighOneTime();
|
||||
void exeFearStart();
|
||||
void exeFear();
|
||||
void exeFearEnd();
|
||||
void exeMoveFrontStart();
|
||||
void exeMoveFront();
|
||||
void exeMoveFrontEnd();
|
||||
void exePlayerDamage();
|
||||
~BossKnuckleAnimCtrl();
|
||||
|
||||
private:
|
||||
BossKnuckle* mBossKnuckle = nullptr;
|
||||
const al::Nerve* mPlayerDamageReturnNerve = nullptr;
|
||||
};
|
||||
|
||||
static_assert(sizeof(BossKnuckleAnimCtrl) == 0x20);
|
||||
Loading…
Reference in a new issue