mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 23:05:11 -04:00
116 lines
3.8 KiB
C++
116 lines
3.8 KiB
C++
#ifndef D_D_RESORCE_H
|
|
#define D_D_RESORCE_H
|
|
|
|
#include "dolphin/types.h"
|
|
#include "global.h"
|
|
#include "JSystem/JKernel/JKRMemArchive.h"
|
|
|
|
class JKRArchive;
|
|
class JKRHeap;
|
|
class JKRSolidHeap;
|
|
class mDoDvdThd_mountArchive_c;
|
|
|
|
class dRes_info_c {
|
|
public:
|
|
dRes_info_c();
|
|
~dRes_info_c();
|
|
int set(char const*, char const*, u8, JKRHeap*);
|
|
int loadResource();
|
|
int setRes(JKRArchive*, JKRHeap*);
|
|
int setRes();
|
|
static void dump_long(dRes_info_c*, int);
|
|
static void dump(dRes_info_c*, int);
|
|
|
|
void* getRes(u32 resIdx) { return *(mRes + resIdx); }
|
|
int getCount() { return mCount; }
|
|
char* getArchiveName() { return mArchiveName; }
|
|
mDoDvdThd_mountArchive_c* getDMCommand() { return mpDMCommand; }
|
|
JKRArchive* getArchive() { return mpArchive; }
|
|
void incCount() { mCount++; }
|
|
u16 decCount() {
|
|
return --mCount;
|
|
}
|
|
|
|
private:
|
|
/* 0x00 */ char mArchiveName[14];
|
|
/* 0x0E */ u16 mCount;
|
|
/* 0x10 */ mDoDvdThd_mountArchive_c* mpDMCommand;
|
|
/* 0x14 */ JKRArchive* mpArchive;
|
|
/* 0x18 */ JKRHeap* mpParentHeap;
|
|
/* 0x1C */ JKRSolidHeap* mDataHeap;
|
|
/* 0x20 */ void** mRes;
|
|
}; // Size: 0x24
|
|
|
|
STATIC_ASSERT(sizeof(dRes_info_c) == 0x24);
|
|
|
|
class dRes_control_c {
|
|
public:
|
|
dRes_control_c() {}
|
|
~dRes_control_c();
|
|
static int setRes(char const*, dRes_info_c*, int, char const*, u8, JKRHeap*);
|
|
static int syncRes(char const*, dRes_info_c*, int);
|
|
static int deleteRes(char const*, dRes_info_c*, int);
|
|
static void* getRes(char const*, char const*, dRes_info_c*, int);
|
|
static dRes_info_c* getResInfo(char const*, dRes_info_c*, int);
|
|
static dRes_info_c* newResInfo(dRes_info_c*, int);
|
|
static dRes_info_c* getResInfoLoaded(char const*, dRes_info_c*, int);
|
|
static void* getRes(char const*, s32, dRes_info_c*, int);
|
|
static void* getIDRes(char const*, u16, dRes_info_c*, int);
|
|
static int syncAllRes(dRes_info_c*, int);
|
|
int setObjectRes(char const*, void*, u32, JKRHeap*);
|
|
int setStageRes(char const*, JKRHeap*);
|
|
void dump();
|
|
int getObjectResName2Index(char const*, char const*);
|
|
|
|
int setObjectRes(const char* name, u8 direction, JKRHeap* heap) {
|
|
return setRes(name, &mObjectInfo[0], ARRAY_SIZE(mObjectInfo), "/res/Object/", direction, heap);
|
|
}
|
|
|
|
void* getObjectRes(const char* arcName, const char* resName) {
|
|
return getRes(arcName, resName, &mObjectInfo[0], ARRAY_SIZE(mObjectInfo));
|
|
}
|
|
|
|
void* getObjectRes(const char* arcName, s32 index) {
|
|
return getRes(arcName, index, &mObjectInfo[0], ARRAY_SIZE(mObjectInfo));
|
|
}
|
|
|
|
void* getObjectIDRes(const char* arcName, u16 id) {
|
|
return getIDRes(arcName, id, &mObjectInfo[0], ARRAY_SIZE(mObjectInfo));
|
|
}
|
|
|
|
int syncObjectRes(const char* name) {
|
|
return syncRes(name, &mObjectInfo[0], ARRAY_SIZE(mObjectInfo));
|
|
}
|
|
|
|
int syncStageRes(const char* name) {
|
|
return syncRes(name, &mStageInfo[0], ARRAY_SIZE(mStageInfo));
|
|
}
|
|
|
|
int syncAllObjectRes() { return syncAllRes(&mObjectInfo[0], ARRAY_SIZE(mObjectInfo)); }
|
|
|
|
int deleteObjectRes(const char* name) {
|
|
return deleteRes(name, &mObjectInfo[0], ARRAY_SIZE(mObjectInfo));
|
|
}
|
|
|
|
int deleteStageRes(const char* name) {
|
|
return deleteRes(name, &mStageInfo[0], ARRAY_SIZE(mStageInfo));
|
|
}
|
|
|
|
void* getStageRes(const char* arcName, const char* resName) {
|
|
return getRes(arcName, resName, &mStageInfo[0], ARRAY_SIZE(mStageInfo));
|
|
}
|
|
|
|
dRes_info_c* getObjectResInfo(const char* arcName) {
|
|
return getResInfo(arcName, &mObjectInfo[0], ARRAY_SIZE(mObjectInfo));
|
|
}
|
|
|
|
dRes_info_c* getStageResInfo(const char* arcName) {
|
|
return getResInfo(arcName, &mStageInfo[0], ARRAY_SIZE(mStageInfo));
|
|
}
|
|
|
|
/* 0x0000 */ dRes_info_c mObjectInfo[64];
|
|
/* 0x1200 */ dRes_info_c mStageInfo[64];
|
|
}; // Size: 0x1B00
|
|
|
|
#endif /* D_D_RESORCE_H */
|