New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
ResMgr.h
Go to the documentation of this file.
1#pragma once
2
3#include <container/seadStrTreeMap.h>
4#include <heap/seadDisposer.h>
5#include <prim/seadSafeString.h>
6#include <resource/seadArchiveRes.h>
7#include <resource/seadSZSDecompressor.h>
8
9class ResMgr
10{
11 // sInstance Address: 0x101E7D94
13
14protected:
15 class ResHolder : public sead::IDisposer
16 {
17 public:
19
24
25 const sead::SafeString& getKey() const
26 {
27 return mKey;
28 }
29
31 {
32 return mArchiveRes;
33 }
34
35 private:
38
39 friend class ResMgr;
40 };
41 static_assert(sizeof(ResHolder) == 0x40);
42
44 {
45 public:
46 CourseArchiveResHolder(sead::ArchiveRes* archive);
47
49 {
50 ResMgr::instance()->mCourseArchiveRes = nullptr;
51 }
52
53 private:
55
56 friend class ResMgr;
57 };
58 static_assert(sizeof(CourseArchiveResHolder) == 0x14);
59
60public:
62
63public:
64 bool loadCourseResPack(const sead::SafeString& level_name, sead::Heap* heap);
65
67 {
68 return mCourseArchiveRes != nullptr;
69 }
70
72 {
73 return mCourseArchiveRes;
74 }
75
76 // Address: 0x029D33EC
77 void* getFileFromCourseArchiveRes(const sead::SafeString& filename, u32* length = nullptr) const;
78
79public:
80 bool loadArchiveRes(const sead::SafeString& key, const sead::SafeString& archive_path, sead::Heap* heap, bool decompress);
81
82 bool isArchiveResLoaded(const sead::SafeString& key) const;
83
84 // Address: 0x029D3CA0
85 sead::ArchiveRes* getArchiveRes(const sead::SafeString& key) const;
86
87 void* getFileFromArchiveRes(const sead::SafeString& key, const sead::SafeString& filename, u32* length = nullptr) const;
88 void* getFileFromArchiveRes(sead::ArchiveRes* archive, const sead::SafeString& filename, u32* length = nullptr) const;
89
90 bool unload(const sead::SafeString& key);
91
92public:
93 void add(const sead::SafeString& key, sead::ArchiveRes* archive, sead::Heap* heap);
94 void remove(const sead::SafeString& key);
95
96protected:
97 sead::ArchiveRes* loadCourseResPackImpl_(const sead::SafeString& level_name, const sead::SafeString& archive_path, sead::Heap* heap, bool decompress);
98
99 static sead::ArchiveRes* loadArchiveResImpl_(const sead::SafeString& archive_path, sead::Heap* heap, sead::Decompressor* decompressor);
100 static sead::ArchiveRes* loadArchiveResImpl_(const sead::SafeString& archive_path, sead::Heap* heap);
101
102 // Address: 0x029D338C
103 static void* getFileFromArchiveResImpl_(sead::ArchiveRes* archive, const sead::SafeString& filename, u32* length);
104
105protected:
109};
110static_assert(sizeof(ResMgr) == 0x442C);
Definition ResMgr.h:44
~CourseArchiveResHolder() override
Definition ResMgr.h:48
sead::ArchiveRes * mArchiveRes
Definition ResMgr.h:54
CourseArchiveResHolder(sead::ArchiveRes *archive)
Definition ResMgr.h:10
sead::ArchiveRes * getCourseArchiveRes() const
Definition ResMgr.h:71
bool isArchiveResLoaded(const sead::SafeString &key) const
void * getFileFromArchiveRes(sead::ArchiveRes *archive, const sead::SafeString &filename, u32 *length=nullptr) const
sead::SZSDecompressor * mSZSDecompressor
Definition ResMgr.h:108
bool loadCourseResPack(const sead::SafeString &level_name, sead::Heap *heap)
sead::FixedStrTreeMap< 32, ResHolder *, 256 > mResHolderTreeMap
Definition ResMgr.h:107
static sead::ArchiveRes * loadArchiveResImpl_(const sead::SafeString &archive_path, sead::Heap *heap, sead::Decompressor *decompressor)
bool isCourseArchiveResLoaded() const
Definition ResMgr.h:66
sead::ArchiveRes * loadCourseResPackImpl_(const sead::SafeString &level_name, const sead::SafeString &archive_path, sead::Heap *heap, bool decompress)
sead::ArchiveRes * mCourseArchiveRes
Definition ResMgr.h:106
void add(const sead::SafeString &key, sead::ArchiveRes *archive, sead::Heap *heap)
sead::ArchiveRes * getArchiveRes(const sead::SafeString &key) const
void * getFileFromCourseArchiveRes(const sead::SafeString &filename, u32 *length=nullptr) const
static void * getFileFromArchiveResImpl_(sead::ArchiveRes *archive, const sead::SafeString &filename, u32 *length)
static sead::ArchiveRes * loadArchiveResImpl_(const sead::SafeString &archive_path, sead::Heap *heap)
bool loadArchiveRes(const sead::SafeString &key, const sead::SafeString &archive_path, sead::Heap *heap, bool decompress)
bool unload(const sead::SafeString &key)
void * getFileFromArchiveRes(const sead::SafeString &key, const sead::SafeString &filename, u32 *length=nullptr) const
void remove(const sead::SafeString &key)