ksys/evt: Add DemoInfo

This commit is contained in:
Léo Lam 2021-06-15 23:12:30 +02:00
parent 53576759ed
commit 4b0a72025c
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
4 changed files with 410 additions and 43 deletions

View File

@ -75394,49 +75394,49 @@
0x0000007100da56c4,evt::ActionContext::statusStuff_1,68,
0x0000007100da5708,evt::ActionContext::statusStuff_2,36,
0x0000007100da572c,sub_7100DA572C,56,
0x0000007100da5764,evt::DemoData::ctor,220,
0x0000007100da5840,evt::DemoData::init,1000,
0x0000007100da5c28,sub_7100DA5C28,28,
0x0000007100da5c44,sub_7100DA5C44,28,
0x0000007100da5c60,evt::DemoData::getTime,24,
0x0000007100da5c78,evt::DemoData::getWeather,28,
0x0000007100da5c94,evt::DemoData::getIsStopChemical,32,
0x0000007100da5cb4,evt::DemoData::x,32,
0x0000007100da5cd4,sub_7100DA5CD4,24,
0x0000007100da5cec,sub_7100DA5CEC,28,
0x0000007100da5d08,evt::DemoData::isForbidSkip,152,
0x0000007100da5da0,sub_7100DA5DA0,92,
0x0000007100da5dfc,sub_7100DA5DFC,28,
0x0000007100da5e18,evt::DemoData::x_0,32,
0x0000007100da5e38,sub_7100DA5E38,32,
0x0000007100da5e58,evt::DemoData::getWorldMuteType,28,
0x0000007100da5e74,sub_7100DA5E74,28,
0x0000007100da5e90,sub_7100DA5E90,28,
0x0000007100da5eac,evt::DemoData::getTraverseLimit,24,
0x0000007100da5ec4,sub_7100DA5EC4,568,
0x0000007100da60fc,sub_7100DA60FC,368,
0x0000007100da626c,sub_7100DA626C,484,
0x0000007100da6450,sub_7100DA6450,680,
0x0000007100da66f8,nullsub_3822,4,
0x0000007100da66fc,j__ZdlPv_873,4,
0x0000007100da6700,nullsub_3823,4,
0x0000007100da6704,j__ZdlPv_874,4,
0x0000007100da6708,nullsub_3824,4,
0x0000007100da670c,j__ZdlPv_875,4,
0x0000007100da6710,nullsub_3825,4,
0x0000007100da6714,j__ZdlPv_876,4,
0x0000007100da6718,nullsub_3826,4,
0x0000007100da671c,j__ZdlPv_877,4,
0x0000007100da6720,nullsub_3827,4,
0x0000007100da6724,j__ZdlPv_878,4,
0x0000007100da6728,nullsub_3828,4,
0x0000007100da672c,j__ZdlPv_879,4,
0x0000007100da6730,nullsub_3829,4,
0x0000007100da6734,j__ZdlPv_880,4,
0x0000007100da6738,nullsub_3830,4,
0x0000007100da673c,j__ZdlPv_881,4,
0x0000007100da6740,nullsub_3831,4,
0x0000007100da6744,j__ZdlPv_882,4,
0x0000007100da5764,evt::DemoData::ctor,220,_ZN4ksys3evt8DemoInfoC1Ev
0x0000007100da5840,evt::DemoData::init,1000,_ZN4ksys3evt8DemoInfo4initEPKNS_3res4DemoE
0x0000007100da5c28,sub_7100DA5C28,28,_ZNK4ksys3evt8DemoInfo11getLocationEv
0x0000007100da5c44,sub_7100DA5C44,28,_ZNK4ksys3evt8DemoInfo17getMapProjectNameEv
0x0000007100da5c60,evt::DemoData::getTime,24,_ZNK4ksys3evt8DemoInfo7getTimeEv
0x0000007100da5c78,evt::DemoData::getWeather,28,_ZNK4ksys3evt8DemoInfo10getWeatherEv
0x0000007100da5c94,evt::DemoData::getIsStopChemical,32,_ZNK4ksys3evt8DemoInfo14isStopChemicalEv
0x0000007100da5cb4,evt::DemoData::x,32,_ZNK4ksys3evt8DemoInfo20isWithTransAnimationEv
0x0000007100da5cd4,sub_7100DA5CD4,24,_ZNK4ksys3evt8DemoInfo20getStartLocationRotYEv
0x0000007100da5cec,sub_7100DA5CEC,28,_ZNK4ksys3evt8DemoInfo15getStartPosNameEv
0x0000007100da5d08,evt::DemoData::isForbidSkip,152,_ZNK4ksys3evt8DemoInfo12isForbidSkipEv
0x0000007100da5da0,sub_7100DA5DA0,92,_ZNK4ksys3evt8DemoInfo25isSkipPolicyMoveLastFrameEv
0x0000007100da5dfc,sub_7100DA5DFC,28,_ZNK4ksys3evt8DemoInfo11getDispNameEv
0x0000007100da5e18,evt::DemoData::x_0,32,_ZNK4ksys3evt8DemoInfo15isForceEnableIKEv
0x0000007100da5e38,sub_7100DA5E38,32,_ZNK4ksys3evt8DemoInfo15isUseNakedSoundEv
0x0000007100da5e58,evt::DemoData::getWorldMuteType,28,_ZNK4ksys3evt8DemoInfo16getWorldMuteTypeEv
0x0000007100da5e74,sub_7100DA5E74,28,_ZNK4ksys3evt8DemoInfo14getTraversePosEv
0x0000007100da5e90,sub_7100DA5E90,28,_ZNK4ksys3evt8DemoInfo21getWaitLoadActorNamesEv
0x0000007100da5eac,evt::DemoData::getTraverseLimit,24,_ZNK4ksys3evt8DemoInfo16getTraverseLimitEv
0x0000007100da5ec4,sub_7100DA5EC4,568,_ZN4ksys3evt8DemoInfo8Progress3setERKN4sead14SafeStringBaseIcEE
0x0000007100da60fc,sub_7100DA60FC,368,_ZN4ksys3evt8DemoInfo9StartType3setERKN4sead14SafeStringBaseIcEE
0x0000007100da626c,sub_7100DA626C,484,_ZN4ksys3evt8DemoInfo9EventMode3setERKN4sead14SafeStringBaseIcEE
0x0000007100da6450,sub_7100DA6450,680,_ZN4ksys3evt8DemoInfo17StartLocationType3setERKN4sead14SafeStringBaseIcEE
0x0000007100da66f8,nullsub_3822,4,_ZN4ksys3evt8DemoInfoD2Ev
0x0000007100da66fc,j__ZdlPv_873,4,_ZN4ksys3evt8DemoInfoD0Ev
0x0000007100da6700,nullsub_3823,4,_ZN4ksys3evt8DemoInfo13NoEntryActorsD2Ev
0x0000007100da6704,j__ZdlPv_874,4,_ZN4ksys3evt8DemoInfo13NoEntryActorsD0Ev
0x0000007100da6708,nullsub_3824,4,_ZN4ksys3evt8DemoInfo13ProductFormatD2Ev
0x0000007100da670c,j__ZdlPv_875,4,_ZN4ksys3evt8DemoInfo13ProductFormatD0Ev
0x0000007100da6710,nullsub_3825,4,_ZN4ksys3evt8DemoInfo8ProgressD2Ev
0x0000007100da6714,j__ZdlPv_876,4,_ZN4ksys3evt8DemoInfo8ProgressD0Ev
0x0000007100da6718,nullsub_3826,4,_ZN4ksys3evt8DemoInfo8SaveTypeD2Ev
0x0000007100da671c,j__ZdlPv_877,4,_ZN4ksys3evt8DemoInfo8SaveTypeD0Ev
0x0000007100da6720,nullsub_3827,4,_ZN4ksys3evt8DemoInfo9StartTypeD2Ev
0x0000007100da6724,j__ZdlPv_878,4,_ZN4ksys3evt8DemoInfo9StartTypeD0Ev
0x0000007100da6728,nullsub_3828,4,_ZN4ksys3evt8DemoInfo9ExtensionD2Ev
0x0000007100da672c,j__ZdlPv_879,4,_ZN4ksys3evt8DemoInfo9ExtensionD0Ev
0x0000007100da6730,nullsub_3829,4,_ZN4ksys3evt8DemoInfo9EventModeD2Ev
0x0000007100da6734,j__ZdlPv_880,4,_ZN4ksys3evt8DemoInfo9EventModeD0Ev
0x0000007100da6738,nullsub_3830,4,_ZN4ksys3evt8DemoInfo17StartLocationTypeD2Ev
0x0000007100da673c,j__ZdlPv_881,4,_ZN4ksys3evt8DemoInfo17StartLocationTypeD0Ev
0x0000007100da6740,nullsub_3831,4,_ZN4ksys3evt8DemoInfo12TraverseTypeD2Ev
0x0000007100da6744,j__ZdlPv_882,4,_ZN4ksys3evt8DemoInfo12TraverseTypeD0Ev
0x0000007100da6748,evt::ActionBase::ctor,208,
0x0000007100da6818,evt::ActionBase::dtor,68,
0x0000007100da685c,evt::ActionBase::m3,68,

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

