mirror of
https://github.com/encounter/Petari.git
synced 2026-03-30 11:34:15 -07:00
72 lines
2.1 KiB
C++
72 lines
2.1 KiB
C++
#include "Game/Enemy/WalkerStateBindStarPointer.hpp"
|
|
|
|
WalkerStateBindStarPointer::WalkerStateBindStarPointer(LiveActor *pActor, AnimScaleController *pController) : ActorStateBase("歩行型スターポインタ拘束") {
|
|
mHostActor = pActor;
|
|
mScaleController = pController;
|
|
mUpdateCounter = 0;
|
|
mHasEffect = false;
|
|
initNerve(&NrvWalkerStateBindStarPointer::WalkerStateBindStarPointerNrvBind::sInstance);
|
|
if (!MR::isRegisteredEffect(pActor, "Touch")) {
|
|
mHasEffect = true;
|
|
MR::addEffect(pActor, "PointerTouch");
|
|
}
|
|
}
|
|
|
|
void WalkerStateBindStarPointer::appear() {
|
|
mIsDead = false;
|
|
setNerve(&NrvWalkerStateBindStarPointer::WalkerStateBindStarPointerNrvBind::sInstance);
|
|
}
|
|
|
|
void WalkerStateBindStarPointer::kill() {
|
|
mIsDead = true;
|
|
if (mScaleController != nullptr) {
|
|
mScaleController->startAnim();
|
|
}
|
|
|
|
const char* effectName = mHasEffect ? "PointerTouch" : "Touch";
|
|
MR::deleteEffect(mHostActor, effectName);
|
|
if (MR::isExistBck(mHostActor, nullptr)) {
|
|
MR::setBckRate(mHostActor, 1.0f);
|
|
}
|
|
}
|
|
|
|
bool WalkerStateBindStarPointer::tryStartPointBind() const {
|
|
return MR::isStarPointerPointing2POnPressButton(mHostActor, "弱", true, false);
|
|
}
|
|
|
|
void WalkerStateBindStarPointer::exeBind() {
|
|
if (MR::isFirstStep(this)) {
|
|
MR::startDPDHitSound();
|
|
mUpdateCounter = 0;
|
|
const char* effectName = mHasEffect ? "PointerTouch" : "Touch";
|
|
MR::emitEffect(mHostActor, effectName);
|
|
if (MR::isExistBck(mHostActor, nullptr)) {
|
|
MR::setBckRate(mHostActor, 0.0f);
|
|
}
|
|
|
|
if (mScaleController != nullptr) {
|
|
mScaleController->startDpdHitVibration();
|
|
}
|
|
}
|
|
|
|
MR::startDPDFreezeLevelSound(mHostActor);
|
|
MR::zeroVelocity(mHostActor);
|
|
if (MR::isStarPointerPointing2POnPressButton(mHostActor, "弱", true, false)) {
|
|
mUpdateCounter = 0;
|
|
}
|
|
else {
|
|
mUpdateCounter++;
|
|
}
|
|
|
|
if (mUpdateCounter > 5) {
|
|
update();
|
|
}
|
|
}
|
|
|
|
WalkerStateBindStarPointer::~WalkerStateBindStarPointer() {
|
|
|
|
}
|
|
|
|
namespace NrvWalkerStateBindStarPointer {
|
|
INIT_NERVE(WalkerStateBindStarPointerNrvBind);
|
|
}; |