From cecb84bd2f77f5ce42aadffa304f056230a65197 Mon Sep 17 00:00:00 2001 From: Pistonight Date: Wed, 7 Aug 2024 20:41:13 -0700 Subject: [PATCH] LayoutResourceMgr::init --- data/uking_functions.csv | 4 +-- .../System/UI/LayoutResourceMgr.cpp | 25 +++++++++++++++++-- src/KingSystem/System/UI/LayoutResourceMgr.h | 8 +++--- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 06a2cde2..462b2a60 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -88330,8 +88330,8 @@ Address,Quality,Size,Name 0x00000071010a22c4,U,000372, 0x00000071010a2438,U,000112, 0x00000071010a24a8,U,000120, -0x00000071010a2520,U,000284,LayoutResourceMgr::createInstance -0x00000071010a263c,U,000268,LayoutResourceMgr::init +0x00000071010a2520,O,000284,_ZN4ksys2ui17LayoutResourceMgr14createInstanceEPN4sead4HeapE +0x00000071010a263c,O,000268,_ZN4ksys2ui17LayoutResourceMgr4initEPN4sead4HeapE 0x00000071010a2748,U,000424,LayoutResourceMgr::loadMsgPack 0x00000071010a28f0,U,000384,LayoutResourceMgr::__auto2 0x00000071010a2a70,U,000260,LayoutResourceMgr::loadLangFont diff --git a/src/KingSystem/System/UI/LayoutResourceMgr.cpp b/src/KingSystem/System/UI/LayoutResourceMgr.cpp index 08e97e06..1620a782 100644 --- a/src/KingSystem/System/UI/LayoutResourceMgr.cpp +++ b/src/KingSystem/System/UI/LayoutResourceMgr.cpp @@ -1,12 +1,33 @@ #include "LayoutResourceMgr.h" +#include "devenv/seadEnvUtil.h" namespace ksys::ui { SEAD_SINGLETON_DISPOSER_IMPL(LayoutResourceMgr) void LayoutResourceMgr::init(sead::Heap* heap) { - // TODO + mHandleAtx28 = new (heap) res::Handle; + mLangFontTodo = new (heap) res::Handle; + mVersionRes = new (heap) res::Handle; + int count; + // value() needed because operator int() is volatile + switch (sead::EnvUtil::getRegionLanguage().value()) { + case sead::RegionLanguageID::KRko: + case sead::RegionLanguageID::CNzh: + case sead::RegionLanguageID::TWzh: + count = 4; + break; + default: + count = 0; + break; + } + for (int i = 0; i < count; i++) { + mArray.pushBack(new (heap) res::Handle); + } + if (count > 0) { + mHandleAtx90 = new (heap) res::Handle; + } } -} +} // namespace ksys::ui diff --git a/src/KingSystem/System/UI/LayoutResourceMgr.h b/src/KingSystem/System/UI/LayoutResourceMgr.h index 76d8236b..40800a9d 100644 --- a/src/KingSystem/System/UI/LayoutResourceMgr.h +++ b/src/KingSystem/System/UI/LayoutResourceMgr.h @@ -20,11 +20,11 @@ public: void init(sead::Heap* heap); private: - void* _28 = nullptr; - void* mLangFontTodo = nullptr; + res::Handle* mHandleAtx28 = nullptr; + res::Handle* mLangFontTodo = nullptr; res::Handle* mVersionRes = nullptr; - sead::FixedPtrArray mArray; - u64 _90 = 0; + sead::FixedPtrArray mArray; + res::Handle* mHandleAtx90 = 0; ArcResourceMgr* mArcResourceMgr = nullptr; res::Handle* mLangFontRes = nullptr; void* _a8 = nullptr;