#pragma once #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 CFPost { static int compare(const CFPost& o, const sead::SafeString& n); agl::utl::Parameter name; agl::utl::Parameter frame; agl::utl::Parameter start_frame_rate; agl::utl::ParameterObj obj; }; KSYS_CHECK_SIZE_NX150(CFPost, 0x98); struct CFExcept { static int compare(const CFExcept& o, const sead::SafeString& n); agl::utl::Parameter name; }; KSYS_CHECK_SIZE_NX150(CFExcept, 0x28); 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 excepts_obj; agl::utl::ParameterList list; }; KSYS_CHECK_SIZE_NX150(CFDefine, 0x138); struct AddRes { agl::utl::Parameter anim; agl::utl::Parameter retarget_model; agl::utl::Parameter retarget_no_correct; 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; } void addAS_(s32 index, AS* as); const char* getASFileName(const sead::SafeString& name) const; int findASDefine(const sead::SafeString& name) const; int findCFDefine(const sead::SafeString& name) const; bool getCFDefineInfo(float* frame, float* key, const sead::SafeString& name, const sead::SafeString& post_name, bool* is_default) const; 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; Common mCommon; }; KSYS_CHECK_SIZE_NX150(ASList, 0x410); } // namespace ksys::res