From a26ae0ba912065729e70cd749733100311d6a993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Thu, 22 Oct 2020 18:53:24 +0200 Subject: [PATCH] ksys/gdt: Start adding TriggerParam --- data/uking_functions.csv | 2 +- src/KingSystem/GameData/CMakeLists.txt | 2 + src/KingSystem/GameData/gdtTriggerParam.cpp | 11 +++ src/KingSystem/GameData/gdtTriggerParam.h | 91 +++++++++++++++++++++ 4 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 src/KingSystem/GameData/gdtTriggerParam.cpp create mode 100644 src/KingSystem/GameData/gdtTriggerParam.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index f2a613ac..5c9b7c4c 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -74338,7 +74338,7 @@ 0x0000007100dd82d8,sub_7100DD82D8,184, 0x0000007100dd8390,sub_7100DD8390,144, 0x0000007100dd8420,nullsub_5546,4, -0x0000007100dd8424,TriggerParam::ctor,140, +0x0000007100dd8424,TriggerParam::ctor,140,_ZN4ksys3gdt12TriggerParamC1Ev 0x0000007100dd84b0,TriggerParam::copyFromBgdata,3644, 0x0000007100dd92ec,TriggerParam::init,128, 0x0000007100dd936c,TriggerParam::Buffer::sort,760, diff --git a/src/KingSystem/GameData/CMakeLists.txt b/src/KingSystem/GameData/CMakeLists.txt index fdff3c60..a7f9fc57 100644 --- a/src/KingSystem/GameData/CMakeLists.txt +++ b/src/KingSystem/GameData/CMakeLists.txt @@ -3,4 +3,6 @@ target_sources(uking PRIVATE gdtFlag.h gdtManager.cpp gdtManager.h + gdtTriggerParam.cpp + gdtTriggerParam.h ) diff --git a/src/KingSystem/GameData/gdtTriggerParam.cpp b/src/KingSystem/GameData/gdtTriggerParam.cpp new file mode 100644 index 00000000..25356752 --- /dev/null +++ b/src/KingSystem/GameData/gdtTriggerParam.cpp @@ -0,0 +1,11 @@ +#include "KingSystem/GameData/gdtTriggerParam.h" + +namespace ksys::gdt { + +TriggerParam::TriggerParam() { + mCriticalSections.constructDefault(); + mFlags.constructDefault(); + mCounts.fill(0); +} + +} // namespace ksys::gdt diff --git a/src/KingSystem/GameData/gdtTriggerParam.h b/src/KingSystem/GameData/gdtTriggerParam.h new file mode 100644 index 00000000..10944cb7 --- /dev/null +++ b/src/KingSystem/GameData/gdtTriggerParam.h @@ -0,0 +1,91 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include "KingSystem/GameData/gdtFlag.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::gdt { + +class TriggerParam { +public: + struct ResetEntry { + sead::SizedEnum type; + sead::SizedEnum reset_type; + s32 index; + }; + KSYS_CHECK_SIZE_NX150(ResetEntry, 0x8); + + TriggerParam(); + +private: + enum class Flag : u8 { + + }; + + sead::TypedBitFlag& getFlags() { return *mFlags.data(); } + const sead::TypedBitFlag& getFlags() const { return *mFlags.data(); } + sead::SafeArray& getCriticalSections() { + return *mCriticalSections.data(); + } + + u32 mResourceFlags = 0; + + sead::PtrArray mBoolFlags; + sead::PtrArray mS32Flags; + sead::PtrArray mF32Flags; + sead::PtrArray mStringFlags; + sead::PtrArray mString64Flags; + sead::PtrArray mString256Flags; + sead::PtrArray mVector2fFlags; + sead::PtrArray mVector3fFlags; + sead::PtrArray mVector4fFlags; + + sead::PtrArray mBoolArrayFlags; + sead::PtrArray mS32ArrayFlags; + sead::PtrArray mF32ArrayFlags; + sead::PtrArray mStringArrayFlags; + sead::PtrArray mString64ArrayFlags; + sead::PtrArray mString256ArrayFlags; + sead::PtrArray mVector2fArrayFlags; + sead::PtrArray mVector3fArrayFlags; + sead::PtrArray mVector4fArrayFlags; + + // FIXME + sead::PtrArray mUnkArray0; + sead::PtrArray mUnkArray1; + sead::PtrArray mUnkArray2; + sead::PtrArray mUnkArray3; + sead::PtrArray mUnkArray4; + sead::PtrArray mUnkArray5; + sead::PtrArray mUnkArray6; + sead::PtrArray mUnkArray7; + sead::PtrArray mUnkArray8; + sead::PtrArray mUnkArray9; + sead::PtrArray mUnkArray10; + sead::PtrArray mUnkArray11; + sead::PtrArray mUnkArray12; + sead::PtrArray mUnkArray13; + sead::PtrArray mUnkArray14; + sead::PtrArray mUnkArray15; + sead::PtrArray mUnkArray16; + sead::PtrArray mUnkArray17; + sead::PtrArray mUnkArray18; + sead::PtrArray mUnkArray19; + sead::PtrArray mUnkArray20; + sead::Buffer mResetEntries; + sead::PtrArray mRevivalRandomBools; + + sead::Heap* mHeap = nullptr; + + sead::SafeArray mCounts; + sead::StorageFor> mCriticalSections{}; + sead::StorageFor> mFlags; +}; +KSYS_CHECK_SIZE_NX150(TriggerParam, 0x3f0); + +} // namespace ksys::gdt