View File

@ -1,4 +1,6 @@
target_sources(uking PRIVATE
evtDemoInfo.cpp
evtDemoInfo.h
evtEvent.cpp
evtEvent.h
evtInfoData.cpp

View File

@ -0,0 +1,205 @@
#include "KingSystem/Event/evtDemoInfo.h"
#include "KingSystem/Resource/Event/resResourceDemo.h"
namespace ksys::evt {
DemoInfo::DemoInfo() {
init(nullptr);
}
bool DemoInfo::init(const res::Demo* resource) {
mRes = resource;
if (mRes) {
mNoEntryActors.set(mRes->mNoEntryActors.ref());
mProductFormat.set(mRes->mProductFormat.ref());
mProgress.set(mRes->mProgress.ref());
mSaveType.set(mRes->mSaveType.ref());
mStartType.set(mRes->mStartType.ref());
mExtension.set(mRes->mExtension.ref());
mEventMode.set(mRes->mEventMode.ref());
mStartLocationType.set(mRes->mStartLocationType.ref());
mTraverseType.set(mRes->mTraverseType.ref());
} else {
mNoEntryActors.value = NoEntryActors::kDefault;
mProductFormat.value = ProductFormat::kOther;
mProgress.value = Progress::kOther;
mSaveType.value = SaveType::kNoAutoSave;
mStartType.value = StartType::kOther;
mExtension.value = Extension::kOther;
mEventMode.value = EventMode::kOther;
mStartLocationType.value = StartLocationType::kOther;
mTraverseType.value = TraverseType::kOther;
}
return mRes != nullptr;
}
const sead::Vector3f& DemoInfo::getLocation() const {
return isValid() ? mRes->mLocation.ref() : sead::Vector3f::zero;
}
const sead::SafeString& DemoInfo::getMapProjectName() const {
return isValid() ? mRes->mMapProjectName.ref() : sead::SafeString::cEmptyString;
}
float DemoInfo::getTime() const {
return isValid() ? mRes->mTime.ref() : -1.0;
}
const sead::SafeString& DemoInfo::getWeather() const {
return isValid() ? mRes->mWeather.ref() : sead::SafeString::cEmptyString;
}
bool DemoInfo::isStopChemical() const {
return !mRes || mRes->mIsStopChemical.ref();
}
bool DemoInfo::isWithTransAnimation() const {
return mRes && mRes->mWithTransAnimation.ref();
}
float DemoInfo::getStartLocationRotY() const {
return isValid() ? mRes->mStartLocationRotY.ref() : 0.0;
}
const sead::SafeString& DemoInfo::getStartPosName() const {
return isValid() ? mRes->mStartPosName.ref() : sead::SafeString::cEmptyString;
}
bool DemoInfo::isForbidSkip() const {
return mRes && mRes->mSkipPolicy.ref() == "Forbid";
}
bool DemoInfo::isSkipPolicyMoveLastFrame() const {
if (isValid()) {
if (mRes->mSkipPolicy->include("MoveLastFrame"))
return true;
}
return false;
}
const sead::SafeString& DemoInfo::getDispName() const {
return isValid() ? mRes->mDispName.ref() : sead::SafeString::cEmptyString;
}
bool DemoInfo::isForceEnableIK() const {
return mRes && mRes->mForceEnableIK.ref();
}
bool DemoInfo::isUseNakedSound() const {
return mRes && mRes->mIsUseNakedSound.ref();
}
const sead::SafeString& DemoInfo::getWorldMuteType() const {
return isValid() ? mRes->mWorldMuteType.ref() : sead::SafeString::cEmptyString;
}
const sead::Vector3f& DemoInfo::getTraversePos() const {
return isValid() ? mRes->mTraversePos.ref() : sead::Vector3f::zero;
}
const sead::SafeString& DemoInfo::getWaitLoadActorNames() const {
return isValid() ? mRes->mWaitLoadActorNames.ref() : sead::SafeString::cEmptyString;
}
float DemoInfo::getTraverseLimit() const {
return isValid() ? mRes->mTraverseLimit.ref() : 0.0;
}
void DemoInfo::NoEntryActors::set(const sead::SafeString& val) {
if (val == "AllPause")
value = kAllPause;
else
value = kDefault;
}
void DemoInfo::ProductFormat::set(const sead::SafeString& val) {
if (val == "RealTime")
value = kRealTime;
else if (val.startsWith("MovieFile"))
value = kMovieFile;
else
value = kOther;
}
void DemoInfo::Progress::set(const sead::SafeString& val) {
if (val == "Initialize")
value = kInitialize;
else if (val == "Temp")
value = kTemp;
else if (val == "Conte")
value = kConte;
else if (val == "Animatics")
value = kAnimatics;
else if (val == "Product")
value = kProduct;
else
value = kOther;
}
void DemoInfo::SaveType::set(const sead::SafeString& val) {
if (val == "AutoSave")
value = kAutoSave;
else
value = kNoAutoSave;
}
void DemoInfo::StartType::set(const sead::SafeString& val) {
if (val == "Seamless")
value = kSeamless;
else if (val == "Load")
value = kLoad;
else if (val == "Load(NotWaitPlacement)")
value = kLoadNotWaitPlacement;
else
value = kOther;
}
void DemoInfo::Extension::set(const sead::SafeString& val) {
if (val == "evfl")
value = kEvfl;
else if (val == "evtm")
value = kEvtm;
else
value = kOther;
}
void DemoInfo::EventMode::set(const sead::SafeString& val) {
if (val == "Seamless")
value = kSeamless;
else if (val == "Load")
value = kLoad;
else if (val == "FullPackage")
value = kFullPackage;
else if (val == "Continue")
value = kContinue;
else
value = kOther;
}
void DemoInfo::StartLocationType::set(const sead::SafeString& val) {
if (val == "Starter")
value = kStarter;
else if (val == "StarterPositionOnly")
value = kStarterPositionOnly;
else if (val == "Player")
value = kPlayer;
else if (val == "SetWorldPos")
value = kSetWorldPos;
else if (val == "SearchSafetyPos")
value = kSearchSafetyPos;
else if (val == "MapUnitStartPos")
value = kMapUnitStartPos;
else
value = kOther;
}
void DemoInfo::TraverseType::set(const sead::SafeString& val) {
if (val == "SetPos")
value = kSetPos;
else
value = kDefault;
}
} // namespace ksys::evt

View File

@ -0,0 +1,160 @@
#pragma once
#include <basis/seadTypes.h>
#include <math/seadVector.h>
#include <prim/seadSafeString.h>
namespace ksys::res {
class Demo;
}
namespace ksys::evt {
class DemoInfo {
public:
struct NoEntryActors {
enum Value : u8 {
kDefault = 0,
kAllPause = 1,
};
virtual ~NoEntryActors() = default;
void set(const sead::SafeString& val);
Value value = kDefault;
};
struct ProductFormat {
enum Value {
kRealTime = 0,
kMovieFile = 1,
kOther = 2,
};
virtual ~ProductFormat() = default;
void set(const sead::SafeString& val);
Value value = kOther;
};
struct Progress {
enum Value {
kInitialize = 0,
kTemp = 1,
kConte = 2,
kAnimatics = 3,
kProduct = 4,
kOther = 5,
};
virtual ~Progress() = default;
void set(const sead::SafeString& val);
Value value = kOther;
};
struct SaveType {
enum Value : u8 {
kNoAutoSave = 0,
kAutoSave = 1,
};
virtual ~SaveType() = default;
void set(const sead::SafeString& val);
Value value = kNoAutoSave;
};
struct StartType {
enum Value {
kSeamless = 0,
kLoad = 1,
kLoadNotWaitPlacement = 2,
kOther = 3,
};
virtual ~StartType() = default;
void set(const sead::SafeString& val);
Value value = kOther;
};
struct Extension {
enum Value {
kEvfl = 0,
kEvtm = 1,
kOther = 2,
};
virtual ~Extension() = default;
void set(const sead::SafeString& val);
Value value = kOther;
};
struct EventMode {
enum Value {
kSeamless = 0,
kLoad = 1,
kFullPackage = 2,
kContinue = 3,
kOther = 4,
};
virtual ~EventMode() = default;
void set(const sead::SafeString& val);
Value value = kOther;
};
struct StartLocationType {
enum Value {
kStarter = 0,
kStarterPositionOnly = 1,
kPlayer = 2,
kSetWorldPos = 3,
kMapUnitStartPos = 4,
kSearchSafetyPos = 5,
kOther = 6,
};
virtual ~StartLocationType() = default;
void set(const sead::SafeString& val);
Value value = kOther;
};
struct TraverseType {
enum Value {
kDefault = 0,
kSetPos = 1,
kOther = 2,
};
virtual ~TraverseType() = default;
void set(const sead::SafeString& val);
Value value = kOther;
};
DemoInfo();
virtual ~DemoInfo() = default;
bool init(const res::Demo* resource);
bool isValid() const { return mRes != nullptr; }
const sead::Vector3f& getLocation() const;
const sead::SafeString& getMapProjectName() const;
float getTime() const;
const sead::SafeString& getWeather() const;
bool isStopChemical() const;
bool isWithTransAnimation() const;
float getStartLocationRotY() const;
const sead::SafeString& getStartPosName() const;
bool isForbidSkip() const;
bool isSkipPolicyMoveLastFrame() const;
const sead::SafeString& getDispName() const;
bool isForceEnableIK() const;
bool isUseNakedSound() const;
const sead::SafeString& getWorldMuteType() const;
const sead::Vector3f& getTraversePos() const;
const sead::SafeString& getWaitLoadActorNames() const;
float getTraverseLimit() const;
private:
const res::Demo* mRes = nullptr;
NoEntryActors mNoEntryActors;
ProductFormat mProductFormat;
Progress mProgress;
SaveType mSaveType;
StartType mStartType;
Extension mExtension;
EventMode mEventMode;
StartLocationType mStartLocationType;
TraverseType mTraverseType;
};
} // namespace ksys::evt