summaryrefslogtreecommitdiff
path: root/src/KingSystem/Resource/resResourceAttClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/KingSystem/Resource/resResourceAttClient.cpp')
-rw-r--r--src/KingSystem/Resource/resResourceAttClient.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/KingSystem/Resource/resResourceAttClient.cpp b/src/KingSystem/Resource/resResourceAttClient.cpp
index a1e18a8f..dc00b1a7 100644
--- a/src/KingSystem/Resource/resResourceAttClient.cpp
+++ b/src/KingSystem/Resource/resResourceAttClient.cpp
@@ -4,6 +4,57 @@
namespace ksys::res {
+AttClientList::~AttClientList() {
+ mClients.freeBuffer();
+}
+
+void AttClientList::doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) {}
+
+bool AttClientList::parse_(u8* data, size_t size, sead::Heap* heap) {
+ if (!data)
+ return false;
+
+ agl::utl::ResParameterArchive archive{data};
+ const auto root = archive.getRootList();
+
+ mAttPos.init(&mAttPosObj);
+ mForceEdit.init(false, "ForceEdit", "強制編集", "", &mAttPosObj);
+ addObj(&mAttPosObj, "AttPos");
+
+ const auto AttClients = agl::utl::getResParameterList(root, "AttClients");
+ if (int num; AttClients && (num = AttClients.getResParameterObjNum()) != 0) {
+ mClients.allocBufferAssert(num, heap);
+ for (auto it = mClients.begin(), end = mClients.end(); it != end; ++it) {
+ it->client = nullptr;
+ it->name.init("", "Name", "クライアントのキー名", "", &it->obj);
+ it->file_name.init("", "FileName", "クライアントのデータファイル名", "", &it->obj);
+ it->is_valid.init(true, "IsValid", "デフォルトの有効・無効状態", "", &it->obj);
+
+ mAttClientsList.addObj(
+ &it->obj, sead::FormatFixedSafeString<32>("%s%d", "AttClient_", it.getIndex()));
+ }
+ }
+
+ addList(&mAttClientsList, "AttClients");
+
+ applyResParameterArchive(archive);
+ return true;
+}
+
+bool AttClientList::finishParsing_() {
+ return true;
+}
+
+bool AttClientList::m7_() {
+ for (auto& client : mClients)
+ client.client = nullptr;
+ return true;
+}
+
+bool AttClientList::isForceEdit() const {
+ return mForceEdit.ref();
+}
+
AttClient::~AttClient() {
for (int i = 0; i < mChecks.size(); ++i) {
if (mChecks[i]) {