mirror of https://github.com/zeldaret/botw.git
loadExtraLangFonts (reordering)
This commit is contained in:
parent
d41d55ebd4
commit
f54b9e229e
|
@ -88334,9 +88334,9 @@ Address,Quality,Size,Name
|
||||||
0x00000071010a263c,O,000268,_ZN4ksys2ui17LayoutResourceMgr4initEPN4sead4HeapE
|
0x00000071010a263c,O,000268,_ZN4ksys2ui17LayoutResourceMgr4initEPN4sead4HeapE
|
||||||
0x00000071010a2748,O,000424,_ZN4ksys2ui17LayoutResourceMgr11loadMsgPackEPj
|
0x00000071010a2748,O,000424,_ZN4ksys2ui17LayoutResourceMgr11loadMsgPackEPj
|
||||||
0x00000071010a28f0,U,000384,LayoutResourceMgr::__auto2
|
0x00000071010a28f0,U,000384,LayoutResourceMgr::__auto2
|
||||||
0x00000071010a2a70,U,000260,LayoutResourceMgr::loadLangFont
|
0x00000071010a2a70,W,000260,_ZN4ksys2ui17LayoutResourceMgr12loadLangFontEPN4sead4HeapE
|
||||||
0x00000071010a2b74,U,000388,LayoutResourceMgr::__auto0
|
0x00000071010a2b74,U,000388,LayoutResourceMgr::__auto0
|
||||||
0x00000071010a2cf8,U,000680,LayoutResourceMgr::loadFonts
|
0x00000071010a2cf8,W,000680,_ZN4ksys2ui17LayoutResourceMgr18loadExtraLangFontsEPN4sead4HeapE
|
||||||
0x00000071010a2fa0,U,000188,LayoutResourceMgr::ready
|
0x00000071010a2fa0,U,000188,LayoutResourceMgr::ready
|
||||||
0x00000071010a305c,U,000136,LayoutResourceMgr::ready_0
|
0x00000071010a305c,U,000136,LayoutResourceMgr::ready_0
|
||||||
0x00000071010a30e4,U,000136,LayoutResourceMgr::loadVersion
|
0x00000071010a30e4,U,000136,LayoutResourceMgr::loadVersion
|
||||||
|
|
Can't render this file because it is too large.
|
|
@ -1,4 +1,6 @@
|
||||||
#include <devenv/seadEnvUtil.h>
|
#include <devenv/seadEnvUtil.h>
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
#include "KingSystem/Resource/resLoadRequest.h"
|
#include "KingSystem/Resource/resLoadRequest.h"
|
||||||
#include "KingSystem/System/StarterPackMgr.h"
|
#include "KingSystem/System/StarterPackMgr.h"
|
||||||
|
|
||||||
|
@ -10,8 +12,8 @@ SEAD_SINGLETON_DISPOSER_IMPL(LayoutResourceMgr)
|
||||||
|
|
||||||
void LayoutResourceMgr::init(sead::Heap* heap) {
|
void LayoutResourceMgr::init(sead::Heap* heap) {
|
||||||
mMsgPackHandle = new (heap) res::Handle;
|
mMsgPackHandle = new (heap) res::Handle;
|
||||||
mLangFontTodo = new (heap) res::Handle;
|
mLangFontHandle = new (heap) res::Handle;
|
||||||
mVersionRes = new (heap) res::Handle;
|
mVersionHandle = new (heap) res::Handle;
|
||||||
int count;
|
int count;
|
||||||
// value() needed because operator int() is volatile
|
// value() needed because operator int() is volatile
|
||||||
switch (sead::EnvUtil::getRegionLanguage().value()) {
|
switch (sead::EnvUtil::getRegionLanguage().value()) {
|
||||||
|
@ -25,10 +27,10 @@ void LayoutResourceMgr::init(sead::Heap* heap) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
mArray.pushBack(new (heap) res::Handle);
|
mExtraLangFontHandles.pushBack(new (heap) res::Handle);
|
||||||
}
|
}
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
mHandleAtx90 = new (heap) res::Handle;
|
mZeldaGlyphHandle = new (heap) res::Handle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,4 +58,66 @@ u8* LayoutResourceMgr::loadMsgPack(u32* size) {
|
||||||
return resource->getRawData();
|
return resource->getRawData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LayoutResourceMgr::loadLangFont(sead::Heap* heap) {
|
||||||
|
mLangFontHandle->resetUnitFlag20000IfSuccess();
|
||||||
|
mLangFontHandle->unload();
|
||||||
|
mLangFontHandle = nullptr;
|
||||||
|
|
||||||
|
res::LoadRequest req;
|
||||||
|
req.mRequester = "LayoutResourceMgr";
|
||||||
|
req._22 = true;
|
||||||
|
req.mLoadDataAlignment = 0x1000;
|
||||||
|
req._26 = false;
|
||||||
|
|
||||||
|
sead::FixedSafeString<0x20> path;
|
||||||
|
// TODO: needs sead::EnvUtil::getRegion() and sead::RegionID
|
||||||
|
/* path.format("Font/Font_%s.bfarc", sead::EnvUtil::getRegion()); */
|
||||||
|
|
||||||
|
mLangFontHandle->load(path, &req, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
constexpr const char* cExtraFontFiles[12] = {
|
||||||
|
"AsiaKCUBE-R",
|
||||||
|
"AsiaKDREAM2R",
|
||||||
|
"AsiaKDREAM4R",
|
||||||
|
"AsiaKDREAM7R",
|
||||||
|
"DFP_GBZY9",
|
||||||
|
"DFP_GB_H3",
|
||||||
|
"DFP_GB_H5",
|
||||||
|
"DFHEI5A",
|
||||||
|
"DFT_ZY9",
|
||||||
|
"DFT_B3",
|
||||||
|
"DFT_B5",
|
||||||
|
"DFT_B9"
|
||||||
|
};
|
||||||
|
|
||||||
|
void LayoutResourceMgr::loadExtraLangFonts(sead::Heap* heap) {
|
||||||
|
sead::RegionLanguageID lang_id = sead::EnvUtil::getRegionLanguage();
|
||||||
|
const char* const* fonts = cExtraFontFiles;
|
||||||
|
for (int i = 0; i <= 2; i++) {
|
||||||
|
if (lang_id.value() == sead::RegionLanguageID::KRko + i) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i == 2) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fonts += 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
res::LoadRequest req;
|
||||||
|
req.mRequester = "ui::LayoutResourceMgr";
|
||||||
|
req._26 = false;
|
||||||
|
|
||||||
|
// non-matching: reordering
|
||||||
|
res::Handle::Status status = res::Handle::Status::NoFile;
|
||||||
|
for (int i = 0; i < 4; ++i) {
|
||||||
|
auto* handle = mExtraLangFontHandles[i];
|
||||||
|
sead::FixedSafeString<0x20> path;
|
||||||
|
path.format("Font/Font_%s.bfttf", fonts[i]);
|
||||||
|
handle->requestLoad(path, &req, &status);
|
||||||
|
}
|
||||||
|
mZeldaGlyphHandle->requestLoad("Font/ZeldaGlyphs-v2-Deco.bfotf", &req, &status);
|
||||||
|
nn::pl::RequestSharedFontLoad(0);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ksys::ui
|
} // namespace ksys::ui
|
||||||
|
|
|
@ -9,6 +9,10 @@
|
||||||
|
|
||||||
#include "ArcResourceMgr.h"
|
#include "ArcResourceMgr.h"
|
||||||
|
|
||||||
|
namespace nn::pl {
|
||||||
|
u64 RequestSharedFontLoad(int);
|
||||||
|
}
|
||||||
|
|
||||||
namespace ksys::ui {
|
namespace ksys::ui {
|
||||||
|
|
||||||
class LayoutResourceMgr {
|
class LayoutResourceMgr {
|
||||||
|
@ -20,12 +24,15 @@ public:
|
||||||
|
|
||||||
void init(sead::Heap* heap);
|
void init(sead::Heap* heap);
|
||||||
u8* loadMsgPack(u32* size);
|
u8* loadMsgPack(u32* size);
|
||||||
|
void loadLangFont(sead::Heap* heap);
|
||||||
|
void loadExtraLangFonts(sead::Heap* heap);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
res::Handle* mMsgPackHandle = nullptr;
|
res::Handle* mMsgPackHandle = nullptr;
|
||||||
res::Handle* mLangFontTodo = nullptr;
|
res::Handle* mLangFontHandle = nullptr;
|
||||||
res::Handle* mVersionRes = nullptr;
|
res::Handle* mVersionHandle = nullptr;
|
||||||
sead::FixedPtrArray<res::Handle, 8> mArray;
|
sead::FixedPtrArray<res::Handle, 8> mExtraLangFontHandles;
|
||||||
res::Handle* mHandleAtx90 = 0;
|
res::Handle* mZeldaGlyphHandle = nullptr;
|
||||||
ArcResourceMgr* mArcResourceMgr = nullptr;
|
ArcResourceMgr* mArcResourceMgr = nullptr;
|
||||||
res::Handle* mLangFontRes = nullptr;
|
res::Handle* mLangFontRes = nullptr;
|
||||||
void* _a8 = nullptr;
|
void* _a8 = nullptr;
|
||||||
|
@ -37,7 +44,8 @@ private:
|
||||||
res::Handle* mHorseLayoutResu = nullptr;
|
res::Handle* mHorseLayoutResu = nullptr;
|
||||||
u64 _e0 = 0;
|
u64 _e0 = 0;
|
||||||
u64 _e8 = 0;
|
u64 _e8 = 0;
|
||||||
u32 _f0 = 0;
|
u16 mMaxDefArtLen = 0;
|
||||||
|
u16 mMaxIndefArtLen = 0;
|
||||||
sead::FixedSafeString<16> mVersionString;
|
sead::FixedSafeString<16> mVersionString;
|
||||||
int _120 = 0;
|
int _120 = 0;
|
||||||
sead::CriticalSection mCriticalSection;
|
sead::CriticalSection mCriticalSection;
|
||||||
|
|
Loading…
Reference in New Issue