diff --git a/CMakeLists.txt b/CMakeLists.txt index 5401a437..d061c945 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,6 +54,8 @@ add_executable(uking src/KingSystem/Resource/resEntryFactory.h src/KingSystem/Resource/resResource.cpp src/KingSystem/Resource/resResource.h + src/KingSystem/Resource/resResourceDemo.cpp + src/KingSystem/Resource/resResourceDemo.cpp src/KingSystem/Resource/resResourceLod.cpp src/KingSystem/Resource/resResourceLod.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 16601956..260cb7a1 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -92173,12 +92173,12 @@ 0x0000007101273b7c,sub_7101273B7C,168, 0x0000007101273c24,DemoASLoader::finishLoad,212, 0x0000007101273cf8,registerBdemoResourceFactory,288, -0x0000007101273e18,ResourceBdemo::doCreate,6656, -0x0000007101275818,sub_7101275818,292, -0x000000710127593c,sub_710127593C,324, -0x0000007101275a80,sub_7101275A80,300, -0x0000007101275bac,sub_7101275BAC,328, -0x0000007101275cf4,ResourceBdemo::ctor,1364, +0x0000007101273e18,ResourceBdemo::doCreate,6656,_ZN4ksys3res4Demo9doCreate_EPhjPN4sead4HeapE +0x0000007101275818,sub_7101275818,292,_ZN4ksys3res4DemoD2Ev +0x000000710127593c,sub_710127593C,324,_ZN4ksys3res4DemoD0Ev +0x0000007101275a80,sub_7101275A80,300,_ZThn32_N4ksys3res4DemoD1Ev +0x0000007101275bac,sub_7101275BAC,328,_ZThn32_N4ksys3res4DemoD0Ev +0x0000007101275cf4,ResourceBdemo::ctor,1364,_ZN4ksys3res4DemoC1Ev 0x0000007101276248,sub_7101276248,356, 0x00000071012763ac,sub_71012763AC,364, 0x0000007101276518,sub_7101276518,132, diff --git a/lib/sead b/lib/sead index ef9b0368..b085263d 160000 --- a/lib/sead +++ b/lib/sead @@ -1 +1 @@ -Subproject commit ef9b03681383c64b99861ac5e65ad71fc4b90988 +Subproject commit b085263d6999ae37d8442ad1a1e9f5832dbdfc19 diff --git a/src/KingSystem/Resource/resResourceDemo.cpp b/src/KingSystem/Resource/resResourceDemo.cpp new file mode 100644 index 00000000..b992c9a6 --- /dev/null +++ b/src/KingSystem/Resource/resResourceDemo.cpp @@ -0,0 +1,89 @@ +#include "KingSystem/Resource/resResourceDemo.h" + +namespace ksys::res { + +Demo::Demo() : agl::utl::IParameterIO(".bdemo", 0) {} + +void Demo::doCreate_(u8* buffer, u32, sead::Heap*) { + using FormatStr = sead::FormatFixedSafeString<128>; + + mLocation.init(sead::Vector3f::zero, FormatStr("Location"), "", &mDemoSettingObj); + mWeather.init(FormatStr("none"), FormatStr("Weather"), "", &mDemoSettingObj); + mTime.init(-1.0, FormatStr("Time"), "", &mDemoSettingObj); + mStartType.init(FormatStr("Load"), FormatStr("StartType"), "", &mDemoSettingObj); + mNoEntryActors.init(FormatStr("none"), FormatStr("NoEntryActors"), "", &mDemoSettingObj); + mSaveType.init(FormatStr("none"), FormatStr("SaveType"), "", &mDemoSettingObj); + mExtension.init(FormatStr("evfl"), FormatStr("Extension"), "", &mDemoSettingObj); + mIsFlashbackDemo.init(false, FormatStr("IsFlashbackDemo"), "", &mDemoSettingObj); + + mOverwritePlayerPos.init(sead::Vector3f::zero, FormatStr("OverwritePlayerPos"), "", + &mDemoSettingObj); + mIsOverwritePlayerPos.init(false, FormatStr("IsOverwritePlayerPos"), "", &mDemoSettingObj); + + mMapProjectName.init("", FormatStr("MapProjectName"), "", &mDemoSettingObj); + mMapResourceName.init("", FormatStr("MapResourceName"), "", &mDemoSettingObj); + mIsStartupDemo.init(false, FormatStr("IsStartupDemo"), "", &mDemoSettingObj); + mProgress.init("", FormatStr("Progress"), "", &mDemoSettingObj); + mProductFormat.init("", FormatStr("ProductFormat"), "", &mDemoSettingObj); + + mNextDemo.init("", FormatStr("NextDemo"), "", &mDemoSettingObj); + + mIsStopChemical.init(true, FormatStr("IsStopChemical"), "", &mDemoSettingObj); + + mPlayerEndPos.init(sead::Vector3f::zero, FormatStr("PlayerEndPos"), "", &mDemoSettingObj); + mIsMovePlayerEndPos.init(false, FormatStr("IsMovePlayerEndPos"), "", &mDemoSettingObj); + + mStartLocationType.init(FormatStr("Starter"), FormatStr("StartLocationType"), "", + &mDemoSettingObj); + mEventMode.init(FormatStr("Seamless"), FormatStr("EventMode"), "", &mDemoSettingObj); + mWithTransAnimation.init(false, FormatStr("WithTransAnimation"), "", &mDemoSettingObj); + + mOverwritePlayerRotY.init(0.0, FormatStr("OverwritePlayerRotY"), "", &mDemoSettingObj); + mPlayerEndRotY.init(0.0, FormatStr("PlayerEndRotY"), "", &mDemoSettingObj); + mStartLocationRotY.init(0.0, FormatStr("StartLocationRotY"), "", &mDemoSettingObj); + mStartPosName.init("", FormatStr("StartPosName"), "", &mDemoSettingObj); + mEndPosName.init("", FormatStr("EndPosName"), "", &mDemoSettingObj); + + mSkipPolicy.init("Auto", FormatStr("SkipPolicy"), "", &mDemoSettingObj); + mDispName.init("", FormatStr("DispName"), "", &mDemoSettingObj); + mTraverseLimit.init(0.0, FormatStr("TraverseLimit"), "", &mDemoSettingObj); + + mForceEnableIK.init(false, FormatStr("ForceEnableIK"), "", &mDemoSettingObj); + + mIsUseNakedSound.init(false, FormatStr("IsUseNakedSound"), "", &mDemoSettingObj); + mWorldMuteType.init("Thru_ShakeNoise", FormatStr("WorldMuteType"), "", &mDemoSettingObj); + mBgmStopType.init("StopWithFade", FormatStr("BgmStopType"), "", &mDemoSettingObj); + + mTraverseType.init("", FormatStr("TraverseType"), "", &mDemoSettingObj); + mTraversePos.init(sead::Vector3f::zero, FormatStr("TraversePos"), "", &mDemoSettingObj); + + mVoiceComplete.init(false, FormatStr("VoiceComplete"), "", &mProgressObj); + mSeComplete.init(false, FormatStr("SEComplete"), "", &mProgressObj); + mBgmComplete.init(false, FormatStr("BgmComplete"), "", &mProgressObj); + mEffectComplete.init(false, FormatStr("EffectComplete"), "", &mProgressObj); + mEnvComplete.init(false, FormatStr("EnvComplete"), "", &mProgressObj); + mFinalComplete.init(false, FormatStr("FinalComplete"), "", &mProgressObj); + + mWaitLoadActorNames.init("", FormatStr("WaitLoadActorNames"), "", &mDemoSettingObj); + mHideActors.init("", FormatStr("HideActors"), "", &mDemoSettingObj); + mDisableFarActors.init("", FormatStr("DisableFarActors"), "", &mDemoSettingObj); + mTraverseMergePolicy.init("default", FormatStr("TraverseMergePolicy"), "", &mDemoSettingObj); + mHighPriorityActors.init("", FormatStr("HighPriorityActors"), "", &mDemoSettingObj); + mTraverseCutPos.init(sead::Vector3f::zero, FormatStr("TraverseCutPos"), "", &mDemoSettingObj); + mTraverseCutRadius.init(0.0, FormatStr("TraverseCutRadius"), "", &mDemoSettingObj); + mTraverseInnerCutPos1.init(sead::Vector3f::zero, FormatStr("TraverseInnerCutPos1"), "", + &mDemoSettingObj); + mTraverseInnerCutRadius1.init(0.0, FormatStr("TraverseInnerCutRadius1"), "", &mDemoSettingObj); + mTraverseInnerCutPos2.init(sead::Vector3f::zero, FormatStr("TraverseInnerCutPos2"), "", + &mDemoSettingObj); + mTraverseInnerCutRadius2.init(0.0, FormatStr("TraverseInnerCutRadius2"), "", &mDemoSettingObj); + mDisableTraverseTime.init(-1, FormatStr("DisableTraverseTime"), "", &mDemoSettingObj); + + addObj(&mDemoSettingObj, FormatStr("DemoSetting")); + addObj(&mProgressObj, FormatStr("Progress")); + + if (buffer) + applyResParameterArchive(agl::utl::ResParameterArchive{buffer}); +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceDemo.h b/src/KingSystem/Resource/resResourceDemo.h new file mode 100644 index 00000000..b41615b2 --- /dev/null +++ b/src/KingSystem/Resource/resResourceDemo.h @@ -0,0 +1,85 @@ +#pragma once + +#include +#include +#include +#include + +namespace ksys::res { + +class Demo : public sead::DirectResource, public agl::utl::IParameterIO { +public: + Demo(); + + void doCreate_(u8* buffer, u32 bufferSize, sead::Heap* heap) override; + + agl::utl::ParameterObj mDemoSettingObj; + agl::utl::ParameterObj mProgressObj; + + agl::utl::Parameter mLocation; + agl::utl::Parameter> mWeather; + agl::utl::Parameter mTime; + agl::utl::Parameter> mStartType; + agl::utl::Parameter> mNoEntryActors; + agl::utl::Parameter> mSaveType; + agl::utl::Parameter> mExtension; + agl::utl::Parameter mIsFlashbackDemo; + agl::utl::Parameter mOverwritePlayerPos; + agl::utl::Parameter mIsOverwritePlayerPos; + agl::utl::Parameter mMapProjectName; + agl::utl::Parameter mMapResourceName; + agl::utl::Parameter mIsStartupDemo; + agl::utl::Parameter mProgress; + agl::utl::Parameter mProductFormat; + agl::utl::Parameter mNextDemo; + agl::utl::Parameter mIsStopChemical; + + agl::utl::Parameter mIsMovePlayerEndPos; + agl::utl::Parameter mPlayerEndPos; + + agl::utl::Parameter> mStartLocationType; + agl::utl::Parameter> mEventMode; + agl::utl::Parameter mWithTransAnimation; + + agl::utl::Parameter mOverwritePlayerRotY; + agl::utl::Parameter mPlayerEndRotY; + agl::utl::Parameter mStartLocationRotY; + + agl::utl::Parameter mStartPosName; + agl::utl::Parameter mEndPosName; + + agl::utl::Parameter mSkipPolicy; + agl::utl::Parameter mDispName; + agl::utl::Parameter mTraverseLimit; + + agl::utl::Parameter mVoiceComplete; + agl::utl::Parameter mSeComplete; + agl::utl::Parameter mBgmComplete; + agl::utl::Parameter mEffectComplete; + agl::utl::Parameter mEnvComplete; + agl::utl::Parameter mFinalComplete; + + agl::utl::Parameter mForceEnableIK; + + agl::utl::Parameter mIsUseNakedSound; + agl::utl::Parameter mWorldMuteType; + agl::utl::Parameter mBgmStopType; + + agl::utl::Parameter mTraverseType; + agl::utl::Parameter mTraversePos; + + agl::utl::Parameter mWaitLoadActorNames; + agl::utl::Parameter mHideActors; + agl::utl::Parameter mDisableFarActors; + agl::utl::Parameter mTraverseMergePolicy; + agl::utl::Parameter mHighPriorityActors; + agl::utl::Parameter mTraverseCutPos; + agl::utl::Parameter mTraverseCutRadius; + agl::utl::Parameter mTraverseInnerCutPos1; + agl::utl::Parameter mTraverseInnerCutRadius1; + agl::utl::Parameter mTraverseInnerCutPos2; + agl::utl::Parameter mTraverseInnerCutRadius2; + agl::utl::Parameter mDisableTraverseTime; +}; + +} // namespace ksys::res