mirror of https://github.com/zeldaret/botw.git
title resource stuff
This commit is contained in:
parent
490077a463
commit
36d114214d
|
@ -88340,15 +88340,15 @@ Address,Quality,Size,Name
|
|||
0x00000071010a2fa0,O,000188,_ZN4ksys2ui17LayoutResourceMgr18checkLangFontReadyEv
|
||||
0x00000071010a305c,O,000136,_ZNK4ksys2ui17LayoutResourceMgr24checkExtraLangFontsReadyEv
|
||||
0x00000071010a30e4,O,000136,_ZN4ksys2ui17LayoutResourceMgr11loadVersionEv
|
||||
0x00000071010a316c,U,000372,LayoutResourceMgr::ready_1
|
||||
0x00000071010a316c,W,000372,_ZN4ksys2ui17LayoutResourceMgr17checkVersionReadyEv
|
||||
0x00000071010a32e0,U,001584,LayoutResourceMgr::loadALotOfResources
|
||||
0x00000071010a3910,W,000064,_ZN4sead12PerfJobQueue13measureEndRunEv
|
||||
0x00000071010a3950,U,000072,LayoutResourceMgr::loadLayoutCommonArchive
|
||||
0x00000071010a3950,W,000072,_ZN4ksys2ui17LayoutResourceMgr23loadCommonLayoutArchiveEPN4sead7ExpHeapE
|
||||
0x00000071010a3998,U,000288,LayoutResourceMgr::loadArcResource
|
||||
0x00000071010a3ab8,U,000104,LayoutResourceMgr::deleteSOmething
|
||||
0x00000071010a3b20,U,000208,LayoutResourceMgr::loadTitleResource
|
||||
0x00000071010a3bf0,U,000016,LayoutResourceMgr::loadTitleResource2
|
||||
0x00000071010a3c00,U,000104,LayoutResourceMgr::deleteSomethingElse
|
||||
0x00000071010a3b20,O,000208,_ZN4ksys2ui17LayoutResourceMgr15loadTitleLayoutEPN4sead4HeapE
|
||||
0x00000071010a3bf0,O,000016,_ZN4ksys2ui17LayoutResourceMgr23loadTitleLayoutResourceEv
|
||||
0x00000071010a3c00,O,000104,_ZN4ksys2ui17LayoutResourceMgr25unloadTitleLayoutResourceEv
|
||||
0x00000071010a3c68,U,000264,LayoutResourceMgr::x
|
||||
0x00000071010a3d70,U,000076,LayoutResourceMgr::x_0
|
||||
0x00000071010a3dbc,U,000068,LayoutResourceMgr::checkHorse
|
||||
|
|
Can't render this file because it is too large.
|
|
@ -1,8 +1,13 @@
|
|||
#pragma once
|
||||
|
||||
#include <container/seadTList.h>
|
||||
#include <prim/seadSafeString.h>
|
||||
#include "KingSystem/Utils/Types.h"
|
||||
|
||||
namespace sead {
|
||||
class ExpHeap;
|
||||
}
|
||||
|
||||
namespace ksys::ui {
|
||||
|
||||
class ArcResourceMgr {
|
||||
|
@ -10,6 +15,8 @@ public:
|
|||
ArcResourceMgr() = default;
|
||||
virtual ~ArcResourceMgr();
|
||||
|
||||
virtual void loadArchive(sead::ExpHeap* heap, const sead::SafeString& path);
|
||||
|
||||
private:
|
||||
// TODO: fields
|
||||
/* sead::TList */
|
||||
|
|
|
@ -150,4 +150,45 @@ void LayoutResourceMgr::loadVersion() {
|
|||
mVersionHandle->requestLoad("System/Version.txt", &req, nullptr);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool LayoutResourceMgr::checkVersionReady() {
|
||||
if (!mVersionHandle) {
|
||||
if (!mVersionHandle->isReady()) {
|
||||
return false;
|
||||
}
|
||||
auto* resource = sead::DynamicCast<sead::DirectResource>(mVersionHandle->getResource());
|
||||
instance()->mVersionString = reinterpret_cast<char*>(resource->getRawData());
|
||||
if (mVersionHandle) {
|
||||
delete mVersionHandle;
|
||||
mVersionHandle = nullptr;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void LayoutResourceMgr::loadCommonLayoutArchive(sead::ExpHeap* heap) {
|
||||
mArcResourceMgr->loadArchive(heap, "Layout/Common.sblarc");
|
||||
}
|
||||
|
||||
void LayoutResourceMgr::loadTitleLayout(sead::Heap* heap) {
|
||||
mTitleLayout.allocate(heap);
|
||||
|
||||
res::LoadRequest req;
|
||||
req.mRequester = "ui::LayoutResourceMgr";
|
||||
req.mLoadDataAlignment = 0x1000;
|
||||
req._22 = false;
|
||||
req._26 = false;
|
||||
req._c = 2;
|
||||
|
||||
res::Handle::Status status = res::Handle::Status::NoFile;
|
||||
mTitleLayout.getHandle().requestLoad("Layout/Title.blarc", &req, &status);
|
||||
}
|
||||
|
||||
bool LayoutResourceMgr::loadTitleLayoutResource() {
|
||||
return loadArcResource(mTitleLayout, "Title");
|
||||
}
|
||||
|
||||
void LayoutResourceMgr::unloadTitleLayoutResource() {
|
||||
mTitleLayout.deallocate();
|
||||
}
|
||||
} // namespace ksys::ui
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
#include <thread/seadCriticalSection.h>
|
||||
#include "KingSystem/Resource/resHandle.h"
|
||||
#include "KingSystem/Utils/Types.h"
|
||||
|
||||
#include "ArcResourceMgr.h"
|
||||
#include "KingSystem/System/UI/ArcResourceMgr.h"
|
||||
#include "KingSystem/System/UI/ArcResource.h"
|
||||
|
||||
namespace nn::pl {
|
||||
enum SharedFontType : int { Unknown = 0 };
|
||||
|
@ -21,6 +21,31 @@ class LayoutResourceMgr {
|
|||
SEAD_SINGLETON_DISPOSER(LayoutResourceMgr)
|
||||
LayoutResourceMgr() = default;
|
||||
virtual ~LayoutResourceMgr();
|
||||
private:
|
||||
class Archive {
|
||||
public:
|
||||
void allocate(sead::Heap* heap) {
|
||||
mHandle = new (heap) res::Handle;
|
||||
_sizeA8Buf = new (heap) u8[0xA8];
|
||||
}
|
||||
void deallocate() {
|
||||
if (mResource) {
|
||||
delete mResource;
|
||||
mResource = nullptr;
|
||||
} else {
|
||||
delete mHandle;
|
||||
delete[] _sizeA8Buf;
|
||||
}
|
||||
mHandle = nullptr;
|
||||
_sizeA8Buf = nullptr;
|
||||
}
|
||||
|
||||
res::Handle& getHandle() { return *mHandle; }
|
||||
private:
|
||||
res::Handle* mHandle = nullptr;
|
||||
ArcResource* mResource = nullptr;
|
||||
u8* _sizeA8Buf = nullptr;
|
||||
};
|
||||
|
||||
public:
|
||||
|
||||
|
@ -31,16 +56,16 @@ public:
|
|||
bool checkLangFontReady();
|
||||
bool checkExtraLangFontsReady() const;
|
||||
void loadVersion();
|
||||
bool checkVersionReady();
|
||||
void loadCommonLayoutArchive(sead::ExpHeap* heap);
|
||||
void loadTitleLayout(sead::Heap* heap);
|
||||
bool loadTitleLayoutResource();
|
||||
void unloadTitleLayoutResource();
|
||||
|
||||
bool loadArcResource(Archive& archive, const char* name);
|
||||
|
||||
private:
|
||||
|
||||
class Archive {
|
||||
public:
|
||||
res::Handle* mHandle = nullptr;
|
||||
void* _8 = nullptr;
|
||||
void* _sizeA8Buf = nullptr;
|
||||
};
|
||||
|
||||
res::Handle* mMsgPackHandle = nullptr;
|
||||
res::Handle* mLangFontHandle = nullptr;
|
||||
res::Handle* mVersionHandle = nullptr;
|
||||
|
|
Loading…
Reference in New Issue