diff --git a/CMakeLists.txt b/CMakeLists.txt index ab3b8962..02e4f51d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -117,6 +117,7 @@ add_executable(uking src/KingSystem/Resource/GeneralParamList/resGParamListObjectLumberjackTree.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectMasterSword.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectMonsterShop.h + src/KingSystem/Resource/GeneralParamList/resGParamListObjectMotorcycle.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectNest.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectNpc.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectNpcEquipment.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 650d5c2a..c2dad4fd 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -89122,7 +89122,7 @@ 0x00000071011a60bc,BgparamlistObjectEvent::ctor,852,_ZN4ksys3res21GParamListObjectEventC2Ev 0x00000071011a6410,BgparamlistObjectGolemIK::ctor,1792,_ZN4ksys3res23GParamListObjectGolemIKC2Ev 0x00000071011a6b10,BgparamlistObjectPictureBook::ctor,344,_ZN4ksys3res27GParamListObjectPictureBookC2Ev -0x00000071011a6c68,BgparamlistObjectMotorcycle::ctor,2736, +0x00000071011a6c68,BgparamlistObjectMotorcycle::ctor,2736,_ZN4ksys3res26GParamListObjectMotorcycleC2Ev 0x00000071011a7718,sub_71011A7718,52,_ZN4ksys3res10GParamListD2Ev 0x00000071011a774c,sub_71011A774C,40,_ZN4ksys3res10GParamListD0Ev 0x00000071011a7774,sub_71011A7774,8,_ZN4ksys3res10GParamList10ParamIO_m0Ev @@ -89223,7 +89223,7 @@ 0x00000071011a7f20,sub_71011A7F20,12,_ZNK4ksys3res23GParamListObjectGolemIK7getNameEv 0x00000071011a7f2c,sub_71011A7F2C,12,_ZNK4ksys3res27GParamListObjectPictureBook7getNameEv 0x00000071011a7f38,sub_71011A7F38,12,_ZNK4ksys3res23GParamListObjectAirWall7getNameEv -0x00000071011a7f44,sub_71011A7F44,12, +0x00000071011a7f44,sub_71011A7F44,12,_ZNK4ksys3res26GParamListObjectMotorcycle7getNameEv 0x00000071011a80c4,sub_71011A80C4,140,_ZNK4sead15RuntimeTypeInfo6DeriveIN4ksys3res10GParamListEE9isDerivedEPKNS0_9InterfaceE 0x00000071011a8150,sub_71011A8150,108,_ZN4ksys3res9AIProgramD1Ev 0x00000071011a81bc,ResourceAiprog::m2,104,_ZThn632_N4ksys3res9AIProgramD1Ev diff --git a/src/KingSystem/Resource/GeneralParamList/resGParamListObjectMotorcycle.h b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectMotorcycle.h new file mode 100644 index 00000000..c3284eb6 --- /dev/null +++ b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectMotorcycle.h @@ -0,0 +1,97 @@ +#pragma once + +#include +#include "KingSystem/Resource/GeneralParamList/resGParamListObject.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::res { + +class GParamListObjectMotorcycle : public GParamListObject { +public: + GParamListObjectMotorcycle(); + const char* getName() const override { return "Motorcycle"; } + + agl::utl::Parameter mPitchDampingCoefficient; + agl::utl::Parameter mDriftAllowSpeedKPH; + agl::utl::Parameter mDriftAbortSpeedKPH; + agl::utl::Parameter mDriftAllowSteerRate; + agl::utl::Parameter mDriftAbortSteerRate; + agl::utl::Parameter mDriftRearAngleRate; + agl::utl::Parameter mDriftSpeedRate; + agl::utl::Parameter mManualWheelieAllowAngleFront; + agl::utl::Parameter mManualWheelieAllowAngleRear; + agl::utl::Parameter mManualWheelieLastSec; + agl::utl::Parameter mWheelieLastSecInMidAir; + agl::utl::Parameter mManualControlProhibitSecAfterWheelie; + agl::utl::Parameter mWheelieRevertPower; + agl::utl::Parameter mWheelieRevertPowerSec; + agl::utl::Parameter mManualWheelieRiseDegDelta; + agl::utl::Parameter mWheelieLaunchRiseDegDelta; + agl::utl::Parameter mEngineBrakeMaxPower; + agl::utl::Parameter mBackwardEngineBrakePower; + agl::utl::Parameter mSlipStartAngle; + agl::utl::Parameter mSlipThresholdPower; + agl::utl::Parameter mSlipPowerMax; + agl::utl::Parameter mWristBindRotation; + agl::utl::Parameter mWristBindTranslation; + agl::utl::Parameter mPostureLimitAngle; + agl::utl::Parameter mInvalidPostureLimitSec; + agl::utl::Parameter mFallOverThresholdAngle; + agl::utl::Parameter mJumpIntervalSec; + agl::utl::Parameter mFullEnergyLastSec; + agl::utl::Parameter mWheelieLaunchJumpProhibitSec; + agl::utl::Parameter mSlowModeTargetSpeedKPH2; + agl::utl::Parameter mSlowDriftTargetSpeedKPH2; + agl::utl::Parameter mSlowModeTransitionSec; + agl::utl::Parameter mSlowSlipThresholdKPH; + agl::utl::Parameter mSlowSlipThresholdPower; + agl::utl::Parameter mSlowSlipThresholdSec; + agl::utl::Parameter mJumpRearWheelRotateRadPerSec; + agl::utl::Parameter mWeaponThrowModeSpeedKPH2; +}; +KSYS_CHECK_SIZE_NX150(GParamListObjectMotorcycle, 0x4e8); + +inline GParamListObjectMotorcycle::GParamListObjectMotorcycle() { + auto* const obj = &mObj; + + mPitchDampingCoefficient.init(0.2, "PitchDampingCoefficient", "", obj); + mDriftAllowSpeedKPH.init(45.0, "DriftAllowSpeedKPH", "", obj); + mDriftAbortSpeedKPH.init(30.0, "DriftAbortSpeedKPH", "", obj); + mDriftAllowSteerRate.init(0.6, "DriftAllowSteerRate", "", obj); + mDriftAbortSteerRate.init(0.1, "DriftAbortSteerRate", "", obj); + mDriftRearAngleRate.init(-2.5, "DriftRearAngleRate", "", obj); + mDriftSpeedRate.init(0.75, "DriftSpeedRate", "", obj); + mManualWheelieAllowAngleFront.init(15.0, "ManualWheelieAllowAngleFront", "", obj); + mManualWheelieAllowAngleRear.init(30.0, "ManualWheelieAllowAngleRear", "", obj); + mManualWheelieLastSec.init(2.5, "ManualWheelieLastSec", "", obj); + mWheelieLastSecInMidAir.init(0.5, "WheelieLastSecInMidAir", "", obj); + mManualControlProhibitSecAfterWheelie.init(1.0, "ManualControlProhibitSecAfterWheelie", "", + obj); + mWheelieRevertPower.init(4.0, "WheelieRevertPower", "", obj); + mWheelieRevertPowerSec.init(0.5, "WheelieRevertPowerSec", "", obj); + mManualWheelieRiseDegDelta.init(3.0, "ManualWheelieRiseDegDelta", "", obj); + mWheelieLaunchRiseDegDelta.init(1.0, "WheelieLaunchRiseDegDelta", "", obj); + mEngineBrakeMaxPower.init(100.0, "EngineBrakeMaxPower", "", obj); + mBackwardEngineBrakePower.init(400.0, "BackwardEngineBrakePower", "", obj); + mSlipStartAngle.init(50.0, "SlipStartAngle", "", obj); + mSlipThresholdPower.init(2500.0, "SlipThresholdPower", "", obj); + mSlipPowerMax.init(1800.0, "SlipPowerMax", "", obj); + mWristBindRotation.init({-1.72, -1.84, -2.9}, "WristBindRotation", "", obj); + mWristBindTranslation.init({0.355, 0.08, -0.145}, "WristBindTranslation", "", obj); + mPostureLimitAngle.init(90.0, "PostureLimitAngle", "", obj); + mInvalidPostureLimitSec.init(0.6, "InvalidPostureLimitSec", "", obj); + mFallOverThresholdAngle.init(75.0, "FallOverThresholdAngle", "", obj); + mJumpIntervalSec.init(1.0, "JumpIntervalSec", "", obj); + mFullEnergyLastSec.init(240.0, "FullEnergyLastSec", "", obj); + mWheelieLaunchJumpProhibitSec.init(0.1, "WheelieLaunchJumpProhibitSec", "", obj); + mSlowModeTargetSpeedKPH2.init(400.0, "SlowModeTargetSpeedKPH2", "", obj); + mSlowDriftTargetSpeedKPH2.init(3200.0, "SlowDriftTargetSpeedKPH2", "", obj); + mSlowModeTransitionSec.init(2.0, "SlowModeTransitionSec", "", obj); + mSlowSlipThresholdKPH.init(5.0, "SlowSlipThresholdKPH", "", obj); + mSlowSlipThresholdPower.init(1200.0, "SlowSlipThresholdPower", "", obj); + mSlowSlipThresholdSec.init(0.2, "SlowSlipThresholdSec", "", obj); + mJumpRearWheelRotateRadPerSec.init(1.0, "JumpRearWheelRotateRadPerSec", "", obj); + mWeaponThrowModeSpeedKPH2.init(800.0, "WeaponThrowModeSpeedKPH2", "", obj); +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceGParamList.cpp b/src/KingSystem/Resource/resResourceGParamList.cpp index 44d0b6ef..032814d8 100644 --- a/src/KingSystem/Resource/resResourceGParamList.cpp +++ b/src/KingSystem/Resource/resResourceGParamList.cpp @@ -56,6 +56,7 @@ #include "KingSystem/Resource/GeneralParamList/resGParamListObjectLumberjackTree.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectMasterSword.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectMonsterShop.h" +#include "KingSystem/Resource/GeneralParamList/resGParamListObjectMotorcycle.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectNest.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectNpc.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectNpcEquipment.h" @@ -200,8 +201,7 @@ bool GParamList::parse_(u8* data, size_t, sead::Heap* heap) { add(archive.getRootList(), "GolemIK", heap, dummy_list); add(archive.getRootList(), "PictureBook", heap, dummy_list); add(archive.getRootList(), "AirWall", heap, dummy_list); - - // TODO: the rest + add(archive.getRootList(), "Motorcycle", heap, dummy_list); if (data) applyResParameterArchive(archive);