mirror of
https://github.com/encounter/Petari.git
synced 2026-03-30 11:34:15 -07:00
64 lines
1.8 KiB
C++
64 lines
1.8 KiB
C++
#include "Game/MapObj/CoinReplica.hpp"
|
|
|
|
CoinReplica::CoinReplica(const char *pName) : NameObj(pName) {
|
|
mCoin = nullptr;
|
|
}
|
|
|
|
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() {
|
|
|
|
} |