SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
TimeAppearObj.cpp
1#include "Game/MapObj/TimeAppearObj.hpp"
2#include "Game/Util.hpp"
3
4TimeAppearObj::TimeAppearObj(const char *pName) : MapObjActor(pName), mTimer(0x1E) {
5
6}
7
8void TimeAppearObj::init(const JMapInfoIter &rIter) {
10 info.setupModelName("KoopaBattleMapStairTurn");
11 info.setupSound(4);
12 info.setupNerve(&NrvTimeAppearObj::TimeAppearObjNrvHide::sInstance);
13 MapObjActorUtil::setupInitInfoSimpleMapObj(&info);
14 initialize(rIter, info);
15 MR::getJMapInfoArg0NoInit(rIter, &mTimer);
16 makeActorDead();
17}
18
19void TimeAppearObj::exeEnd() {
20 if (MR::isFirstStep(this)) {
21 if (MR::isRegisteredEffect(this, "Appear")) {
22 MR::emitEffect(this, "Appear");
23 }
24
25 if (MR::isEqualString(mObjectName, "KoopaBattleMapStairTurn")) {
26 MR::startSound(this, "SE_OJ_KP_BTL_ST_TURN_APPEAR", -1, -1);
27 }
28
29 MR::showModel(this);
30 MR::validateCollisionParts(this);
31 }
32}
33
34void TimeAppearObj::appear() {
35 MapObjActor::appear();
36 MR::hideModel(this);
37 MR::invalidateCollisionParts(this);
38 setNerve(&NrvTimeAppearObj::TimeAppearObjNrvHide::sInstance);
39}
40
41TimeAppearObj::~TimeAppearObj() {
42
43}
44
45namespace NrvTimeAppearObj {
46 INIT_NERVE(TimeAppearObjNrvHide);
47 INIT_NERVE(TimeAppearObjNrvEnd);
48
49 void TimeAppearObjNrvEnd::execute(Spine *pSpine) const {
50 TimeAppearObj* obj = reinterpret_cast<TimeAppearObj*>(pSpine->mExecutor);
51 obj->exeEnd();
52 }
53
54 void TimeAppearObjNrvHide::execute(Spine *pSpine) const {
55 TimeAppearObj* obj = reinterpret_cast<TimeAppearObj*>(pSpine->mExecutor);
56 if (MR::isStep(obj, obj->mTimer)) {
57 obj->setNerve(&NrvTimeAppearObj::TimeAppearObjNrvEnd::sInstance);
58 }
59 }
60};
Definition Spine.hpp:9
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.