SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
SkeletalFishBossInfo.cpp
1#include "Game/Boss/SkeletalFishBossInfo.hpp"
2#include "Game/Boss/SkeletalFishBoss.hpp"
3#include <cstdio>
4
5namespace {
6 static const char* sParamFileName = "Param";
7 static const char* sParamNameLevelNum = "LevelNum";
8 static const char* sParamNameEnergy = "EnergyLv";
9 static const char* sParamNameSpeed = "SpeedLv";
10 static const char* sParamNameRailID = "RailIDLv";
11 static const char* sParamNameGuardOffset = "GuardOffsetLv";
12 static const char* sParamNameGuardAppearNum = "GuardAppearNumLv";
13 static const char* sParamNameGuard = "Id";
14 static const char* sParamNameGuardPos = "GuardPosLv";
15 static const char* sParamNameGuardWait = "GuardWaitLv";
16};
17
18SkeletalFishBossInfo::SkeletalFishBossInfo(SkeletalFishBoss *pBoss, s32 levelNum, s32 guardNum, const char *pDesc) : NameObj(pDesc) {
19 mFishBoss = pBoss;
20 mLevelNum = levelNum;
21 mGuardNum = guardNum;
22 mLevelStatusArray = nullptr;
23 createLevelStatus();
24}
25
27 volatile const JMapInfo* info = MR::tryCreateCsvParser(mFishBoss, "%s.bcsv", ::sParamFileName);
28
29 if (info != nullptr) {
30 /* there is something I am missing here */
31 JMapInfoIter what;
32 volatile JMapInfoIter level_iter;
33 level_iter.mInfo = (JMapInfo*)info;
34 what.mInfo = (JMapInfo*)info;
35 level_iter._4 = 0;
36 what._4 = 0;
37 loadLevelStatus(what);
38 }
39}
40
41SkeletalFishBossInfo::LevelStatus* SkeletalFishBossInfo::getLevelStatus(s32 idx) const {
42 return &mLevelStatusArray[idx];
43}
44
45void SkeletalFishBossInfo::createLevelStatus() {
46 mLevelStatusArray = new LevelStatus[mLevelNum];
47
48 for (s32 i = 0; i < mLevelNum; i++) {
49 getLevelStatus(i)->mEnergyLevel = 1;
50 getLevelStatus(i)->mSpeedLevel = 20.0f;
51 getLevelStatus(i)->mRailIDLevel = 0;
52 getLevelStatus(i)->mGuardOffsLevel = 2000.0f;
53 getLevelStatus(i)->mGuardAppearNumLevel = 0;
54 getLevelStatus(i)->mStatusArray = new GuardStatus[mGuardNum];
55
56 for (s32 j = 0; j < mGuardNum; j++) {
57 LevelStatus* s = &mLevelStatusArray[i];
58 s->getGuardStatus(j)->mGuardPosLevel.setZYX(0.0f);
59 LevelStatus* cur = &mLevelStatusArray[i];
60 cur->getGuardStatus(j)->mGuardWaitLevelID = 0;
61 }
62 }
63}
64
65SkeletalFishBossInfo::GuardStatus::GuardStatus() {
66
67}
68
69void SkeletalFishBossInfo::loadLevelStatus(const JMapInfoIter &rIter) {
70 s32 levelNum;
71
72 if (rIter.getValue<s32>(::sParamNameLevelNum, &levelNum)) {
73 if (levelNum > mLevelNum) {
74 levelNum = mLevelNum;
75 }
76
77 for (s32 i = 0; i < levelNum; i++) {
78 char nameBuf[0x80];
79 snprintf(nameBuf, sizeof(nameBuf), "%s%d", ::sParamNameEnergy, i);
80 rIter.getValue<s32>(nameBuf, &getLevelStatus(i)->mEnergyLevel);
81 snprintf(nameBuf, sizeof(nameBuf), "%s%d", ::sParamNameSpeed, i);
82 rIter.getValue<f32>(nameBuf, &getLevelStatus(i)->mSpeedLevel);
83 snprintf(nameBuf, sizeof(nameBuf), "%s%d", ::sParamNameRailID, i);
84 rIter.getValue<s32>(nameBuf, &getLevelStatus(i)->mRailIDLevel);
85 snprintf(nameBuf, sizeof(nameBuf), "%s%d", ::sParamNameGuardOffset, i);
86 rIter.getValue<f32>(nameBuf, &getLevelStatus(i)->mGuardOffsLevel);
87 snprintf(nameBuf, sizeof(nameBuf), "%s%d", ::sParamNameGuardAppearNum, i);
88 rIter.getValue<s32>(nameBuf, &getLevelStatus(i)->mGuardAppearNumLevel);
89 loadGuardStatus(rIter, i, mLevelStatusArray[i].mGuardAppearNumLevel);
90 }
91 }
92}
93
94void SkeletalFishBossInfo::loadGuardStatus(const JMapInfoIter &rIter, s32 levelIdx, s32 guardLevel) {
95 LevelStatus* status = &mLevelStatusArray[levelIdx];
96
97 for (s32 i = 0; i < guardLevel; i++) {
98 char buf[0x80];
99 snprintf(buf, sizeof(buf), "%s%d%s%d", ::sParamNameGuardPos, levelIdx, ::sParamNameGuard, i);
100 MR::getJMapInfoV3f(rIter, buf, &status->getGuardStatus(i)->mGuardPosLevel);
101 snprintf(buf, sizeof(buf), "%s%d%s%d", ::sParamNameGuardWait, levelIdx, ::sParamNameGuard, i);
102 rIter.getValue<s32>(buf, &status->getGuardStatus(i)->mGuardWaitLevelID);
103 }
104}
105
106SkeletalFishBossInfo::~SkeletalFishBossInfo() {
107
108}
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.