1#include "Game/NameObj/NameObjExecuteHolder.hpp"
2#include "Game/NameObj/NameObjAdaptor.hpp"
3#include "Game/System/ResourceHolder.hpp"
4#include "Game/System/ResourceHolderManager.hpp"
5#include "Game/Util/ObjUtil.hpp"
12 const JMapInfo* tryCreateCsvParserLocal(
const ResourceHolder* pHolder,
const char* pArchive, va_list pFormat) NO_INLINE {
14 vsnprintf(buf, 0x100, pArchive, pFormat);
16 if (!pHolder->mFileInfoTable->isExistRes(buf)) {
21 inf->attach(pHolder->mFileInfoTable->getRes(buf));
27 void connectToScene(
LiveActor *pActor,
int a2,
int a3,
int a4,
int a5) {
28 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), a2, a3, a4, a5);
31 void connectToScene(
NameObj *pObj,
int a2,
int a3,
int a4,
int a5) {
32 MR::registerNameObjToExecuteHolder(pObj, a2, a3, a4, a5);
33 MR::connectToSceneTemporarily(pObj);
34 MR::connectToDrawTemporarily(pObj);
37 void connectToSceneCollisionMapObj(
LiveActor *pActor) {
38 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x1E, 2, 8, -1);
41 void connectToSceneCollisionMapObjMovementCalcAnim(
LiveActor *pActor) {
42 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x1E, 2, -1, -1);
45 void connectToSceneCollisionMapObjWeakLight(
LiveActor *pActor) {
46 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x1E, 2, 9, -1);
49 void connectToSceneCollisionMapObjStrongLight(
LiveActor *pActor) {
50 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x1E, 2, 0xA, -1);
53 void connectToSceneCollisionEnemy(
LiveActor *pActor) {
54 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x1F, 3, 0x12, -1);
57 void connectToSceneCollisionEnemyMovement(
NameObj *pObj) {
58 MR::registerNameObjToExecuteHolder(pObj, 0x1F, -1, -1, -1);
59 MR::connectToSceneTemporarily(pObj);
60 MR::connectToDrawTemporarily(pObj);
63 void connectToSceneCollisionEnemyStrongLight(
LiveActor *pActor) {
64 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x1F, 3, 0xA, -1);
67 void connectToSceneCollisionEnemyNoShadowedMapObjStrongLight(
LiveActor *pActor) {
68 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x1F, 3, 0xC, -1);
71 void connectToSceneNpc(
LiveActor *pActor) {
72 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x28, 6, 0x10, -1);
75 void connectToSceneNpcMovement(
LiveActor *pActor) {
76 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x28, -1, -1, -1);
79 void connectToSceneRide(
LiveActor *pActor) {
80 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x29, 7, 0x11, -1);
83 void connectToSceneEnemy(
LiveActor *pActor) {
84 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x2A, 8, 0x12, -1);
87 void connectToSceneEnemyMovement(
NameObj *pObj) {
88 MR::registerNameObjToExecuteHolder(pObj, 0x2A, -1, -1, -1);
89 MR::connectToSceneTemporarily(pObj);
90 MR::connectToDrawTemporarily(pObj);
93 void connectToSceneMapObj(
LiveActor *pActor) {
94 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x22, 5, 8, -1);
97 void connectToSceneMapObjMovement(
NameObj *pObj) {
98 MR::registerNameObjToExecuteHolder(pObj, 0x22, -1, -1, -1);
99 MR::connectToSceneTemporarily(pObj);
100 MR::connectToDrawTemporarily(pObj);
103 void connectToSceneMapObjMovementCalcAnim(
NameObj *pObj) {
104 MR::registerNameObjToExecuteHolder(pObj, 0x22, 5, -1, -1);
105 MR::connectToSceneTemporarily(pObj);
106 MR::connectToDrawTemporarily(pObj);
109 void connectToSceneMapObjNoMovement(
LiveActor *pActor) {
110 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), -1, 5, 8, -1);
113 void connectToSceneMapObjNoCalcAnim(
LiveActor *pActor) {
114 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x22, -1, 8, -1);
117 void connectToSceneMapObjNoCalcAnimStrongLight(
LiveActor *pActor) {
118 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x22, -1, 0xA, -1);
121 void connectToSceneMapObjDecoration(
LiveActor *pActor) {
122 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x23, 0xB, 8, -1);
125 void connectToSceneMapObjDecorationStrongLight(
LiveActor *pActor) {
126 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x23, 0xB, 0xA, -1);
129 void connectToSceneMapObjDecorationMovement(
NameObj *pObj) {
130 MR::registerNameObjToExecuteHolder(pObj, 0x23, -1, -1, -1);
131 MR::connectToSceneTemporarily(pObj);
132 MR::connectToDrawTemporarily(pObj);
135 void connectToSceneMapObjStrongLight(
LiveActor *pActor) {
136 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x22, 5, 0xA, -1);
139 void connectToSceneMapParts(
LiveActor *pActor) {
140 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x1C, 0, 8, -1);
143 void connectToScenePlanet(
LiveActor *pActor) {
144 if (MR::isExistIndirectTexture(pActor)) {
145 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x1D, 1, 0x1D, -1);
148 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x1D, 1, 4, -1);
152 void connectToSceneEnvironment(
LiveActor *pActor) {
153 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x21, 4, 6, -1);
156 void connectToSceneEnvironmentStrongLight(
LiveActor *pActor) {
157 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x21, 4, 7, -1);
160 void connectToClippedMapParts(
LiveActor *pActor) {
161 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x1C, 0, 0, -1);
164 void connectToSceneEnemyDecoration(
LiveActor *pActor) {
165 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x2B, 0xB, 0x13, -1);
168 void connectToSceneEnemyDecorationMovement(
NameObj *pObj) {
169 MR::registerNameObjToExecuteHolder(pObj, 0x2B, -1, -1, -1);
170 MR::connectToSceneTemporarily(pObj);
171 MR::connectToDrawTemporarily(pObj);
174 void connectToSceneEnemyDecorationMovementCalcAnim(
NameObj *pObj) {
175 MR::registerNameObjToExecuteHolder(pObj, 0x2B, 0x11, -1, -1);
176 MR::connectToSceneTemporarily(pObj);
177 MR::connectToDrawTemporarily(pObj);
180 void connectToSceneItem(
LiveActor *pActor) {
181 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x2C, 0x10, 0xD, -1);
184 void connectToSceneItemStrongLight(
LiveActor *pActor) {
185 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x2C, 0x10, 0xF, -1);
188 void connectToSceneIndirectEnemy(
LiveActor *pActor) {
189 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x2A, 8, 0x1C, -1);
192 void connectToSceneIndirectNpc(
LiveActor *pActor) {
193 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x28, 6, 0x1B, -1);
196 void connectToSceneIndirectMapObj(
LiveActor *pActor) {
197 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x22, 5, 0x19, -1);
200 void connectToSceneIndirectMapObjStrongLight(
LiveActor *pActor) {
201 MR::registerNameObjToExecuteHolder(
reinterpret_cast<NameObj*
>(pActor), 0x22, 5, 0x1A, -1);
204 void connectToSceneScreenEffectMovement(
NameObj *pObj) {
205 MR::registerNameObjToExecuteHolder(pObj, 3, -1, -1, -1);
206 MR::connectToSceneTemporarily(pObj);
207 MR::connectToDrawTemporarily(pObj);
210 void connectToSceneAreaObj(
NameObj *pObj) {
211 MR::registerNameObjToExecuteHolder(pObj, 0xD, -1, -1, -1);
212 MR::connectToSceneTemporarily(pObj);
213 MR::connectToDrawTemporarily(pObj);
218 adaptor->connectToDraw(rFunctor);
224 adaptor->connectToDraw(rFunctor);
225 MR::registerNameObjToExecuteHolder(adaptor, -1, -1, -1, 0x36);
226 MR::connectToSceneTemporarily(adaptor);
227 MR::connectToDrawTemporarily(adaptor);
231 ResourceHolder* createAndAddResourceHolder(
const char* pResource) {
235 void* loadResourceFromArc(
const char* pArchive,
const char* pFile) {
237 return holder->mFileInfoTable->getRes(pFile);
240 bool isExistResourceInArc(
const char* pArchive,
const char* pFile) {
242 return holder->mFileInfoTable->isExistRes(pFile);
245 const ResTIMG* loadTexFromArc(
const char* pArchive,
const char* pFile) {
246 return static_cast<const ResTIMG*
>(loadResourceFromArc(pArchive, pFile));
249 const ResTIMG* loadTexFromArc(
const char* pArchive) {
251 snprintf(arcBuf, 0x100,
"%s.arc", pArchive);
253 snprintf(texBuf, 0x100,
"%s.bti", pArchive);
254 return loadTexFromArc(arcBuf, texBuf);
259 va_start(list, pFormat);
260 return ::tryCreateCsvParserLocal(pHolder, pFormat, list);
263 const JMapInfo* createCsvParser(
const char *pArchive,
const char *pFormat, ...) {
265 return MR::createCsvParser(holder, pFormat);
270 s32 getCsvDataElementNum(
const JMapInfo *pMapInfo) {
271 if (pMapInfo->mData !=
nullptr) {
272 return pMapInfo->mData->mNumEntries;
278 void getCsvDataStr(
const char **pOut ,
const JMapInfo *pMapInfo,
const char *pKey, s32 idx) {
279 int v7 = pMapInfo->searchItemInfo(pKey);
282 pMapInfo->getValueFast(idx, v7, pOut);
286 void getCsvDataStrOrNULL(
const char **pOut,
const JMapInfo *pMapInfo,
const char *pKey, s32 idx) {
287 getCsvDataStr(pOut, pMapInfo, pKey, idx);
293 void getCsvDataS32(s32 *pOut,
const JMapInfo *pMapInfo,
const char *pKey, s32 idx) {
294 pMapInfo->getValue<s32>(idx, pKey, pOut);
297 void getCsvDataU8(u8 *pOut,
const JMapInfo *pMapInfo,
const char *pKey, s32 idx) {
299 pMapInfo->getValue<s32>(idx, pKey, &val);
304 void getCsvDataF32(f32 *pOut,
const JMapInfo *pMapInfo,
const char *pKey, s32 idx) {
305 int v7 = pMapInfo->searchItemInfo(pKey);
308 *pOut = *((f32*)(pMapInfo->mData->mNumEntries + pMapInfo->mData->mDataOffset + idx * (pMapInfo->mData->mEntrySize +
static_cast<const JMapItem*
>(&pMapInfo->mData->mItems)[v7].mOffsData)));
The basis of a drawable actor that can contain states (see: Nerve)
Implementation of a NameObj that stores function pointers to movement, calcAnim, calcView,...
The most basic form of an object.