#pragma once #include #include "KingSystem/Resource/GeneralParamList/resGParamListObject.h" #include "KingSystem/Utils/Types.h" namespace ksys::res { class GParamListObjectTraveler : public GParamListObject { public: struct RoutePoint { RoutePoint(); template KSYS_VISIBILITY_HIDDEN void initParameters_(agl::utl::ParameterObj* obj); struct DirectionInfo { template KSYS_VISIBILITY_HIDDEN void initParameters_(agl::utl::ParameterObj* obj); agl::utl::Parameter mEntryPoint; agl::utl::Parameter mWaitFrame; agl::utl::Parameter mSchedule; agl::utl::Parameter mMoveAS; agl::utl::Parameter mWaitAS; }; agl::utl::Parameter mName; // i to i+1 DirectionInfo mForward; // i+1 to i DirectionInfo mBackward; }; static constexpr size_t NumRoutePoints = 29; GParamListObjectTraveler(); const char* getName() const override { return "Traveler"; } agl::utl::Parameter mAppearGameDataName; agl::utl::Parameter mDeleteGameDataName; agl::utl::Parameter mRouteType; agl::utl::Parameter mRideHorseName; agl::utl::Parameter mIsLeadHorse; agl::utl::Parameter mHorseGearLevel; struct RoutePoints { RoutePoints(); auto& operator[](s32 i) { return reinterpret_cast(mStorage[i]); } auto& operator[](s32 i) const { return reinterpret_cast(mStorage[i]); } auto data() { return reinterpret_cast(&mStorage[0]); } private: std::aligned_storage_t mStorage[NumRoutePoints]; }; RoutePoints mRoutePoints; agl::utl::Parameter mRoutePoint29Name; }; KSYS_CHECK_SIZE_NX150(GParamListObjectTraveler, 0x3148); } // namespace ksys::res