Files
Petari/source/Game/Screen/StarPieceCounter.cpp

81 lines
2.1 KiB
C++

#include "Game/Screen/StarPieceCounter.hpp"
StarPieceCounter::StarPieceCounter(const char *pName) : LayoutActor(pName, true) {
mStarPieceNum = 0;
_24 = 0;
_28 = 0;
mAppearer = nullptr;
mPaneRumbler = nullptr;
mFollowPos.x = 0.0f;
mFollowPos.y = 0.0f;
_3C = 0;
_40 = 0;
}
void StarPieceCounter::init(const JMapInfoIter &rIter) {
initLayoutManager("StarPieceCounter", 3);
MR::createAndAddPaneCtrl(this, "TSPieceCounter", 1);
MR::setFollowPos(&mFollowPos, this, "TSPieceCounter");
mPaneRumbler = new CountUpPaneRumbler(this, "TCounter");
mAppearer = new CounterLayoutAppearer(this, TVec2f(0.0f, 30.0f));
if (!MR::isStageAstroLocation()) {
MR::createAndAddPaneCtrl(this, "StarPieceCounter", 1);
MR::setFollowPos(&mFollowPos, this, "StarPieceCounter");
mPaneRumbler->connectPane(this, "Counter");
}
initEffectKeeper(0, nullptr, nullptr);
s32 pieceNum = MR::getStarPieceNum();
mStarPieceNum = pieceNum;
_24 = pieceNum;
initNerve(&NrvStarPieceCounter::StarPieceCounterNrvHide::sInstance);
MR::connectToSceneLayout(this);
appear();
}
void StarPieceCounter::appear() {
mAppearer->reset();
mPaneRumbler->reset();
_28 = 0;
_3C = 0;
MR::hideLayout(this);
forceSync();
setNerve(&NrvStarPieceCounter::StarPieceCounterNrvHide::sInstance);
LayoutActor::appear();
MR::requestMovementOn(this);
}
void StarPieceCounter::forceAppear(bool a1) {
if (a1 || !StarPieceUtil::isDeadOrWaiting(this)) {
appear();
setNerve(&NrvStarPieceCounter::StarPieceCounterNrvAppear::sInstance);
}
s32 v5 = 1;
if (a1) {
v5 = 2;
}
_3C = v5;
}
void StarPieceCounter::disappear(bool a1) {
if (a1 || !isValidAppearSituation()) {
setNerve(&NrvStarPieceCounter::StarPieceCounterNrvDisappear::sInstance);
}
if (!a1) {
_3C = 0;
}
}
bool StarPieceCounter::isWait() const {
bool isWait = false;
if (!MR::isDead(this) && isNerve(&NrvStarPieceCounter::StarPieceCounterNrvWait::sInstance)) {
isWait = true;
}
return isWait;
}