This commit is contained in:
robojumper
2024-06-02 00:13:33 +02:00
parent 7d8831508e
commit 8d6e8826d3
6 changed files with 111 additions and 99 deletions
@@ -0,0 +1,41 @@
#ifndef CURRENT_STAGE_ARC_MANAGER_H
#define CURRENT_STAGE_ARC_MANAGER_H
#include <d/d_rawarchive.h>
#include <egg/core/eggHeap.h>
#include <sized_string.h>
class CurrentStageArcManager {
CurrentStageArcManager();
virtual ~CurrentStageArcManager();
SizedString<32> mStageName;
SizedString<32> mCurrentLoadingStageArcName;
SizedString<32> mStageExtraLayerArcName;
dRawArcTable_c mArcTable;
static CurrentStageArcManager *sInstance;
static bool create(EGG::Heap *heap);
void init(EGG::Heap *heap);
bool setStage(const char *stage);
bool decrement();
void *getData(const char *fileName);
void *getFileFromCurrentLay0Arc(const char *fileName);
bool loadFileFromExtraLayerArc(int layer);
bool unloadExtraLayerArc();
bool loadRoomArc(int room);
bool addEntryFromSuperArc(const char *name, void *data);
bool unloadRoomArc(int room);
bool decrement(const char *path);
void *loadFromRoomArc(int roomId, const char *fileName);
void *getDataFromRoomArc(int roomId, const char *fileName);
const char *getCurrentStageDirectory();
const char *getRoomArcDirectory(int room) const;
static EGG::ExpHeap *getHeap();
};
#endif
@@ -0,0 +1,29 @@
#ifndef LAYOUT_ARC_MANAGER_H
#define LAYOUT_ARC_MANAGER_H
#include <d/d_rawarchive.h>
#include <egg/core/eggHeap.h>
#include <sized_string.h>
class LayoutArcManager {
LayoutArcManager();
virtual ~LayoutArcManager();
dRawArcTable_c mArcTable;
static LayoutArcManager *sInstance;
static bool create(EGG::Heap *heap);
void init(EGG::Heap *heap);
bool loadLayoutArcFromDisk(const char *object, EGG::Heap *heap);
void ensureLoaded1(const char *object);
void ensureLoaded2(const char *object);
bool hasEntry(const char *object);
bool decrement(const char *path);
void *getData(const char *oarcName, const char *fileName);
void *getLoadedData(const char *path);
};
#endif
@@ -0,0 +1,36 @@
#ifndef OARC_MANAGER_H
#define OARC_MANAGER_H
#include <d/d_rawarchive.h>
#include <egg/core/eggHeap.h>
#include <sized_string.h>
class OarcManager {
OarcManager();
virtual ~OarcManager();
dRawArcTable_c mArcTable;
static OarcManager *sInstance;
static bool create(EGG::Heap *heap);
void init(EGG::Heap *heap);
bool checkIfObjectArcExistsOnDisk(const char *object);
bool loadObjectArcFromDisk(const char *object, EGG::Heap *heap);
bool addEntryFromSuperArc(const char *object, void *data, EGG::Heap *heap);
void ensureLoaded1(const char *object);
void ensureLoaded2(const char *object);
bool decrement(const char *path);
void *getData(const char *oarcName, const char *fileName);
void *getMdlFromArc2(const char *oarcName);
void *getMdlFromArc(const char *oarcName);
void *getZevFromArc(const char *oarcName);
void *getDzbFromArc(const char *oarcName, const char *fileName);
void *getPlcFromArc(const char *oarcName, const char *fileName);
void *getSubEntryData(const char *oarcName, const char *fileName);
};
#endif
@@ -1,42 +1,5 @@
#include <d/d_heap.h>
#include <d/d_rawarchive.h>
#include <egg/core/eggHeap.h>
// clang-format off
#include <sized_string.h>
// clang-format on
class CurrentStageArcManager {
CurrentStageArcManager();
virtual ~CurrentStageArcManager();
SizedString<32> mStageName;
SizedString<32> mCurrentLoadingStageArcName;
SizedString<32> mStageExtraLayerArcName;
dRawArcTable_c mArcTable;
static CurrentStageArcManager *sInstance;
static bool create(EGG::Heap *heap);
void init(EGG::Heap *heap);
bool setStage(const char *stage);
bool decrement();
void *getData(const char *fileName);
void *getFileFromCurrentLay0Arc(const char *fileName);
bool loadFileFromExtraLayerArc(int layer);
bool unloadExtraLayerArc();
bool loadRoomArc(int room);
bool addEntryFromSuperArc(const char *name, void *data);
bool unloadRoomArc(int room);
bool decrement(const char *path);
void *loadFromRoomArc(int roomId, const char *fileName);
void *getDataFromRoomArc(int roomId, const char *fileName);
const char *getCurrentStageDirectory();
const char *getRoomArcDirectory(int room) const;
static EGG::ExpHeap *getHeap();
};
#include <toBeSorted/arc_managers/current_stage_arc_manager.h>
CurrentStageArcManager *CurrentStageArcManager::sInstance;
@@ -54,7 +17,6 @@ void CurrentStageArcManager::init(EGG::Heap *heap) {
mArcTable.init(18, &lbl_80575250, heap);
}
bool CurrentStageArcManager::setStage(const char *newStage) {
mStageName = newStage;
@@ -103,7 +65,8 @@ bool CurrentStageArcManager::unloadExtraLayerArc() {
}
bool CurrentStageArcManager::loadRoomArc(int room) {
return (bool)mArcTable.getArcOrLoadFromDisk(getRoomArcDirectory(room), getCurrentStageDirectory(), 0, dHeap::work2Heap.heap);
return (bool)mArcTable.getArcOrLoadFromDisk(getRoomArcDirectory(room), getCurrentStageDirectory(), 0,
dHeap::work2Heap.heap);
}
bool CurrentStageArcManager::addEntryFromSuperArc(const char *path, void *data) {
@@ -1,30 +1,5 @@
#include <d/d_heap.h>
#include <d/d_rawarchive.h>
#include <egg/core/eggHeap.h>
// clang-format off
#include <sized_string.h>
// clang-format on
class LayoutArcManager {
LayoutArcManager();
virtual ~LayoutArcManager();
dRawArcTable_c mArcTable;
static LayoutArcManager *sInstance;
static bool create(EGG::Heap *heap);
void init(EGG::Heap *heap);
bool loadLayoutArcFromDisk(const char *object, EGG::Heap *heap);
void ensureLoaded1(const char *object);
void ensureLoaded2(const char *object);
bool hasEntry(const char *object);
bool decrement(const char *path);
void *getData(const char *oarcName, const char *fileName);
void *getLoadedData(const char *path);
};
#include <toBeSorted/arc_managers/layout_arc_manager.h>
LayoutArcManager *LayoutArcManager::sInstance;
+1 -33
View File
@@ -1,37 +1,5 @@
#include <d/d_heap.h>
#include <d/d_rawarchive.h>
#include <egg/core/eggHeap.h>
// clang-format off
#include <sized_string.h>
// clang-format on
class OarcManager {
OarcManager();
virtual ~OarcManager();
dRawArcTable_c mArcTable;
static OarcManager *sInstance;
static bool create(EGG::Heap *heap);
void init(EGG::Heap *heap);
bool checkIfObjectArcExistsOnDisk(const char *object);
bool loadObjectArcFromDisk(const char *object, EGG::Heap *heap);
bool addEntryFromSuperArc(const char *object, void *data, EGG::Heap *heap);
void ensureLoaded1(const char *object);
void ensureLoaded2(const char *object);
bool decrement(const char *path);
void *getData(const char *oarcName, const char *fileName);
void *getMdlFromArc2(const char *oarcName);
void *getMdlFromArc(const char *oarcName);
void *getZevFromArc(const char *oarcName);
void *getDzbFromArc(const char *oarcName, const char *fileName);
void *getPlcFromArc(const char *oarcName, const char *fileName);
void *getSubEntryData(const char *oarcName, const char *fileName);
};
#include <toBeSorted/arc_managers/oarc_manager.h>
OarcManager *OarcManager::sInstance;