SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
WalkerStateBindStarPointer.cpp
1#include "Game/Enemy/WalkerStateBindStarPointer.hpp"
2
3WalkerStateBindStarPointer::WalkerStateBindStarPointer(LiveActor *pActor, AnimScaleController *pController) : ActorStateBase("歩行型スターポインタ拘束") {
4 mHostActor = pActor;
5 mScaleController = pController;
6 mUpdateCounter = 0;
7 mHasEffect = false;
8 initNerve(&NrvWalkerStateBindStarPointer::WalkerStateBindStarPointerNrvBind::sInstance);
9 if (!MR::isRegisteredEffect(pActor, "Touch")) {
10 mHasEffect = true;
11 MR::addEffect(pActor, "PointerTouch");
12 }
13}
14
15void WalkerStateBindStarPointer::appear() {
16 mIsDead = false;
17 setNerve(&NrvWalkerStateBindStarPointer::WalkerStateBindStarPointerNrvBind::sInstance);
18}
19
20void WalkerStateBindStarPointer::kill() {
21 mIsDead = true;
22 if (mScaleController != nullptr) {
23 mScaleController->startAnim();
24 }
25
26 const char* effectName = mHasEffect ? "PointerTouch" : "Touch";
27 MR::deleteEffect(mHostActor, effectName);
28 if (MR::isExistBck(mHostActor, nullptr)) {
29 MR::setBckRate(mHostActor, 1.0f);
30 }
31}
32
33bool WalkerStateBindStarPointer::tryStartPointBind() const {
34 return MR::isStarPointerPointing2POnPressButton(mHostActor, "弱", true, false);
35}
36
37void WalkerStateBindStarPointer::exeBind() {
38 if (MR::isFirstStep(this)) {
39 MR::startDPDHitSound();
41 const char* effectName = mHasEffect ? "PointerTouch" : "Touch";
42 MR::emitEffect(mHostActor, effectName);
43 if (MR::isExistBck(mHostActor, nullptr)) {
44 MR::setBckRate(mHostActor, 0.0f);
45 }
46
47 if (mScaleController != nullptr) {
48 mScaleController->startDpdHitVibration();
49 }
50 }
51
52 MR::startDPDFreezeLevelSound(mHostActor);
53 MR::zeroVelocity(mHostActor);
54 if (MR::isStarPointerPointing2POnPressButton(mHostActor, "弱", true, false)) {
56 }
57 else {
59 }
60
61 if (mUpdateCounter > 5) {
62 update();
63 }
64}
65
66WalkerStateBindStarPointer::~WalkerStateBindStarPointer() {
67
68}
69
70namespace NrvWalkerStateBindStarPointer {
71 INIT_NERVE(WalkerStateBindStarPointerNrvBind);
72};
The basis of a drawable actor that can contain states (see: Nerve)
Definition LiveActor.hpp:24
LiveActor * mHostActor
The host actor that is bound.
s32 mUpdateCounter
Counter that is incremented in exeBind. Once it exceeds 5, it updates the actor.
bool mHasEffect
Does the host actor contain the "Touch" effect name?
AnimScaleController * mScaleController
The controller for scaling the actor during animations.