SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
PowerStarHolder.cpp
1#include "Game/MapObj/PowerStarHolder.hpp"
2#include "Game/NPC/EventDirector.hpp"
3
4PowerStarHolder::PowerStarHolder(const char *pName) : NameObj(pName) {
5 mNumInfos = 0;
6 MR::zeroMemory(mInfos, sizeof(mInfos));
7}
8
10
11}
12
13void PowerStarHolder::registerPowerStar(PowerStar *pStar, int starNum) {
15 info->mStar = pStar;
16 info->mStarNum = starNum;
17 info->mIsAppear = false;
18 mInfos[mNumInfos] = info;
19 mNumInfos++;
20}
21
22void PowerStarHolder::requestAppearPowerStar(int starNum, const TVec3f *pPos, bool forceAppear) {
23 PowerStarRequestInfo* info = findPowerStarRequestInfo(starNum);
24 info->mIsAppear = true;
25 PowerStar* star = info->mStar;
26
27 if (pPos != nullptr) {
28 star->setDemoAppearPos(*pPos);
29 }
30
31 if (forceAppear) {
32 star->_11C = true;
33 star->appear();
34 }
35 else {
36 star->requestAppear();
37 }
38}
39
40void PowerStarHolder::appearPowerStarWithoutDemo(int starNum) {
41 PowerStarRequestInfo* info = findPowerStarRequestInfo(starNum);
42 info->mIsAppear = true;
43 PowerStar* star = info->mStar;
44 star->offAppearDemo();
45 star->appear();
46}
47
48PowerStar* PowerStarHolder::getAppearedPowerStar(int starNum) const {
49 for (s32 i = 0; i < mNumInfos; i++) {
50 PowerStarRequestInfo* info = mInfos[i];
51
52 if (info->mStarNum == starNum && info->mIsAppear) {
53 return info->mStar;
54 }
55 }
56
57 return nullptr;
58}
59
60PowerStarRequestInfo* PowerStarHolder::findPowerStarRequestInfo(int starNum) const {
61 for (s32 i = 0; i < mNumInfos; i++) {
62 PowerStarRequestInfo* info = mInfos[i];
63
64 if (info->mStarNum == starNum) {
65 return info;
66 }
67 }
68
69 return nullptr;
70}
71
72namespace MR {
73 void registerPowerStar(PowerStar *pStar, int starNum) {
74 EventFunction::getPowerStarHolder()->registerPowerStar(pStar, starNum);
75 }
76};
77
78bool PowerStarFunction::isEndPowerStarAppearDemo(int starNum) {
79 return EventFunction::getPowerStarHolder()->getAppearedPowerStar(starNum)->isEndAppearDemo();
80}
81
82PowerStar* PowerStarFunction::findPowerStar(int starNum) {
83 return EventFunction::getPowerStarHolder()->findPowerStarRequestInfo(starNum)->mStar;
84}
85
86PowerStarHolder::~PowerStarHolder() {
87
88}
The most basic form of an object.
Definition NameObj.hpp:11
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.