mirror of
https://github.com/zeldaret/botw
synced 2026-06-04 10:48:32 -04:00
ksys/res: Add Recipe
It's mostly the same as Drop. *shrug*
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
#include "KingSystem/Resource/resResourceRecipe.h"
|
||||
|
||||
namespace ksys::res {
|
||||
|
||||
// NON_MATCHING: first line (see also Drop::parse_)
|
||||
bool Recipe::parse_(u8* data, size_t, sead::Heap* heap) {
|
||||
mTableNum.init(0, "TableNum", "テーブルの数", &mObj);
|
||||
addObj(&mObj, "Header");
|
||||
|
||||
if (!data)
|
||||
return true;
|
||||
|
||||
applyResParameterArchive(agl::utl::ResParameterArchive{data});
|
||||
|
||||
const s32 num_tables = mTableNum.ref();
|
||||
if (num_tables < 1)
|
||||
return true;
|
||||
|
||||
mTables.allocBufferAssert(num_tables, heap);
|
||||
|
||||
const agl::utl::ResParameterArchive archive{data};
|
||||
const auto root = archive.getRootList();
|
||||
const auto header_obj = root.getResParameterObj(0);
|
||||
|
||||
for (s32 i = 0; i < num_tables; ++i) {
|
||||
sead::FormatFixedSafeString<64> name;
|
||||
name.format("Table%02d", i + 1);
|
||||
mTables[i].name.init("", name, "テーブル名", &mObj);
|
||||
}
|
||||
|
||||
mObj.applyResParameterObj(header_obj, nullptr);
|
||||
|
||||
for (s32 i = 0; i < num_tables; ++i) {
|
||||
const auto obj = root.getResParameterObj(i + 1);
|
||||
mTables[i].column_num.init(0, "ColumnNum", "行数", &mTables[i].obj);
|
||||
|
||||
addObj(&mTables[i].obj, mTables[i].name.ref());
|
||||
applyResParameterArchive(agl::utl::ResParameterArchive{data});
|
||||
mTables[i].obj.applyResParameterObj(obj, nullptr);
|
||||
|
||||
if (mTables[i].column_num.ref() > 0) {
|
||||
mTables[i].items.allocBufferAssert(mTables[i].column_num.ref(), heap);
|
||||
}
|
||||
}
|
||||
|
||||
for (s32 i = 0; i < num_tables; ++i) {
|
||||
parseTable_(i);
|
||||
}
|
||||
|
||||
applyResParameterArchive(agl::utl::ResParameterArchive{data});
|
||||
return true;
|
||||
}
|
||||
|
||||
void Recipe::parseTable_(const s32& table_idx) {
|
||||
const s32 num = mTables[table_idx].column_num.ref();
|
||||
for (s32 i = 0; i < num; ++i) {
|
||||
sead::FormatFixedSafeString<64> name;
|
||||
name.format("ItemName%02d", i + 1);
|
||||
mTables[table_idx].items[i].name.init("", name, "アイテム名", &mTables[table_idx].obj);
|
||||
|
||||
sead::FormatFixedSafeString<64> name2;
|
||||
name2.format("ItemNum%02d", i + 1);
|
||||
mTables[table_idx].items[i].num.init(0, name2, "個数", &mTables[table_idx].obj);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace ksys::res
|
||||
Reference in New Issue
Block a user