#pragma once #include #include #include #include #include #include "KingSystem/Resource/resResource.h" #include "KingSystem/Utils/ParamIO.h" namespace ksys::res { class AS; class ASList : public ParamIO, public Resource { SEAD_RTTI_OVERRIDE(ASList, Resource) public: struct ASDefine { const char* getFileName() const { return file_name.ref().cstr(); } agl::utl::Parameter name; agl::utl::Parameter file_name; agl::utl::ParameterObj obj; AS* as; }; KSYS_CHECK_SIZE_NX150(ASDefine, 0x88); struct CFDefine { agl::utl::Parameter name; agl::utl::ParameterObj pre_obj; sead::Buffer posts; agl::utl::ParameterList posts_list; sead::Buffer excepts; agl::utl::ParameterObj obj; agl::utl::ParameterList excepts_list; }; KSYS_CHECK_SIZE_NX150(CFDefine, 0x138); struct AddRes { agl::utl::Parameter _0; agl::utl::Parameter _28; agl::utl::Parameter _50; agl::utl::ParameterObj obj; }; KSYS_CHECK_SIZE_NX150(AddRes, 0xa0); struct Common { agl::utl::Parameter rate_all; agl::utl::ParameterObj obj; }; KSYS_CHECK_SIZE_NX150(Common, 0x50); ASList(); ~ASList() override; void doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) override; bool needsParse() const override { return true; } bool parse_(u8* data, size_t size, sead::Heap* heap) override; const sead::Buffer& getASDefines() const { return mASDefines; } const sead::Buffer& getCFDefines() const { return mCFDefines; } const sead::Buffer& getAddReses() const { return mAddReses; } const Common& getCommon() const { return mCommon.ref(); } void addAS_(s32 index, AS* as); protected: bool finishParsing_() override; bool m7_() override; private: u8 _2b0 = 0; u8 _2b1 = 0; u8 _2b2 = 0; u8 _2b3 = 0; sead::Buffer mASDefines; sead::Buffer mCFDefines; sead::Buffer mAddReses; agl::utl::ParameterList mCFDefinesList; agl::utl::ParameterList mASDefinesList; agl::utl::ParameterList mAddResesList; sead::StorageFor mCommon{sead::ZeroInitializeTag{}}; }; KSYS_CHECK_SIZE_NX150(ASList, 0x410); } // namespace ksys::res