#pragma once #include #include #include #include "KingSystem/ActorSystem/actTag.h" #include "KingSystem/Resource/resResource.h" #include "KingSystem/Utils/ParamIO.h" #include "KingSystem/Utils/Types.h" namespace ksys::res { class ActorLink : public ParamIO, public Resource { SEAD_RTTI_OVERRIDE(ActorLink, Resource) public: struct Users { agl::utl::Parameter profile; agl::utl::Parameter actor_capture; agl::utl::Parameter as; agl::utl::Parameter model; agl::utl::Parameter anim; agl::utl::Parameter ai_program; agl::utl::Parameter gparam; agl::utl::Parameter damage_param; agl::utl::Parameter rg_config_list; agl::utl::Parameter rg_blend_weight; agl::utl::Parameter awareness; agl::utl::Parameter physics; agl::utl::Parameter chemical; agl::utl::Parameter attention; agl::utl::Parameter elink; agl::utl::Parameter slink; agl::utl::Parameter xlink; agl::utl::Parameter drop_table; agl::utl::Parameter shop_data; agl::utl::Parameter recipe; agl::utl::Parameter lod; agl::utl::Parameter bone_control; agl::utl::Parameter ai_schedule; agl::utl::Parameter life_condition; agl::utl::Parameter umii; agl::utl::Parameter animation_info; agl::utl::ParameterObj obj; }; ActorLink(); void doCreate_(u8*, u32, sead::Heap*) override {} bool needsParse() const override { return true; } const Users& getUsers() const { return mUsers; } const sead::SafeString& getActorNameJpn() const { return mActorNameJpn.ref(); } const sead::SafeString& getPriority() const { return mPriority.ref(); } f32 getActorScale() const { return mActorScale.ref(); } bool hasTag(const char* tag_name) const; bool hasTag(act::Tag tag) const; const sead::Buffer& getTags() const { return mTags; } private: bool parse_(u8* data, size_t size, sead::Heap* heap) override; void finalize_() override; Users mUsers; agl::utl::Parameter mActorNameJpn; agl::utl::Parameter mPriority; agl::utl::Parameter mActorScale; sead::Buffer mTags; sead::Heap* mHeap = nullptr; }; KSYS_CHECK_SIZE_NX150(ActorLink, 0x778); } // namespace ksys::res