1#include "Game/MapObj/AstroMapObjFunction.hpp"
2#include "Game/Demo/AstroDemoFunction.hpp"
6 s32 getNumGrandStarForRevival(
const char *pName, s32 domeId) {
7 const char* modelName = AstroMapObjFunction::getModelName(pName, domeId);
9 if ( MR::isEqualString(modelName,
"AstroDomeEntranceObservatory") )
11 if ( MR::isEqualString(modelName,
"AstroDomeEntranceWell") )
13 if ( MR::isEqualString(modelName,
"AstroBaseA") )
15 if ( MR::isEqualString(modelName,
"AstroBaseCenterB") )
17 if ( MR::isEqualString(modelName,
"AstroRotateStepA") )
19 if ( MR::isEqualString(modelName,
"AstroDecoratePartsA") )
21 if ( MR::isEqualString(modelName,
"AstroDecoratePartsGearA") )
23 if ( MR::isEqualString(modelName,
"AstroParking") )
25 if ( MR::isEqualString(modelName,
"AstroDomeEntranceKitchen") )
27 if ( MR::isEqualString(modelName,
"AstroDomeEntranceBedRoom") )
29 if ( MR::isEqualString(modelName,
"AstroBaseB") )
31 if ( MR::isEqualString(modelName,
"AstroBaseKitchen") )
33 if ( MR::isEqualString(modelName,
"AstroLibrary") )
35 if ( MR::isEqualString(modelName,
"AstroCountDownPlate") )
37 if ( MR::isEqualString(modelName,
"AstroDomeEntranceMachine") )
39 if ( MR::isEqualString(modelName,
"AstroDomeEntranceTower") )
41 if ( MR::isEqualString(modelName,
"AstroBaseC") )
43 if ( MR::isEqualString(modelName,
"AstroBaseCenterA") )
45 if ( MR::isEqualString(modelName,
"AstroBaseCenterTop") )
47 if ( MR::isEqualString(modelName,
"AstroRotateStepB") )
56 s32 getNumGrandStarForOpen(
const char *pName, s32 domeId) {
69 MR::getJMapInfoArg0NoInit(rIter, &domeId);
72 MR::getObjectName(&objName, rIter);
73 const char* modelName = AstroMapObjFunction::getModelName(objName, domeIdx);
74 pList->addArchive(modelName);
76 if (MR::isEqualString(modelName,
"AstroDomeEntrance")) {
77 pList->addArchive(
"GalaxyNamePlate");
78 pList->addArchive(cAstroNamePlateArcName);
83 pList->addArchive(
"GalaxyNamePlate");
84 pList->addArchive(cAstroNamePlateArcName);
87bool AstroMapObjFunction::isAlreadyRevival(
const char *pName, s32 domeId) {
88 if (MR::isEqualString(pName,
"AstroChildRoom")) {
89 return MR::isOnGameEventFlagChildsRoom();
92 if (MR::isEqualString(pName,
"TridentPlanet")) {
93 return MR::isOnGameEventFlagGreenDriver();
96 s32 openNum = AstroDemoFunction::getOpenedAstroDomeNum();
97 return openNum >= ::getNumGrandStarForRevival(pName, domeId);
100bool AstroMapObjFunction::isEnableRevival(
const char *pName, s32 domeId) {
101 if (MR::isEqualString(pName,
"AstroChildRoom")) {
105 s32 openNum = AstroDemoFunction::getOpenedAstroDomeNum();
106 return ::getNumGrandStarForRevival(pName, domeId) == openNum + 1;
109bool AstroMapObjFunction::isAlreadyOpen(
const char *pName, s32 domeId) {
110 if (MR::isEqualString(pName,
"AstroLibrary")) {
111 return MR::isOnGameEventFlagLibraryRoom();
114 s32 openNum = AstroDemoFunction::getOpenedAstroDomeNum();
116 return openNum >= ::getNumGrandStarForOpen(pName, domeId);
119bool AstroMapObjFunction::isEnableOpen(
const char *pName, s32 domeId) {
120 s32 openNum = AstroDemoFunction::getOpenedAstroDomeNum();
121 return ::getNumGrandStarForOpen(pName, domeId) == openNum + 1;
124s32 AstroMapObjFunction::getDomeIdFromArg0(
const JMapInfoIter &rIter) {
126 MR::getJMapInfoArg0NoInit(rIter, &domeId);
130const char* AstroMapObjFunction::getModelName(
const char *pName, s32 domeIdx) {
131 const char** tbl =
nullptr;
133 if (MR::isEqualString(pName,
"AstroDome")) {
134 tbl = cAstroDomeNameTable;
136 else if (MR::isEqualString(pName,
"AstroDomeSky")) {
137 tbl = cAstroDomeSkyNameTable;
139 else if (MR::isEqualString(pName,
"AstroDomeEntrance")) {
140 tbl = cAstroDomeEntranceNameTable;
142 else if (MR::isEqualString(pName,
"AstroStarPlate")) {
143 tbl = cAstroStarPlateNameTable;
146 if (tbl !=
nullptr) {
147 return tbl[domeIdx - 1];
155const JMapInfo* AstroMapObjFunction::createAstroNamePlateParser() {
157 snprintf(buf, 0x40,
"%s.arc", cAstroNamePlateArcName);
158 return MR::createCsvParser(buf, cAstroNamePlateFileName);
Stores archive names of NameObjs.