Files

64 lines
1.8 KiB
C++
Raw Permalink Normal View History

#include "Game/MapObj/CoinReplica.hpp"
2022-08-30 01:21:58 -04:00
CoinReplica::CoinReplica(const char *pName) : NameObj(pName) {
mCoin = nullptr;
2022-08-30 01:21:58 -04:00
}
void CoinReplica::activeCoin() {
if (mCoin) {
mCoin->requestActive();
}
}
void CoinReplica::activeCoinWithGravity() {
if (mCoin) {
mCoin->requestActiveWithGravity();
}
}
void CoinReplica::deactiveCoin() {
if (mCoin) {
mCoin->requestDeactive();
}
}
void CoinReplica::removeCoin() {
if (!MR::isDead(mCoin)) {
mCoin->kill();
}
}
void CoinReplica::init(const JMapInfoIter &rIter) {
mCoin = reinterpret_cast<Coin*>(MR::createCoin(this, "コイン(レプリカ用)"));
MR::initDefaultPos(mCoin, rIter);
mCoin->initWithoutIter();
mCoin->appearNonActive();
s32 arg0;
MR::getJMapInfoArg0NoInit(rIter, &arg0);
if (MR::isExistStageSwitchA(rIter) || MR::isExistStageSwitchB(rIter)) {
StageSwitchCtrl* switchCtrl = MR::createStageSwitchCtrl(this, rIter);
if (switchCtrl->isValidSwitchA()) {
if (arg0 == -1) {
void (CoinReplica::*d)(void) = &CoinReplica::deactiveCoin;
void (CoinReplica::*a)(void) = &CoinReplica::activeCoin;
MR::listenNameObjStageSwitchOnOffA(this, switchCtrl, MR::Functor(this, d), MR::Functor(this, a));
}
else {
void (CoinReplica::*d)(void) = &CoinReplica::deactiveCoin;
void (CoinReplica::*a)(void) = &CoinReplica::activeCoinWithGravity;
MR::listenNameObjStageSwitchOnOffA(this, switchCtrl, MR::Functor(this, d), MR::Functor(this, a));
}
}
if (switchCtrl->isValidSwitchB()) {
void (CoinReplica::*d)(void) = &CoinReplica::removeCoin;
MR::listenNameObjStageSwitchOnB(this, switchCtrl, MR::Functor(this, d));
}
}
}
CoinReplica::~CoinReplica() {
}