ksys/res: Implement Demo

This commit is contained in:
Léo Lam 2020-09-05 21:06:41 +02:00
parent 072e906eaf
commit 0fafc292f9
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
5 changed files with 183 additions and 7 deletions

View File

@ -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

View File

@ -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,

Can't render this file because it is too large.

@ -1 +1 @@
Subproject commit ef9b03681383c64b99861ac5e65ad71fc4b90988
Subproject commit b085263d6999ae37d8442ad1a1e9f5832dbdfc19

View File

@ -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

View File

@ -0,0 +1,85 @@
#pragma once
#include <agl/Utils/aglParameter.h>
#include <agl/Utils/aglParameterIO.h>
#include <agl/Utils/aglParameterObj.h>
#include <resource/seadResource.h>
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<sead::Vector3f> mLocation;
agl::utl::Parameter<sead::FixedSafeString<32>> mWeather;
agl::utl::Parameter<f32> mTime;
agl::utl::Parameter<sead::FixedSafeString<32>> mStartType;
agl::utl::Parameter<sead::FixedSafeString<32>> mNoEntryActors;
agl::utl::Parameter<sead::FixedSafeString<32>> mSaveType;
agl::utl::Parameter<sead::FixedSafeString<32>> mExtension;
agl::utl::Parameter<bool> mIsFlashbackDemo;
agl::utl::Parameter<sead::Vector3f> mOverwritePlayerPos;
agl::utl::Parameter<bool> mIsOverwritePlayerPos;
agl::utl::Parameter<sead::SafeString> mMapProjectName;
agl::utl::Parameter<sead::SafeString> mMapResourceName;
agl::utl::Parameter<bool> mIsStartupDemo;
agl::utl::Parameter<sead::SafeString> mProgress;
agl::utl::Parameter<sead::SafeString> mProductFormat;
agl::utl::Parameter<sead::SafeString> mNextDemo;
agl::utl::Parameter<bool> mIsStopChemical;
agl::utl::Parameter<bool> mIsMovePlayerEndPos;
agl::utl::Parameter<sead::Vector3f> mPlayerEndPos;
agl::utl::Parameter<sead::FixedSafeString<32>> mStartLocationType;
agl::utl::Parameter<sead::FixedSafeString<32>> mEventMode;
agl::utl::Parameter<bool> mWithTransAnimation;
agl::utl::Parameter<f32> mOverwritePlayerRotY;
agl::utl::Parameter<f32> mPlayerEndRotY;
agl::utl::Parameter<f32> mStartLocationRotY;
agl::utl::Parameter<sead::SafeString> mStartPosName;
agl::utl::Parameter<sead::SafeString> mEndPosName;
agl::utl::Parameter<sead::SafeString> mSkipPolicy;
agl::utl::Parameter<sead::SafeString> mDispName;
agl::utl::Parameter<f32> mTraverseLimit;
agl::utl::Parameter<bool> mVoiceComplete;
agl::utl::Parameter<bool> mSeComplete;
agl::utl::Parameter<bool> mBgmComplete;
agl::utl::Parameter<bool> mEffectComplete;
agl::utl::Parameter<bool> mEnvComplete;
agl::utl::Parameter<bool> mFinalComplete;
agl::utl::Parameter<bool> mForceEnableIK;
agl::utl::Parameter<bool> mIsUseNakedSound;
agl::utl::Parameter<sead::SafeString> mWorldMuteType;
agl::utl::Parameter<sead::SafeString> mBgmStopType;
agl::utl::Parameter<sead::SafeString> mTraverseType;
agl::utl::Parameter<sead::Vector3f> mTraversePos;
agl::utl::Parameter<sead::SafeString> mWaitLoadActorNames;
agl::utl::Parameter<sead::SafeString> mHideActors;
agl::utl::Parameter<sead::SafeString> mDisableFarActors;
agl::utl::Parameter<sead::SafeString> mTraverseMergePolicy;
agl::utl::Parameter<sead::SafeString> mHighPriorityActors;
agl::utl::Parameter<sead::Vector3f> mTraverseCutPos;
agl::utl::Parameter<f32> mTraverseCutRadius;
agl::utl::Parameter<sead::Vector3f> mTraverseInnerCutPos1;
agl::utl::Parameter<f32> mTraverseInnerCutRadius1;
agl::utl::Parameter<sead::Vector3f> mTraverseInnerCutPos2;
agl::utl::Parameter<f32> mTraverseInnerCutRadius2;
agl::utl::Parameter<s32> mDisableTraverseTime;
};
} // namespace ksys::res