1#include "Game/Map/PlanetMapCreator.hpp"
2#include "Game/Scene/SceneObjHolder.hpp"
3#include "Game/NameObj/NameObjFactory.hpp"
4#include "Game/Util.hpp"
10PlanetMapCreator::PlanetMapCreator(
const char *pName) :
NameObj(pName) {
12 const JMapInfo* iter = MR::createCsvParser(sArcName, sFileName);
13 mTableCount = MR::getCsvDataElementNum(iter);
15 createPlanetMapDataTable((
JMapInfo*)iter);
24 bool isForceLow = isScenarioForceLow(planetData);
27 pArchiveList->addArchive(planetData->mData[0]);
30 const char* planetName = planetData->mPlanetName;
32 pArchiveList->addArchive(planetName);
34 const char* tmp_1 = planetData->mData[0];
37 pArchiveList->addArchive(tmp_1);
40 const char* tmp_2 = planetData->mData[1];
43 pArchiveList->addArchive(tmp_2);
46 const char* tmp_3 = planetData->mData[2];
49 pArchiveList->addArchive(tmp_3);
52 const char* tmp_4 = planetData->mData[3];
55 pArchiveList->addArchive(tmp_4);
58 const char* tmp_5 = planetData->mData[4];
61 pArchiveList->addArchive(tmp_5);
64 const char* asdf = planetData->mPlanetName;
66 for (
int i = 0; i < 0xD; i++) {
67 if (MR::isEqualString(asdf, sUniquePlanetUniqueArchiveName[i]._0)) {
68 pArchiveList->addArchive(sUniquePlanetUniqueArchiveName[i]._4);
75void PlanetMapCreator::createPlanetMapDataTable(
JMapInfo *pInfo) {
76 for (
int i = 0; i < mTableCount; i++) {
78 mPlanetMapData[i] = data;
79 addTableData(pInfo, i);
83void PlanetMapCreator::addTableData(
const JMapInfo *pInfo, s32 idx) {
85 MR::getCsvDataStr(&curData->mPlanetName, pInfo,
"PlanetName", idx);
86 makeSubModelName(&curData->mData[0], pInfo, idx,
"LowFlag",
"Low");
87 makeSubModelName(&curData->mData[1], pInfo, idx,
"MiddleFlag",
"Middle");
88 makeSubModelName(&curData->mData[2], pInfo, idx,
"BloomFlag",
"Bloom");
89 makeSubModelName(&curData->mData[3], pInfo, idx,
"WaterFlag",
"Water");
90 makeSubModelName(&curData->mData[4], pInfo, idx,
"IndirectFlag",
"Indirect");
92 for (
int i = 0; i < 5; i++) {
93 if (curData->mData[i]) {
94 if (!MR::isExistModel(curData->mData[i])) {
95 curData->mData[i] = 0;
100 for (
int i = 0; i < 8; i++) {
102 snprintf(data, 0x20,
"ForceLowScenarioName%d", i);
103 MR::getCsvDataStr(&curData->mForceScenarioData[i], pInfo, data, idx);
107PlanetMapData* PlanetMapCreator::getTableData(
const char *pName)
const {
108 for (
int i = 0; i < mTableCount; i++) {
109 if (MR::isEqualString(pName, mPlanetMapData[i]->mPlanetName)) {
110 return mPlanetMapData[i];
117bool PlanetMapCreator::isScenarioForceLow(
const PlanetMapData *pData)
const {
118 bool isForce = isDataForceLow(pData);
125 snprintf(name, 0x40,
"%s_%d", MR::getCurrentStageName(), MR::getCurrentScenarioNo());
127 for (
int i = 0; i < 8; i++) {
128 if (MR::isEqualString(pData->mForceScenarioData[i],
"Low")) {
132 if (MR::isEqualString(name, pData->mForceScenarioData[i])) {
141 reinterpret_cast<PlanetMapCreator*
>(MR::getSceneObjHolder()->getObj(SceneObj_PlanetMapCreator))->makeArchiveListPlanet(pArchiveList, rIter, pName);
146bool PlanetMapCreatorFunction::isLoadArchiveAfterScenarioSelected(
const char *pArchive) {
148 bool doesHaveTableData = creator->getTableData(pArchive);
150 return (!doesHaveTableData) ? false : isDataForceLow(
reinterpret_cast<PlanetMapCreator*
>(MR::getSceneObjHolder()->getObj(SceneObj_PlanetMapCreator))->getTableData(pArchive));
155bool PlanetMapCreatorFunction::isRegisteredObj(
const char *pArchive) {
157 return creator->getTableData(pArchive);
160PlanetMapCreator::~PlanetMapCreator() {
165const char* someFunction() {
166 return sUniquePlanetCreateFuncTable[0].mName;
Stores archive names of NameObjs.
The most basic form of an object.