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{
12
13protected:
14 class ResHolder : public sead::IDisposer
15 {
16 public:
18
23
24 const sead::SafeString& getKey() const
25 {
26 return mKey;
27 }
28
30 {
31 return mArchiveRes;
32 }
33
34 private:
37
38 friend class ResMgr;
39 };
40 static_assert(sizeof(ResHolder) == 0x40);
41
43 {
44 public:
45 CourseArchiveResHolder(sead::ArchiveRes* archive);
46
48 {
49 ResMgr::instance()->mCourseArchiveRes = nullptr;
50 }
51
52 private:
54
55 friend class ResMgr;
56 };
57 static_assert(sizeof(CourseArchiveResHolder) == 0x14);
58
59public:
61
62public:
63 bool loadCourseResPack(const sead::SafeString& level_name, sead::Heap* heap);
64
66 {
67 return mCourseArchiveRes != nullptr;
68 }
69
71 {
72 return mCourseArchiveRes;
73 }
74
75 void* getFileFromCourseArchiveRes(const sead::SafeString& filename, u32* length = nullptr) const;
76
77public:
78 bool loadArchiveRes(const sead::SafeString& key, const sead::SafeString& archive_path, sead::Heap* heap, bool decompress);
79
80 bool isArchiveResLoaded(const sead::SafeString& key) const;
81
82 sead::ArchiveRes* getArchiveRes(const sead::SafeString& key) const;
83
84 void* getFileFromArchiveRes(const sead::SafeString& key, const sead::SafeString& filename, u32* length = nullptr) const;
85 void* getFileFromArchiveRes(sead::ArchiveRes* archive, const sead::SafeString& filename, u32* length = nullptr) const;
86
87 bool unload(const sead::SafeString& key);
88
89public:
90 void add(const sead::SafeString& key, sead::ArchiveRes* archive, sead::Heap* heap);
91 void remove(const sead::SafeString& key);
92
93protected:
94 sead::ArchiveRes* loadCourseResPackImpl_(const sead::SafeString& level_name, const sead::SafeString& archive_path, sead::Heap* heap, bool decompress);
95
96 static sead::ArchiveRes* loadArchiveResImpl_(const sead::SafeString& archive_path, sead::Heap* heap, sead::Decompressor* decompressor);
97 static sead::ArchiveRes* loadArchiveResImpl_(const sead::SafeString& archive_path, sead::Heap* heap);
98
99 static void* getFileFromArchiveResImpl_(sead::ArchiveRes* archive, const sead::SafeString& filename, u32* length);
100
101protected:
105};
106static_assert(sizeof(ResMgr) == 0x442C);
Definition ResMgr.h:43
~CourseArchiveResHolder() override
Definition ResMgr.h:47
sead::ArchiveRes * mArchiveRes
Definition ResMgr.h:53
CourseArchiveResHolder(sead::ArchiveRes *archive)
Definition ResMgr.h:10
sead::ArchiveRes * getCourseArchiveRes() const
Definition ResMgr.h:70
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:104
bool loadCourseResPack(const sead::SafeString &level_name, sead::Heap *heap)
sead::FixedStrTreeMap< 32, ResHolder *, 256 > mResHolderTreeMap
Definition ResMgr.h:103
static sead::ArchiveRes * loadArchiveResImpl_(const sead::SafeString &archive_path, sead::Heap *heap, sead::Decompressor *decompressor)
bool isCourseArchiveResLoaded() const
Definition ResMgr.h:65
sead::ArchiveRes * loadCourseResPackImpl_(const sead::SafeString &level_name, const sead::SafeString &archive_path, sead::Heap *heap, bool decompress)
sead::ArchiveRes * mCourseArchiveRes
Definition ResMgr.h:102
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)