#pragma once #include #include #include #include #include #include #include "KingSystem/Utils/Types.h" namespace ksys::snd { class MusicDefinition : public sead::DirectResource, public agl::utl::IParameterIO { SEAD_RTTI_OVERRIDE(MusicDefinition, sead::DirectResource) public: struct MusicDefine { agl::utl::Parameter name; agl::utl::Parameter category; agl::utl::Parameter volume; agl::utl::Parameter is_enable_weather_filter; agl::utl::Parameter is_indoor_ducking; bool is_event_bgm; agl::utl::ParameterObj param_obj; }; struct CategoryDefine { agl::utl::Parameter name; agl::utl::Parameter priority_value; agl::utl::ParameterObj param_obj; }; void doCreate_(u8* data, u32 file_size, sead::Heap* heap) override; int getMusicIndexByName(const sead::SafeString& name) const; const sead::SafeString& getMusicCategoryByName(const sead::SafeString& name) const; int getPriorityValueByCategoryName(const sead::SafeString& name) const; private: sead::Buffer mMusicDefines; agl::utl::ParameterList mMusicList; int mEventBgmCount = 0; sead::Buffer mCategoryDefines; agl::utl::ParameterList mCategoryList; }; KSYS_CHECK_SIZE_NX150(MusicDefinition, 0x2A8); } // namespace ksys::snd