ksys/gdt: Implement more TriggerParam functions

This commit is contained in:
Léo Lam 2020-10-22 19:03:41 +02:00
parent 6cae9c75b5
commit 660336044f
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
10 changed files with 1652 additions and 324 deletions

View File

@ -74339,75 +74339,79 @@
0x0000007100dd8390,sub_7100DD8390,144,
0x0000007100dd8420,nullsub_5546,4,
0x0000007100dd8424,TriggerParam::ctor,140,_ZN4ksys3gdt12TriggerParamC1Ev
0x0000007100dd84b0,TriggerParam::copyFromBgdata,3644,
0x0000007100dd92ec,TriggerParam::init,128,
0x0000007100dd936c,TriggerParam::Buffer::sort,760,
0x0000007100dd9664,TriggerParam::d_0,2536,
0x0000007100dda04c,TriggerParam::d_1,260,
0x0000007100dda150,TriggerParam::destroyHeap,52,
0x0000007100dda184,TriggerParam::allocBuffer,12,
0x0000007100dda190,TriggerParam::allocBuffer2,12,
0x0000007100dda19c,TriggerParam::initResetData,4764,
0x0000007100ddb438,TriggerParam::initArrayForRevivalRandomBools,248,
0x0000007100ddb530,TriggerParam::initFromOther,3960,
0x0000007100ddc4a8,sub_7100DDC4A8,432,
0x0000007100ddc658,sub_7100DDC658,472,
0x0000007100ddc830,sub_7100DDC830,472,
0x0000007100ddca08,sub_7100DDCA08,612,
0x0000007100ddcc6c,sub_7100DDCC6C,612,
0x0000007100ddced0,sub_7100DDCED0,612,
0x0000007100ddd134,sub_7100DDD134,380,
0x0000007100ddd2b0,sub_7100DDD2B0,380,
0x0000007100ddd42c,sub_7100DDD42C,380,
0x0000007100ddd5a8,sub_7100DDD5A8,3816,
0x0000007100dde490,sub_7100DDE490,3176,
0x0000007100ddf0f8,TriggerParam::getBoolByIdx,124,
0x0000007100ddf174,TriggerParam::getIntByIdx,120,
0x0000007100ddf1ec,TriggerParam::getFloatByIdx,120,
0x0000007100ddf264,TriggerParam::getString32ByIdx,140,
0x0000007100ddf2f0,TriggerParam::getString64ByIdx,140,
0x0000007100ddf408,TriggerParam::getVec3ByIdx,124,
0x0000007100ddf484,TriggerParam::getBoolByKey_0,368,
0x0000007100ddf5f4,TriggerParam::getBoolByKey,368,
0x0000007100ddf764,TriggerParam::getIntByKey,364,
0x0000007100ddf8d0,TriggerParam::getFloatByKey,364,
0x0000007100ddfa3c,TriggerParam::getString32ByKey,384,
0x0000007100ddfbbc,TriggerParam::getString64ByKey,384,
0x0000007100ddfd3c,TriggerParam::getString256ByKey,384,
0x0000007100ddfebc,TriggerParam::getVec3ByKey,368,
0x0000007100de002c,TriggerParam::getBoolFromArray,164,
0x0000007100de00d0,TriggerParam::getS32FromArray,160,
0x0000007100de0170,TriggerParam::getF32FromArray,160,
0x0000007100de0210,TriggerParam::getString64FromArray,180,
0x0000007100de02c4,TriggerParam::getString256FromArray,180,
0x0000007100de04bc,TriggerParam::getBoolFromArrayByKey,356,
0x0000007100de0620,TriggerParam::getIntFromArrayByKey,352,
0x0000007100de0780,TriggerParam::getFloatFromArrayByKey,352,
0x0000007100de08e0,TriggerParam::getString32FromArrayByKey,372,
0x0000007100de0a54,TriggerParam::getString64FromArrayByKey,372,
0x0000007100de0bc8,TriggerParam::getString256FromArrayByKey,372,
0x0000007100de0d3c,sub_7100DE0D3C,56,
0x0000007100de0d74,sub_7100DE0D74,56,
0x0000007100de0dac,sub_7100DE0DAC,56,
0x0000007100de0de4,sub_7100DE0DE4,56,
0x0000007100de0e1c,sub_7100DE0E1C,56,
0x0000007100de0e54,sub_7100DE0E54,56,
0x0000007100de0e8c,sub_7100DE0E8C,56,
0x0000007100de0ec4,sub_7100DE0EC4,56,
0x0000007100de0efc,sub_7100DE0EFC,56,
0x0000007100de0f34,sub_7100DE0F34,192,
0x0000007100de0ff4,sub_7100DE0FF4,192,
0x0000007100de10b4,sub_7100DE10B4,192,
0x0000007100de1174,sub_7100DE1174,192,
0x0000007100de1234,sub_7100DE1234,192,
0x0000007100de12f4,sub_7100DE12F4,192,
0x0000007100de13b4,sub_7100DE13B4,192,
0x0000007100de1474,sub_7100DE1474,192,
0x0000007100de1534,sub_7100DE1534,192,
0x0000007100de15f4,TriggerParam::getIntArraySizeByKey,248,
0x0000007100de16ec,TriggerParam::getString64ArraySizeByKey,248,
0x0000007100de17e4,TriggerParam::getVec3fArraySizeByKey,248,
0x0000007100de1a20,TriggerParam::getS32Max,324,
0x0000007100dd84b0,TriggerParam::copyFromBgdata,3644,_ZN4ksys3gdt12TriggerParam19copyFromGameDataResEPNS_3res8GameDataEPN4sead4HeapE
0x0000007100dd92ec,TriggerParam::init,128,_ZN4ksys3gdt12TriggerParam4initEPN4sead4HeapE
0x0000007100dd936c,TriggerParam::Buffer::sort,760,_ZN4ksys3gdt12_GLOBAL__N_116sortFlagPtrArrayERN4sead8PtrArrayINS0_8FlagBaseEEE!
0x0000007100dd9664,TriggerParam::d_0,2536,_ZN4ksys3gdt12TriggerParam23allocCombinedFlagArraysEPN4sead4HeapE
0x0000007100dda04c,TriggerParam::d_1,260,_ZN4ksys3gdt12TriggerParam20updateBoolFlagCountsEv
0x0000007100dda150,TriggerParam::destroyHeap,52,_ZN4ksys3gdt12TriggerParam11destroyHeapEv
0x0000007100dda184,TriggerParam::allocBuffer,12,_ZN4ksys3gdt12TriggerParam10allocBoolsEiPN4sead4HeapE
0x0000007100dda190,TriggerParam::allocBuffer2,12,_ZN4ksys3gdt12TriggerParam9allocS32sEiPN4sead4HeapE
0x0000007100dda19c,TriggerParam::initResetData,4764,_ZN4ksys3gdt12TriggerParam13initResetDataEPN4sead4HeapE
0x0000007100ddb438,TriggerParam::initArrayForRevivalRandomBools,248,_ZN4ksys3gdt12TriggerParam22initRevivalRandomBoolsEPN4sead4HeapE
0x0000007100ddb530,TriggerParam::initFromOther,3960,_ZN4ksys3gdt12TriggerParam12copyAllFlagsERKS1_PN4sead4HeapEb
0x0000007100ddc4a8,sub_7100DDC4A8,432,_ZN4ksys3gdt12_GLOBAL__N_115makeFlagProxiesIbEEvRN4sead8PtrArrayINS0_8FlagBaseEEERKS6_iPNS3_4HeapEb
0x0000007100ddc658,sub_7100DDC658,472,_ZN4ksys3gdt12_GLOBAL__N_115makeFlagProxiesIiEEvRN4sead8PtrArrayINS0_8FlagBaseEEERKS6_iPNS3_4HeapEb
0x0000007100ddc830,sub_7100DDC830,472,_ZN4ksys3gdt12_GLOBAL__N_115makeFlagProxiesIfEEvRN4sead8PtrArrayINS0_8FlagBaseEEERKS6_iPNS3_4HeapEb
0x0000007100ddca08,sub_7100DDCA08,612,_ZN4ksys3gdt12_GLOBAL__N_115makeFlagProxiesIN4sead15FixedSafeStringILi32EEEEEvRNS3_8PtrArrayINS0_8FlagBaseEEERKS8_iPNS3_4HeapEb
0x0000007100ddcc6c,sub_7100DDCC6C,612,_ZN4ksys3gdt12_GLOBAL__N_115makeFlagProxiesIN4sead15FixedSafeStringILi64EEEEEvRNS3_8PtrArrayINS0_8FlagBaseEEERKS8_iPNS3_4HeapEb
0x0000007100ddced0,sub_7100DDCED0,612,_ZN4ksys3gdt12_GLOBAL__N_115makeFlagProxiesIN4sead15FixedSafeStringILi256EEEEEvRNS3_8PtrArrayINS0_8FlagBaseEEERKS8_iPNS3_4HeapEb
0x0000007100ddd134,sub_7100DDD134,380,_ZN4ksys3gdt12_GLOBAL__N_115makeFlagProxiesIN4sead7Vector2IfEEEEvRNS3_8PtrArrayINS0_8FlagBaseEEERKS8_iPNS3_4HeapEb
0x0000007100ddd2b0,sub_7100DDD2B0,380,_ZN4ksys3gdt12_GLOBAL__N_115makeFlagProxiesIN4sead7Vector3IfEEEEvRNS3_8PtrArrayINS0_8FlagBaseEEERKS8_iPNS3_4HeapEb
0x0000007100ddd42c,sub_7100DDD42C,380,_ZN4ksys3gdt12_GLOBAL__N_115makeFlagProxiesIN4sead7Vector4IfEEEEvRNS3_8PtrArrayINS0_8FlagBaseEEERKS8_iPNS3_4HeapEb
0x0000007100ddd5a8,sub_7100DDD5A8,3816,_ZN4ksys3gdt12TriggerParam18copyPermanentFlagsERKS1_PN4sead4HeapE
0x0000007100dde490,sub_7100DDE490,3176,_ZNK4ksys3gdt12TriggerParam11getFlagTypeERKN4sead14SafeStringBaseIcEE
0x0000007100ddf0f8,TriggerParam::getBoolByIdx,124,_ZNK4ksys3gdt12TriggerParam7getBoolEPbib
0x0000007100ddf174,TriggerParam::getIntByIdx,120,_ZNK4ksys3gdt12TriggerParam6getS32EPiib
0x0000007100ddf1ec,TriggerParam::getFloatByIdx,120,_ZNK4ksys3gdt12TriggerParam6getF32EPfib
0x0000007100ddf264,TriggerParam::getString32ByIdx,140,_ZNK4ksys3gdt12TriggerParam6getStrEPPKcib
0x0000007100ddf2f0,TriggerParam::getString64ByIdx,140,_ZNK4ksys3gdt12TriggerParam8getStr64EPPKcib
0x0000007100ddf37c,_ZNK4ksys3gdt12TriggerParam9getStr256EPPKcib,0x8c,_ZNK4ksys3gdt12TriggerParam9getStr256EPPKcib
0x0000007100ddf408,TriggerParam::getVec3ByIdx,124,_ZNK4ksys3gdt12TriggerParam8getVec3fEPN4sead7Vector3IfEEib
0x0000007100ddf484,TriggerParam::getBoolByKey_0,368,_ZNK4ksys3gdt12TriggerParam7getBoolEPbRKN4sead14SafeStringBaseIcEEb
0x0000007100ddf5f4,TriggerParam::getBoolByKey,368,_ZNK4ksys3gdt12TriggerParam8getBool2EPbRKN4sead14SafeStringBaseIcEEb
0x0000007100ddf764,TriggerParam::getIntByKey,364,_ZNK4ksys3gdt12TriggerParam6getS32EPiRKN4sead14SafeStringBaseIcEEb
0x0000007100ddf8d0,TriggerParam::getFloatByKey,364,_ZNK4ksys3gdt12TriggerParam6getF32EPfRKN4sead14SafeStringBaseIcEEb
0x0000007100ddfa3c,TriggerParam::getString32ByKey,384,_ZNK4ksys3gdt12TriggerParam6getStrEPPKcRKN4sead14SafeStringBaseIcEEb
0x0000007100ddfbbc,TriggerParam::getString64ByKey,384,_ZNK4ksys3gdt12TriggerParam8getStr64EPPKcRKN4sead14SafeStringBaseIcEEb
0x0000007100ddfd3c,TriggerParam::getString256ByKey,384,_ZNK4ksys3gdt12TriggerParam9getStr256EPPKcRKN4sead14SafeStringBaseIcEEb
0x0000007100ddfebc,TriggerParam::getVec3ByKey,368,_ZNK4ksys3gdt12TriggerParam8getVec3fEPN4sead7Vector3IfEERKNS2_14SafeStringBaseIcEEb
0x0000007100de002c,TriggerParam::getBoolFromArray,164,_ZNK4ksys3gdt12TriggerParam7getBoolEPbiib
0x0000007100de00d0,TriggerParam::getS32FromArray,160,_ZNK4ksys3gdt12TriggerParam6getS32EPiiib
0x0000007100de0170,TriggerParam::getF32FromArray,160,_ZNK4ksys3gdt12TriggerParam6getF32EPfiib
0x0000007100de0210,TriggerParam::getString64FromArray,180,_ZNK4ksys3gdt12TriggerParam8getStr64EPPKciib
0x0000007100de02c4,TriggerParam::getString256FromArray,180,_ZNK4ksys3gdt12TriggerParam9getStr256EPPKciib
0x0000007100DE0378,_ZNK4ksys3gdt12TriggerParam8getVec2fEPN4sead7Vector2IfEEiib,0xa0,_ZNK4ksys3gdt12TriggerParam8getVec2fEPN4sead7Vector2IfEEiib
0x0000007100DE0418,_ZNK4ksys3gdt12TriggerParam8getVec3fEPN4sead7Vector3IfEEiib,0xa4,_ZNK4ksys3gdt12TriggerParam8getVec3fEPN4sead7Vector3IfEEiib
0x0000007100de04bc,TriggerParam::getBoolFromArrayByKey,356,_ZNK4ksys3gdt12TriggerParam7getBoolEPbRKN4sead14SafeStringBaseIcEEib
0x0000007100de0620,TriggerParam::getIntFromArrayByKey,352,_ZNK4ksys3gdt12TriggerParam6getS32EPiRKN4sead14SafeStringBaseIcEEib
0x0000007100de0780,TriggerParam::getFloatFromArrayByKey,352,_ZNK4ksys3gdt12TriggerParam6getF32EPfRKN4sead14SafeStringBaseIcEEib
0x0000007100de08e0,TriggerParam::getString32FromArrayByKey,372,_ZNK4ksys3gdt12TriggerParam6getStrEPPKcRKN4sead14SafeStringBaseIcEEib
0x0000007100de0a54,TriggerParam::getString64FromArrayByKey,372,_ZNK4ksys3gdt12TriggerParam8getStr64EPPKcRKN4sead14SafeStringBaseIcEEib
0x0000007100de0bc8,TriggerParam::getString256FromArrayByKey,372,_ZNK4ksys3gdt12TriggerParam9getStr256EPPKcRKN4sead14SafeStringBaseIcEEib
0x0000007100de0d3c,sub_7100DE0D3C,56,_ZNK4ksys3gdt12TriggerParam16getBoolArraySizeEPii
0x0000007100de0d74,sub_7100DE0D74,56,_ZNK4ksys3gdt12TriggerParam15getS32ArraySizeEPii
0x0000007100de0dac,sub_7100DE0DAC,56,_ZNK4ksys3gdt12TriggerParam15getF32ArraySizeEPii
0x0000007100de0de4,sub_7100DE0DE4,56,_ZNK4ksys3gdt12TriggerParam15getStrArraySizeEPii
0x0000007100de0e1c,sub_7100DE0E1C,56,_ZNK4ksys3gdt12TriggerParam17getStr64ArraySizeEPii
0x0000007100de0e54,sub_7100DE0E54,56,_ZNK4ksys3gdt12TriggerParam18getStr256ArraySizeEPii
0x0000007100de0e8c,sub_7100DE0E8C,56,_ZNK4ksys3gdt12TriggerParam17getVec2fArraySizeEPii
0x0000007100de0ec4,sub_7100DE0EC4,56,_ZNK4ksys3gdt12TriggerParam17getVec3fArraySizeEPii
0x0000007100de0efc,sub_7100DE0EFC,56,_ZNK4ksys3gdt12TriggerParam17getVec4fArraySizeEPii
0x0000007100de0f34,sub_7100DE0F34,192,_ZNK4ksys3gdt12TriggerParam22getBoolArraySizeByHashEPij
0x0000007100de0ff4,sub_7100DE0FF4,192,_ZNK4ksys3gdt12TriggerParam21getS32ArraySizeByHashEPij
0x0000007100de10b4,sub_7100DE10B4,192,_ZNK4ksys3gdt12TriggerParam21getF32ArraySizeByHashEPij
0x0000007100de1174,sub_7100DE1174,192,_ZNK4ksys3gdt12TriggerParam21getStrArraySizeByHashEPij
0x0000007100de1234,sub_7100DE1234,192,_ZNK4ksys3gdt12TriggerParam23getStr64ArraySizeByHashEPij
0x0000007100de12f4,sub_7100DE12F4,192,_ZNK4ksys3gdt12TriggerParam24getStr256ArraySizeByHashEPij
0x0000007100de13b4,sub_7100DE13B4,192,_ZNK4ksys3gdt12TriggerParam23getVec2fArraySizeByHashEPij
0x0000007100de1474,sub_7100DE1474,192,_ZNK4ksys3gdt12TriggerParam23getVec3fArraySizeByHashEPij
0x0000007100de1534,sub_7100DE1534,192,_ZNK4ksys3gdt12TriggerParam23getVec4fArraySizeByHashEPij
0x0000007100de15f4,TriggerParam::getIntArraySizeByKey,248,_ZNK4ksys3gdt12TriggerParam15getS32ArraySizeEPiRKN4sead14SafeStringBaseIcEE
0x0000007100de16ec,TriggerParam::getString64ArraySizeByKey,248,_ZNK4ksys3gdt12TriggerParam17getStr64ArraySizeEPiRKN4sead14SafeStringBaseIcEE
0x0000007100de17e4,TriggerParam::getVec3fArraySizeByKey,248,_ZNK4ksys3gdt12TriggerParam17getVec3fArraySizeEPiRKN4sead14SafeStringBaseIcEE
0x0000007100DE18DC,_ZNK4ksys3gdt12TriggerParam17getMinValueForS32EPiRKN4sead14SafeStringBaseIcEE,0x144,_ZNK4ksys3gdt12TriggerParam17getMinValueForS32EPiRKN4sead14SafeStringBaseIcEE
0x0000007100de1a20,TriggerParam::getS32Max,324,_ZNK4ksys3gdt12TriggerParam17getMaxValueForS32EPiRKN4sead14SafeStringBaseIcEE
0x0000007100de1b64,TriggerParam::setBoolByIndex,236,
0x0000007100de1c50,sub_7100DE1C50,260,
0x0000007100de1d54,TriggerParam::postSetFlagMaybe,360,
@ -74490,21 +74494,21 @@
0x0000007100df0778,TriggerParam::getGameDataFlagBool,32,
0x0000007100df0798,TriggerParam::getBoolFlag,256,
0x0000007100df0898,sub_7100DF0898,32,
0x0000007100df08b8,TriggerParam::getBoolIdx,184,
0x0000007100df0970,TriggerParam::getS32Idx,184,
0x0000007100df0a28,TriggerParam::getF32Idx,184,
0x0000007100df0ae0,TriggerParam::getString32Idx,184,
0x0000007100df0b98,TriggerParam::getString64Idx,184,
0x0000007100df0c50,TriggerParam::getString256Idx,184,
0x0000007100df0d08,TriggerParam::getVec2Idx,184,
0x0000007100df0dc0,TriggerParam::getVec3Idx,184,
0x0000007100df0e78,TriggerParam::getBoolArrayIdx,144,
0x0000007100df0f08,TriggerParam::getIntArrayIdx,144,
0x0000007100df0f98,TriggerParam::getFloatArrayIdx,144,
0x0000007100df1028,TriggerParam::getString64ArrayIdx,144,
0x0000007100df10b8,TriggerParam::getString256ArrayIdx,144,
0x0000007100df1148,TriggerParam::getVec2ArrayIdx,144,
0x0000007100df11d8,TriggerParam::getVec3ArrayIdx,144,
0x0000007100df08b8,TriggerParam::getBoolIdx,184,_ZNK4ksys3gdt12TriggerParam10getBoolIdxEj
0x0000007100df0970,TriggerParam::getS32Idx,184,_ZNK4ksys3gdt12TriggerParam9getS32IdxEj
0x0000007100df0a28,TriggerParam::getF32Idx,184,_ZNK4ksys3gdt12TriggerParam9getF32IdxEj
0x0000007100df0ae0,TriggerParam::getString32Idx,184,_ZNK4ksys3gdt12TriggerParam9getStrIdxEj
0x0000007100df0b98,TriggerParam::getString64Idx,184,_ZNK4ksys3gdt12TriggerParam11getStr64IdxEj
0x0000007100df0c50,TriggerParam::getString256Idx,184,_ZNK4ksys3gdt12TriggerParam12getStr256IdxEj
0x0000007100df0d08,TriggerParam::getVec2Idx,184,_ZNK4ksys3gdt12TriggerParam11getVec2fIdxEj
0x0000007100df0dc0,TriggerParam::getVec3Idx,184,_ZNK4ksys3gdt12TriggerParam11getVec3fIdxEj
0x0000007100df0e78,TriggerParam::getBoolArrayIdx,144,_ZNK4ksys3gdt12TriggerParam15getBoolArrayIdxEj
0x0000007100df0f08,TriggerParam::getIntArrayIdx,144,_ZNK4ksys3gdt12TriggerParam14getS32ArrayIdxEj
0x0000007100df0f98,TriggerParam::getFloatArrayIdx,144,_ZNK4ksys3gdt12TriggerParam14getF32ArrayIdxEj
0x0000007100df1028,TriggerParam::getString64ArrayIdx,144,_ZNK4ksys3gdt12TriggerParam16getStr64ArrayIdxEj
0x0000007100df10b8,TriggerParam::getString256ArrayIdx,144,_ZNK4ksys3gdt12TriggerParam17getStr256ArrayIdxEj
0x0000007100df1148,TriggerParam::getVec2ArrayIdx,144,_ZNK4ksys3gdt12TriggerParam16getVec2fArrayIdxEj
0x0000007100df11d8,TriggerParam::getVec3ArrayIdx,144,_ZNK4ksys3gdt12TriggerParam16getVec3fArrayIdxEj
0x0000007100df1268,TriggerParam::getS32Flag,256,
0x0000007100df1368,TriggerParam::getF32Flag,256,
0x0000007100df1468,TriggerParam::getString32Flag,256,
@ -74548,208 +74552,208 @@
0x0000007100df2aa8,sub_7100DF2AA8,8,
0x0000007100df2ab0,sub_7100DF2AB0,36,
0x0000007100df2ad4,sub_7100DF2AD4,16,
0x0000007100df2ae4,nullsub_3860,4,
0x0000007100df2ae8,j__ZdlPv_896,4,
0x0000007100df2aec,sub_7100DF2AEC,16,
0x0000007100df2afc,sub_7100DF2AFC,16,
0x0000007100df2b0c,sub_7100DF2B0C,36,
0x0000007100df2b30,sub_7100DF2B30,20,
0x0000007100df2b44,sub_7100DF2B44,16,
0x0000007100df2b54,sub_7100DF2B54,16,
0x0000007100df2b64,sub_7100DF2B64,88,
0x0000007100df2bbc,sub_7100DF2BBC,76,
0x0000007100df2c08,sub_7100DF2C08,60,
0x0000007100df2c44,sub_7100DF2C44,64,
0x0000007100df2c84,sub_7100DF2C84,16,
0x0000007100df2c94,sub_7100DF2C94,16,
0x0000007100df2ae4,nullsub_3860,4,_ZN4ksys3gdt8FlagBaseD2Ev
0x0000007100df2ae8,j__ZdlPv_896,4,_ZN4ksys3gdt9FlagProxyIbED0Ev
0x0000007100df2aec,sub_7100DF2AEC,16,_ZNK4ksys3gdt9FlagProxyIbE7getHashEv
0x0000007100df2afc,sub_7100DF2AFC,16,_ZN4ksys3gdt9FlagProxyIbE7setHashEj
0x0000007100df2b0c,sub_7100DF2B0C,36,_ZNK4ksys3gdt9FlagProxyIbE7getTypeEv
0x0000007100df2b30,sub_7100DF2B30,20,_ZN4ksys3gdt9FlagProxyIbE7setTypeENS0_8FlagTypeE
0x0000007100df2b44,sub_7100DF2B44,16,_ZNK4ksys3gdt9FlagProxyIbE13getPropertiesEv
0x0000007100df2b54,sub_7100DF2B54,16,_ZN4ksys3gdt9FlagProxyIbE13setPropertiesERKNS0_14FlagPropertiesE
0x0000007100df2b64,sub_7100DF2B64,88,_ZN4ksys3gdt9FlagProxyIbE19resetToInitialValueEv
0x0000007100df2bbc,sub_7100DF2BBC,76,_ZNK4ksys3gdt9FlagProxyIbE14isInitialValueEv
0x0000007100df2c08,sub_7100DF2C08,60,_ZNK4ksys3gdt9FlagProxyIbE11getCategoryEv
0x0000007100df2c44,sub_7100DF2C44,64,_ZN4ksys3gdt9FlagProxyIbE11setCategoryEj
0x0000007100df2c84,sub_7100DF2C84,16,_ZNK4ksys3gdt9FlagProxyIbE7getNameEv
0x0000007100df2c94,sub_7100DF2C94,16,_ZNK4ksys3gdt9FlagProxyIbE12getDeleteRevEv
0x0000007100df2ca4,GameDataFlagBool::getRandomResetData,36,_ZNK4ksys3gdt5FlagTIbE18getRandomResetDataEv
0x0000007100df2cc8,sub_7100DF2CC8,16,
0x0000007100df2cd8,sub_7100DF2CD8,16,
0x0000007100df2ce8,sub_7100DF2CE8,12,
0x0000007100df2cf4,sub_7100DF2CF4,8,
0x0000007100df2cfc,sub_7100DF2CFC,8,
0x0000007100df2d04,sub_7100DF2D04,52,
0x0000007100df2d38,sub_7100DF2D38,88,
0x0000007100df2d90,sub_7100DF2D90,16,
0x0000007100df2da0,j__ZdlPv_897,4,
0x0000007100df2da4,sub_7100DF2DA4,16,
0x0000007100df2db4,sub_7100DF2DB4,16,
0x0000007100df2dc4,sub_7100DF2DC4,36,
0x0000007100df2de8,sub_7100DF2DE8,20,
0x0000007100df2dfc,sub_7100DF2DFC,16,
0x0000007100df2e0c,sub_7100DF2E0C,16,
0x0000007100df2e1c,sub_7100DF2E1C,48,
0x0000007100df2e4c,sub_7100DF2E4C,68,
0x0000007100df2e90,sub_7100DF2E90,60,
0x0000007100df2ecc,sub_7100DF2ECC,64,
0x0000007100df2f0c,sub_7100DF2F0C,16,
0x0000007100df2f1c,sub_7100DF2F1C,16,
0x0000007100df2cc8,sub_7100DF2CC8,16,_ZNK4ksys3gdt9FlagProxyIbE9getConfigEv
0x0000007100df2cd8,sub_7100DF2CD8,16,_ZN4ksys3gdt9FlagProxyIbE9setConfigERKNS0_10FlagConfigIbEE
0x0000007100df2ce8,sub_7100DF2CE8,12,_ZNK4ksys3gdt9FlagProxyIbE8getValueEv
0x0000007100df2cf4,sub_7100DF2CF4,8,_ZN4ksys3gdt9FlagProxyIbE11getValueRefEv
0x0000007100df2cfc,sub_7100DF2CFC,8,_ZNK4ksys3gdt9FlagProxyIbE11getValueRefEv
0x0000007100df2d04,sub_7100DF2D04,52,_ZNK4ksys3gdt9FlagProxyIbE8hasValueERKb
0x0000007100df2d38,sub_7100DF2D38,88,_ZN4ksys3gdt9FlagProxyIbE8setValueEb
0x0000007100df2d90,sub_7100DF2D90,16,_ZNK4ksys3gdt9FlagProxyIbE12getDebugDataEv
0x0000007100df2da0,j__ZdlPv_897,4,_ZN4ksys3gdt9FlagProxyIiED0Ev
0x0000007100df2da4,sub_7100DF2DA4,16,_ZNK4ksys3gdt9FlagProxyIiE7getHashEv
0x0000007100df2db4,sub_7100DF2DB4,16,_ZN4ksys3gdt9FlagProxyIiE7setHashEj
0x0000007100df2dc4,sub_7100DF2DC4,36,_ZNK4ksys3gdt9FlagProxyIiE7getTypeEv
0x0000007100df2de8,sub_7100DF2DE8,20,_ZN4ksys3gdt9FlagProxyIiE7setTypeENS0_8FlagTypeE
0x0000007100df2dfc,sub_7100DF2DFC,16,_ZNK4ksys3gdt9FlagProxyIiE13getPropertiesEv
0x0000007100df2e0c,sub_7100DF2E0C,16,_ZN4ksys3gdt9FlagProxyIiE13setPropertiesERKNS0_14FlagPropertiesE
0x0000007100df2e1c,sub_7100DF2E1C,48,_ZN4ksys3gdt9FlagProxyIiE19resetToInitialValueEv
0x0000007100df2e4c,sub_7100DF2E4C,68,_ZNK4ksys3gdt9FlagProxyIiE14isInitialValueEv
0x0000007100df2e90,sub_7100DF2E90,60,_ZNK4ksys3gdt9FlagProxyIiE11getCategoryEv
0x0000007100df2ecc,sub_7100DF2ECC,64,_ZN4ksys3gdt9FlagProxyIiE11setCategoryEj
0x0000007100df2f0c,sub_7100DF2F0C,16,_ZNK4ksys3gdt9FlagProxyIiE7getNameEv
0x0000007100df2f1c,sub_7100DF2F1C,16,_ZNK4ksys3gdt9FlagProxyIiE12getDeleteRevEv
0x0000007100df2f2c,sub_7100DF2F2C,32,_ZNK4ksys3gdt5FlagTIiE18getRandomResetDataEv
0x0000007100df2f4c,sub_7100DF2F4C,16,
0x0000007100df2f5c,sub_7100DF2F5C,16,
0x0000007100df2f6c,sub_7100DF2F6C,8,
0x0000007100df2f74,sub_7100DF2F74,8,
0x0000007100df2f7c,sub_7100DF2F7C,8,
0x0000007100df2f84,sub_7100DF2F84,48,
0x0000007100df2fb4,sub_7100DF2FB4,136,
0x0000007100df303c,sub_7100DF303C,16,
0x0000007100df304c,j__ZdlPv_898,4,
0x0000007100df3050,sub_7100DF3050,16,
0x0000007100df3060,sub_7100DF3060,16,
0x0000007100df3070,sub_7100DF3070,36,
0x0000007100df3094,sub_7100DF3094,20,
0x0000007100df30a8,sub_7100DF30A8,16,
0x0000007100df30b8,sub_7100DF30B8,16,
0x0000007100df30c8,sub_7100DF30C8,48,
0x0000007100df30f8,sub_7100DF30F8,76,
0x0000007100df3144,sub_7100DF3144,60,
0x0000007100df3180,sub_7100DF3180,64,
0x0000007100df31c0,sub_7100DF31C0,16,
0x0000007100df31d0,sub_7100DF31D0,16,
0x0000007100df2f4c,sub_7100DF2F4C,16,_ZNK4ksys3gdt9FlagProxyIiE9getConfigEv
0x0000007100df2f5c,sub_7100DF2F5C,16,_ZN4ksys3gdt9FlagProxyIiE9setConfigERKNS0_10FlagConfigIiEE
0x0000007100df2f6c,sub_7100DF2F6C,8,_ZNK4ksys3gdt9FlagProxyIiE8getValueEv
0x0000007100df2f74,sub_7100DF2F74,8,_ZN4ksys3gdt9FlagProxyIiE11getValueRefEv
0x0000007100df2f7c,sub_7100DF2F7C,8,_ZNK4ksys3gdt9FlagProxyIiE11getValueRefEv
0x0000007100df2f84,sub_7100DF2F84,48,_ZNK4ksys3gdt9FlagProxyIiE8hasValueERKi
0x0000007100df2fb4,sub_7100DF2FB4,136,_ZN4ksys3gdt9FlagProxyIiE8setValueEi
0x0000007100df303c,sub_7100DF303C,16,_ZNK4ksys3gdt9FlagProxyIiE12getDebugDataEv
0x0000007100df304c,j__ZdlPv_898,4,_ZN4ksys3gdt9FlagProxyIfED0Ev
0x0000007100df3050,sub_7100DF3050,16,_ZNK4ksys3gdt9FlagProxyIfE7getHashEv
0x0000007100df3060,sub_7100DF3060,16,_ZN4ksys3gdt9FlagProxyIfE7setHashEj
0x0000007100df3070,sub_7100DF3070,36,_ZNK4ksys3gdt9FlagProxyIfE7getTypeEv
0x0000007100df3094,sub_7100DF3094,20,_ZN4ksys3gdt9FlagProxyIfE7setTypeENS0_8FlagTypeE
0x0000007100df30a8,sub_7100DF30A8,16,_ZNK4ksys3gdt9FlagProxyIfE13getPropertiesEv
0x0000007100df30b8,sub_7100DF30B8,16,_ZN4ksys3gdt9FlagProxyIfE13setPropertiesERKNS0_14FlagPropertiesE
0x0000007100df30c8,sub_7100DF30C8,48,_ZN4ksys3gdt9FlagProxyIfE19resetToInitialValueEv
0x0000007100df30f8,sub_7100DF30F8,76,_ZNK4ksys3gdt9FlagProxyIfE14isInitialValueEv
0x0000007100df3144,sub_7100DF3144,60,_ZNK4ksys3gdt9FlagProxyIfE11getCategoryEv
0x0000007100df3180,sub_7100DF3180,64,_ZN4ksys3gdt9FlagProxyIfE11setCategoryEj
0x0000007100df31c0,sub_7100DF31C0,16,_ZNK4ksys3gdt9FlagProxyIfE7getNameEv
0x0000007100df31d0,sub_7100DF31D0,16,_ZNK4ksys3gdt9FlagProxyIfE12getDeleteRevEv
0x0000007100df31e0,sub_7100DF31E0,32,_ZNK4ksys3gdt5FlagTIfE18getRandomResetDataEv
0x0000007100df3200,sub_7100DF3200,16,
0x0000007100df3210,sub_7100DF3210,16,
0x0000007100df3220,sub_7100DF3220,8,
0x0000007100df3228,sub_7100DF3228,8,
0x0000007100df3230,sub_7100DF3230,8,
0x0000007100df3238,sub_7100DF3238,48,
0x0000007100df3268,sub_7100DF3268,136,
0x0000007100df32f0,sub_7100DF32F0,16,
0x0000007100df3300,nullsub_3861,4,
0x0000007100df3304,j__ZdlPv_899,4,
0x0000007100df3308,sub_7100DF3308,16,
0x0000007100df3318,sub_7100DF3318,16,
0x0000007100df3328,sub_7100DF3328,36,
0x0000007100df334c,sub_7100DF334C,20,
0x0000007100df3360,sub_7100DF3360,16,
0x0000007100df3370,sub_7100DF3370,16,
0x0000007100df3380,sub_7100DF3380,236,
0x0000007100df346c,sub_7100DF346C,500,
0x0000007100df3660,sub_7100DF3660,60,
0x0000007100df369c,sub_7100DF369C,64,
0x0000007100df36dc,sub_7100DF36DC,16,
0x0000007100df36ec,sub_7100DF36EC,16,
0x0000007100df3200,sub_7100DF3200,16,_ZNK4ksys3gdt9FlagProxyIfE9getConfigEv
0x0000007100df3210,sub_7100DF3210,16,_ZN4ksys3gdt9FlagProxyIfE9setConfigERKNS0_10FlagConfigIfEE
0x0000007100df3220,sub_7100DF3220,8,_ZNK4ksys3gdt9FlagProxyIfE8getValueEv
0x0000007100df3228,sub_7100DF3228,8,_ZN4ksys3gdt9FlagProxyIfE11getValueRefEv
0x0000007100df3230,sub_7100DF3230,8,_ZNK4ksys3gdt9FlagProxyIfE11getValueRefEv
0x0000007100df3238,sub_7100DF3238,48,_ZNK4ksys3gdt9FlagProxyIfE8hasValueERKf
0x0000007100df3268,sub_7100DF3268,136,_ZN4ksys3gdt9FlagProxyIfE8setValueEf
0x0000007100df32f0,sub_7100DF32F0,16,_ZNK4ksys3gdt9FlagProxyIfE12getDebugDataEv
0x0000007100df3300,nullsub_3861,4,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEED2Ev
0x0000007100df3304,j__ZdlPv_899,4,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEED0Ev
0x0000007100df3308,sub_7100DF3308,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE7getHashEv
0x0000007100df3318,sub_7100DF3318,16,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE7setHashEj
0x0000007100df3328,sub_7100DF3328,36,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE7getTypeEv
0x0000007100df334c,sub_7100DF334C,20,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE7setTypeENS0_8FlagTypeE
0x0000007100df3360,sub_7100DF3360,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE13getPropertiesEv
0x0000007100df3370,sub_7100DF3370,16,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE13setPropertiesERKNS0_14FlagPropertiesE
0x0000007100df3380,sub_7100DF3380,236,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE19resetToInitialValueEv
0x0000007100df346c,sub_7100DF346C,500,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE14isInitialValueEv
0x0000007100df3660,sub_7100DF3660,60,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE11getCategoryEv
0x0000007100df369c,sub_7100DF369C,64,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE11setCategoryEj
0x0000007100df36dc,sub_7100DF36DC,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE7getNameEv
0x0000007100df36ec,sub_7100DF36EC,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE12getDeleteRevEv
0x0000007100df36fc,sub_7100DF36FC,32,_ZNK4ksys3gdt5FlagTIN4sead15FixedSafeStringILi32EEEE18getRandomResetDataEv
0x0000007100df371c,sub_7100DF371C,16,
0x0000007100df372c,sub_7100DF372C,16,
0x0000007100df373c,_ZN4sead15FixedSafeStringILi57EEaSERKNS_14SafeStringBaseIcEE,308,
0x0000007100df3870,sub_7100DF3870,8,
0x0000007100df3878,sub_7100DF3878,8,
0x0000007100df3880,sub_7100DF3880,220,
0x0000007100df395c,sub_7100DF395C,1184,
0x0000007100df3dfc,sub_7100DF3DFC,16,
0x0000007100df3e0c,nullsub_3862,4,
0x0000007100df3e10,j__ZdlPv_900,4,
0x0000007100df3e14,sub_7100DF3E14,16,
0x0000007100df3e24,sub_7100DF3E24,16,
0x0000007100df3e34,sub_7100DF3E34,36,
0x0000007100df3e58,sub_7100DF3E58,20,
0x0000007100df3e6c,sub_7100DF3E6C,16,
0x0000007100df3e7c,sub_7100DF3E7C,16,
0x0000007100df3e8c,sub_7100DF3E8C,236,
0x0000007100df3f78,sub_7100DF3F78,500,
0x0000007100df416c,sub_7100DF416C,60,
0x0000007100df41a8,sub_7100DF41A8,64,
0x0000007100df41e8,sub_7100DF41E8,16,
0x0000007100df41f8,sub_7100DF41F8,16,
0x0000007100df371c,sub_7100DF371C,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE9getConfigEv
0x0000007100df372c,sub_7100DF372C,16,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE9setConfigERKNS0_10FlagConfigIS4_EE
0x0000007100df373c,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE8getValueEv,308,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE8getValueEv
0x0000007100df3870,sub_7100DF3870,8,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE11getValueRefEv
0x0000007100df3878,sub_7100DF3878,8,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE11getValueRefEv
0x0000007100df3880,sub_7100DF3880,220,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE8hasValueERKS4_
0x0000007100df395c,sub_7100DF395C,1184,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE8setValueES4_
0x0000007100df3dfc,sub_7100DF3DFC,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi32EEEE12getDebugDataEv
0x0000007100df3e0c,nullsub_3862,4,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEED2Ev
0x0000007100df3e10,j__ZdlPv_900,4,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEED0Ev
0x0000007100df3e14,sub_7100DF3E14,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE7getHashEv
0x0000007100df3e24,sub_7100DF3E24,16,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE7setHashEj
0x0000007100df3e34,sub_7100DF3E34,36,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE7getTypeEv
0x0000007100df3e58,sub_7100DF3E58,20,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE7setTypeENS0_8FlagTypeE
0x0000007100df3e6c,sub_7100DF3E6C,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE13getPropertiesEv
0x0000007100df3e7c,sub_7100DF3E7C,16,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE13setPropertiesERKNS0_14FlagPropertiesE
0x0000007100df3e8c,sub_7100DF3E8C,236,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE19resetToInitialValueEv
0x0000007100df3f78,sub_7100DF3F78,500,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE14isInitialValueEv
0x0000007100df416c,sub_7100DF416C,60,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE11getCategoryEv
0x0000007100df41a8,sub_7100DF41A8,64,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE11setCategoryEj
0x0000007100df41e8,sub_7100DF41E8,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE7getNameEv
0x0000007100df41f8,sub_7100DF41F8,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE12getDeleteRevEv
0x0000007100df4208,sub_7100DF4208,32,_ZNK4ksys3gdt5FlagTIN4sead15FixedSafeStringILi64EEEE18getRandomResetDataEv
0x0000007100df4228,sub_7100DF4228,16,
0x0000007100df4238,sub_7100DF4238,16,
0x0000007100df4248,_ZN4sead15FixedSafeStringILi41EEaSERKNS_14SafeStringBaseIcEE,308,
0x0000007100df437c,sub_7100DF437C,8,
0x0000007100df4384,sub_7100DF4384,8,
0x0000007100df438c,sub_7100DF438C,220,
0x0000007100df4468,sub_7100DF4468,1188,
0x0000007100df490c,sub_7100DF490C,16,
0x0000007100df491c,nullsub_3863,4,
0x0000007100df4920,j__ZdlPv_901,4,
0x0000007100df4924,sub_7100DF4924,16,
0x0000007100df4934,sub_7100DF4934,16,
0x0000007100df4944,sub_7100DF4944,36,
0x0000007100df4968,sub_7100DF4968,20,
0x0000007100df497c,sub_7100DF497C,16,
0x0000007100df498c,sub_7100DF498C,16,
0x0000007100df499c,sub_7100DF499C,236,
0x0000007100df4a88,sub_7100DF4A88,500,
0x0000007100df4c7c,sub_7100DF4C7C,60,
0x0000007100df4cb8,sub_7100DF4CB8,64,
0x0000007100df4cf8,sub_7100DF4CF8,16,
0x0000007100df4d08,sub_7100DF4D08,16,
0x0000007100df4228,sub_7100DF4228,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE9getConfigEv
0x0000007100df4238,sub_7100DF4238,16,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE9setConfigERKNS0_10FlagConfigIS4_EE
0x0000007100df4248,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE8getValueEv,308,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE8getValueEv
0x0000007100df437c,sub_7100DF437C,8,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE11getValueRefEv
0x0000007100df4384,sub_7100DF4384,8,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE11getValueRefEv
0x0000007100df438c,sub_7100DF438C,220,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE8hasValueERKS4_
0x0000007100df4468,sub_7100DF4468,1188,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE8setValueES4_
0x0000007100df490c,sub_7100DF490C,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi64EEEE12getDebugDataEv
0x0000007100df491c,nullsub_3863,4,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEED2Ev
0x0000007100df4920,j__ZdlPv_901,4,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEED0Ev
0x0000007100df4924,sub_7100DF4924,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE7getHashEv
0x0000007100df4934,sub_7100DF4934,16,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE7setHashEj
0x0000007100df4944,sub_7100DF4944,36,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE7getTypeEv
0x0000007100df4968,sub_7100DF4968,20,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE7setTypeENS0_8FlagTypeE
0x0000007100df497c,sub_7100DF497C,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE13getPropertiesEv
0x0000007100df498c,sub_7100DF498C,16,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE13setPropertiesERKNS0_14FlagPropertiesE
0x0000007100df499c,sub_7100DF499C,236,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE19resetToInitialValueEv
0x0000007100df4a88,sub_7100DF4A88,500,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE14isInitialValueEv
0x0000007100df4c7c,sub_7100DF4C7C,60,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE11getCategoryEv
0x0000007100df4cb8,sub_7100DF4CB8,64,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE11setCategoryEj
0x0000007100df4cf8,sub_7100DF4CF8,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE7getNameEv
0x0000007100df4d08,sub_7100DF4D08,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE12getDeleteRevEv
0x0000007100df4d18,sub_7100DF4D18,32,_ZNK4ksys3gdt5FlagTIN4sead15FixedSafeStringILi256EEEE18getRandomResetDataEv
0x0000007100df4d38,sub_7100DF4D38,16,
0x0000007100df4d48,sub_7100DF4D48,16,
0x0000007100df4d58,_ZN4sead15FixedSafeStringILi384EEaSERKNS_14SafeStringBaseIcEE,308,
0x0000007100df4e8c,sub_7100DF4E8C,8,
0x0000007100df4e94,sub_7100DF4E94,8,
0x0000007100df4e9c,sub_7100DF4E9C,228,
0x0000007100df4f80,sub_7100DF4F80,1184,
0x0000007100df5420,sub_7100DF5420,16,
0x0000007100df5430,j__ZdlPv_902,4,
0x0000007100df5434,sub_7100DF5434,16,
0x0000007100df5444,sub_7100DF5444,16,
0x0000007100df5454,sub_7100DF5454,36,
0x0000007100df5478,sub_7100DF5478,20,
0x0000007100df548c,sub_7100DF548C,16,
0x0000007100df549c,sub_7100DF549C,16,
0x0000007100df54ac,sub_7100DF54AC,56,
0x0000007100df54e4,sub_7100DF54E4,88,
0x0000007100df553c,sub_7100DF553C,60,
0x0000007100df5578,sub_7100DF5578,64,
0x0000007100df55b8,sub_7100DF55B8,16,
0x0000007100df55c8,sub_7100DF55C8,16,
0x0000007100df4d38,sub_7100DF4D38,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE9getConfigEv
0x0000007100df4d48,sub_7100DF4D48,16,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE9setConfigERKNS0_10FlagConfigIS4_EE
0x0000007100df4d58,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE8getValueEv,308,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE8getValueEv
0x0000007100df4e8c,sub_7100DF4E8C,8,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE11getValueRefEv
0x0000007100df4e94,sub_7100DF4E94,8,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE11getValueRefEv
0x0000007100df4e9c,sub_7100DF4E9C,228,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE8hasValueERKS4_
0x0000007100df4f80,sub_7100DF4F80,1184,_ZN4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE8setValueES4_
0x0000007100df5420,sub_7100DF5420,16,_ZNK4ksys3gdt9FlagProxyIN4sead15FixedSafeStringILi256EEEE12getDebugDataEv
0x0000007100df5430,j__ZdlPv_902,4,_ZN4ksys3gdt9FlagProxyIN4sead7Vector2IfEEED0Ev
0x0000007100df5434,sub_7100DF5434,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE7getHashEv
0x0000007100df5444,sub_7100DF5444,16,_ZN4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE7setHashEj
0x0000007100df5454,sub_7100DF5454,36,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE7getTypeEv
0x0000007100df5478,sub_7100DF5478,20,_ZN4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE7setTypeENS0_8FlagTypeE
0x0000007100df548c,sub_7100DF548C,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE13getPropertiesEv
0x0000007100df549c,sub_7100DF549C,16,_ZN4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE13setPropertiesERKNS0_14FlagPropertiesE
0x0000007100df54ac,sub_7100DF54AC,56,_ZN4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE19resetToInitialValueEv
0x0000007100df54e4,sub_7100DF54E4,88,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE14isInitialValueEv
0x0000007100df553c,sub_7100DF553C,60,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE11getCategoryEv
0x0000007100df5578,sub_7100DF5578,64,_ZN4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE11setCategoryEj
0x0000007100df55b8,sub_7100DF55B8,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE7getNameEv
0x0000007100df55c8,sub_7100DF55C8,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE12getDeleteRevEv
0x0000007100df55d8,sub_7100DF55D8,32,_ZNK4ksys3gdt5FlagTIN4sead7Vector2IfEEE18getRandomResetDataEv
0x0000007100df55f8,sub_7100DF55F8,16,
0x0000007100df5608,sub_7100DF5608,16,
0x0000007100df5618,sub_7100DF5618,8,
0x0000007100df5620,sub_7100DF5620,8,
0x0000007100df5628,sub_7100DF5628,8,
0x0000007100df5630,sub_7100DF5630,64,
0x0000007100df5670,sub_7100DF5670,192,
0x0000007100df5730,sub_7100DF5730,16,
0x0000007100df5740,j__ZdlPv_903,4,
0x0000007100df5744,sub_7100DF5744,16,
0x0000007100df5754,sub_7100DF5754,16,
0x0000007100df5764,sub_7100DF5764,36,
0x0000007100df5788,sub_7100DF5788,20,
0x0000007100df579c,sub_7100DF579C,16,
0x0000007100df57ac,sub_7100DF57AC,16,
0x0000007100df57bc,sub_7100DF57BC,64,
0x0000007100df57fc,sub_7100DF57FC,108,
0x0000007100df5868,sub_7100DF5868,60,
0x0000007100df58a4,sub_7100DF58A4,64,
0x0000007100df58e4,sub_7100DF58E4,16,
0x0000007100df58f4,sub_7100DF58F4,16,
0x0000007100df55f8,sub_7100DF55F8,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE9getConfigEv
0x0000007100df5608,sub_7100DF5608,16,_ZN4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE9setConfigERKNS0_10FlagConfigIS4_EE
0x0000007100df5618,sub_7100DF5618,8,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE8getValueEv
0x0000007100df5620,sub_7100DF5620,8,_ZN4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE11getValueRefEv
0x0000007100df5628,sub_7100DF5628,8,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE11getValueRefEv
0x0000007100df5630,sub_7100DF5630,64,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE8hasValueERKS4_
0x0000007100df5670,sub_7100DF5670,192,_ZN4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE8setValueES4_
0x0000007100df5730,sub_7100DF5730,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector2IfEEE12getDebugDataEv
0x0000007100df5740,j__ZdlPv_903,4,_ZN4ksys3gdt9FlagProxyIN4sead7Vector3IfEEED0Ev
0x0000007100df5744,sub_7100DF5744,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE7getHashEv
0x0000007100df5754,sub_7100DF5754,16,_ZN4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE7setHashEj
0x0000007100df5764,sub_7100DF5764,36,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE7getTypeEv
0x0000007100df5788,sub_7100DF5788,20,_ZN4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE7setTypeENS0_8FlagTypeE
0x0000007100df579c,sub_7100DF579C,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE13getPropertiesEv
0x0000007100df57ac,sub_7100DF57AC,16,_ZN4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE13setPropertiesERKNS0_14FlagPropertiesE
0x0000007100df57bc,sub_7100DF57BC,64,_ZN4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE19resetToInitialValueEv
0x0000007100df57fc,sub_7100DF57FC,108,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE14isInitialValueEv
0x0000007100df5868,sub_7100DF5868,60,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE11getCategoryEv
0x0000007100df58a4,sub_7100DF58A4,64,_ZN4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE11setCategoryEj
0x0000007100df58e4,sub_7100DF58E4,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE7getNameEv
0x0000007100df58f4,sub_7100DF58F4,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE12getDeleteRevEv
0x0000007100df5904,sub_7100DF5904,32,_ZNK4ksys3gdt5FlagTIN4sead7Vector3IfEEE18getRandomResetDataEv
0x0000007100df5924,sub_7100DF5924,16,
0x0000007100df5934,sub_7100DF5934,16,
0x0000007100df5944,sub_7100DF5944,12,
0x0000007100df5950,sub_7100DF5950,8,
0x0000007100df5958,sub_7100DF5958,8,
0x0000007100df5960,sub_7100DF5960,84,
0x0000007100df59b4,sub_7100DF59B4,232,
0x0000007100df5a9c,sub_7100DF5A9C,16,
0x0000007100df5aac,j__ZdlPv_904,4,
0x0000007100df5ab0,sub_7100DF5AB0,16,
0x0000007100df5ac0,sub_7100DF5AC0,16,
0x0000007100df5ad0,sub_7100DF5AD0,36,
0x0000007100df5af4,sub_7100DF5AF4,20,
0x0000007100df5b08,sub_7100DF5B08,16,
0x0000007100df5b18,sub_7100DF5B18,16,
0x0000007100df5b28,sub_7100DF5B28,72,
0x0000007100df5b70,sub_7100DF5B70,112,
0x0000007100df5be0,sub_7100DF5BE0,60,
0x0000007100df5c1c,sub_7100DF5C1C,64,
0x0000007100df5c5c,sub_7100DF5C5C,16,
0x0000007100df5c6c,sub_7100DF5C6C,16,
0x0000007100df5924,sub_7100DF5924,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE9getConfigEv
0x0000007100df5934,sub_7100DF5934,16,_ZN4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE9setConfigERKNS0_10FlagConfigIS4_EE
0x0000007100df5944,sub_7100DF5944,12,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE8getValueEv
0x0000007100df5950,sub_7100DF5950,8,_ZN4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE11getValueRefEv
0x0000007100df5958,sub_7100DF5958,8,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE11getValueRefEv
0x0000007100df5960,sub_7100DF5960,84,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE8hasValueERKS4_
0x0000007100df59b4,sub_7100DF59B4,232,_ZN4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE8setValueES4_
0x0000007100df5a9c,sub_7100DF5A9C,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector3IfEEE12getDebugDataEv
0x0000007100df5aac,j__ZdlPv_904,4,_ZN4ksys3gdt9FlagProxyIN4sead7Vector4IfEEED0Ev
0x0000007100df5ab0,sub_7100DF5AB0,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE7getHashEv
0x0000007100df5ac0,sub_7100DF5AC0,16,_ZN4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE7setHashEj
0x0000007100df5ad0,sub_7100DF5AD0,36,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE7getTypeEv
0x0000007100df5af4,sub_7100DF5AF4,20,_ZN4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE7setTypeENS0_8FlagTypeE
0x0000007100df5b08,sub_7100DF5B08,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE13getPropertiesEv
0x0000007100df5b18,sub_7100DF5B18,16,_ZN4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE13setPropertiesERKNS0_14FlagPropertiesE
0x0000007100df5b28,sub_7100DF5B28,72,_ZN4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE19resetToInitialValueEv
0x0000007100df5b70,sub_7100DF5B70,112,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE14isInitialValueEv
0x0000007100df5be0,sub_7100DF5BE0,60,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE11getCategoryEv
0x0000007100df5c1c,sub_7100DF5C1C,64,_ZN4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE11setCategoryEj
0x0000007100df5c5c,sub_7100DF5C5C,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE7getNameEv
0x0000007100df5c6c,sub_7100DF5C6C,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE12getDeleteRevEv
0x0000007100df5c7c,sub_7100DF5C7C,32,_ZNK4ksys3gdt5FlagTIN4sead7Vector4IfEEE18getRandomResetDataEv
0x0000007100df5c9c,sub_7100DF5C9C,16,
0x0000007100df5cac,sub_7100DF5CAC,16,
0x0000007100df5cbc,sub_7100DF5CBC,12,
0x0000007100df5cc8,sub_7100DF5CC8,8,
0x0000007100df5cd0,sub_7100DF5CD0,8,
0x0000007100df5cd8,sub_7100DF5CD8,96,
0x0000007100df5d38,sub_7100DF5D38,272,
0x0000007100df5e48,sub_7100DF5E48,16,
0x0000007100df5c9c,sub_7100DF5C9C,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE9getConfigEv
0x0000007100df5cac,sub_7100DF5CAC,16,_ZN4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE9setConfigERKNS0_10FlagConfigIS4_EE
0x0000007100df5cbc,sub_7100DF5CBC,12,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE8getValueEv
0x0000007100df5cc8,sub_7100DF5CC8,8,_ZN4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE11getValueRefEv
0x0000007100df5cd0,sub_7100DF5CD0,8,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE11getValueRefEv
0x0000007100df5cd8,sub_7100DF5CD8,96,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE8hasValueERKS4_
0x0000007100df5d38,sub_7100DF5D38,272,_ZN4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE8setValueES4_
0x0000007100df5e48,sub_7100DF5E48,16,_ZNK4ksys3gdt9FlagProxyIN4sead7Vector4IfEEE12getDebugDataEv
0x0000007100df5e58,gdm::debugReportFlagChange,792,
0x0000007100df6170,sub_7100DF6170,268,
0x0000007100df627c,sub_7100DF627C,268,

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

View File

@ -1,6 +1,7 @@
target_sources(uking PRIVATE
gdtFlag.cpp
gdtFlag.h
gdtFlagProxy.h
gdtManager.cpp
gdtManager.h
gdtTriggerParam.cpp

View File

@ -7,6 +7,7 @@
#include <prim/seadSafeString.h>
#include <prim/seadSizedEnum.h>
#include <type_traits>
#include "KingSystem/Utils/TypeTraits.h"
#include "KingSystem/Utils/Types.h"
namespace al {
@ -28,6 +29,10 @@ enum class ResetType {
ResetOnAnimalMasterAppearance = 4,
};
constexpr bool isResettableFlag(ResetType type) {
return type > ResetType::NoReset;
}
struct FlagDebugData {
sead::SafeString name;
s32 delete_rev = 0;
@ -87,6 +92,27 @@ SEAD_ENUM(FlagType, Bool = 0, S32 = 1, F32 = 2, String = 3, String64 = 4, String
StringArray = 12, String64Array = 13, String256Array = 14, Vector2fArray = 15,
Vector3fArray = 16, Vector4fArray = 17, Invalid = 18)
template <typename T>
constexpr bool isValidFlagArrayType() {
return IsAnyOfType<T, sead::Buffer<bool>, sead::Buffer<s32>, sead::Buffer<f32>,
sead::Buffer<sead::FixedSafeString<32>>,
sead::Buffer<sead::FixedSafeString<64>>,
sead::Buffer<sead::FixedSafeString<256>>, sead::Buffer<sead::Vector2f>,
sead::Buffer<sead::Vector3f>, sead::Buffer<sead::Vector4f>>();
}
template <typename T>
constexpr bool isValidFlagValueType() {
return IsAnyOfType<T, bool, s32, f32, sead::FixedSafeString<32>, sead::FixedSafeString<64>,
sead::FixedSafeString<256>, sead::Vector2f, sead::Vector3f,
sead::Vector4f>();
}
template <typename T>
constexpr bool isValidFlagType() {
return isValidFlagValueType<T>() || isValidFlagArrayType<T>();
}
class FlagBase {
public:
virtual ~FlagBase() = 0;
@ -109,6 +135,15 @@ public:
virtual const sead::SafeString& getName() const = 0;
virtual s32 getDeleteRev() const = 0;
virtual u32 getRandomResetData() const = 0;
bool isResettable() const { return isResettableFlag(getProperties().getResetType()); }
bool isPermanent() const {
return getProperties().isSave() && getProperties().getResetType() == ResetType::NoReset &&
getRandomResetData() == 0;
}
protected:
s32 clampValue_(const s32& min_value, s32* value, const s32& max_value);
s32 clampValue_(const f32& min_value, f32* value, const f32& max_value);
@ -151,7 +186,7 @@ public:
using ConfigType = FlagConfig<T>;
using RawValueType = std::conditional_t<std::is_same_v<T, bool>, u8, T>;
virtual u32 getRandomResetData() const;
u32 getRandomResetData() const override;
virtual const ConfigType& getConfig() const = 0;
virtual void setConfig(const ConfigType& config) = 0;

View File

@ -0,0 +1,148 @@
#pragma once
#include "KingSystem/GameData/gdtFlag.h"
namespace ksys::gdt {
template <typename T>
class FlagProxy : public FlagT<T> {
public:
using ConfigType = FlagConfig<T>;
using RawValueType = typename Flag<T>::RawValueType;
FlagProxy() = default;
explicit FlagProxy(Flag<T>* flag) : mFlag(flag) {}
~FlagProxy() override = default;
Flag<T>* getFlag() const { return mFlag; }
void setFlag(Flag<T>* flag) { mFlag = flag; }
u32 getHash() const override { return mFlag->getHash(); }
void setHash(u32 hash) override { mFlag->setHash(hash); }
FlagType getType() const override { return mFlag->getType(); }
void setType(FlagType type) override { mFlag->setType(type); }
const FlagProperties& getProperties() const override { return mFlag->getProperties(); }
void setProperties(const FlagProperties& properties) override {
mFlag->setProperties(properties);
}
void resetToInitialValue() override;
bool isInitialValue() const override;
u32 getCategory() const override;
void setCategory(u32 category) override;
const sead::SafeString& getName() const override { return mFlag->getName(); }
s32 getDeleteRev() const override { return mFlag->getDeleteRev(); }
const ConfigType& getConfig() const override { return mFlag->getConfig(); }
void setConfig(const ConfigType& config) override { mFlag->setConfig(config); }
T getValue() const override;
RawValueType& getValueRef() override;
const RawValueType& getValueRef() const override;
bool hasValue(const T& value) const override;
bool setValue(T value) override;
FlagDebugData* getDebugData() const override { return mFlag->getDebugData(); }
void setDebugData(FlagDebugData* data) { mFlag->setDebugData(data); }
private:
Flag<T>* mFlag = nullptr;
RawValueType mValue{};
};
template <typename T>
inline void FlagProxy<T>::resetToInitialValue() {
if constexpr (std::is_same<T, bool>()) {
const auto category = getCategory();
mValue = getConfig().initial_value & 1;
setCategory(category);
} else {
mValue = getConfig().initial_value;
}
}
template <typename T>
inline bool FlagProxy<T>::isInitialValue() const {
if constexpr (std::is_same<T, bool>()) {
const bool initial_value = getConfig().initial_value & 1;
return getValue() == initial_value;
} else {
T initial_value;
initial_value = getConfig().initial_value;
return getValue() == initial_value;
}
}
template <typename T>
inline u32 FlagProxy<T>::getCategory() const {
if (!this->isBoolean_())
return 0;
return this->getCategoryForBool_(&mValue);
}
template <typename T>
inline void FlagProxy<T>::setCategory(u32 category) {
if (!this->isBoolean_())
return;
this->setCategoryForBool_(&mValue, category);
}
template <typename T>
inline T FlagProxy<T>::getValue() const {
if constexpr (std::is_same<T, bool>())
return mValue & 1;
else
return mValue;
}
template <typename T>
inline typename FlagProxy<T>::RawValueType& FlagProxy<T>::getValueRef() {
return mValue;
}
template <typename T>
inline const typename FlagProxy<T>::RawValueType& FlagProxy<T>::getValueRef() const {
return mValue;
}
template <typename T>
inline bool FlagProxy<T>::hasValue(const T& value) const {
return value == getValue();
}
template <typename T>
inline bool FlagProxy<T>::setValue(T value) {
if constexpr (std::is_same<T, bool>()) {
if (value == getValue())
return false;
if (value)
mValue |= 1;
else
mValue &= ~1;
return true;
} else {
[[maybe_unused]] const T new_value = value;
T min_value;
T max_value;
min_value = getConfig().min_value;
max_value = getConfig().max_value;
this->clampValue_(min_value, &value, max_value);
if (mValue != value) {
mValue = value;
return true;
}
return false;
}
}
} // namespace ksys::gdt

View File

@ -1,11 +1,930 @@
#include "KingSystem/GameData/gdtTriggerParam.h"
#include <algorithm>
#include "KingSystem/GameData/gdtFlagProxy.h"
#include "KingSystem/Resource/resResourceGameData.h"
#include "KingSystem/Utils/SafeDelete.h"
namespace ksys::gdt {
TriggerParam::TriggerParam() {
mUnkArray.constructDefault();
mCriticalSections.constructDefault();
mFlags.constructDefault();
mBitFlags.constructDefault();
mCounts.fill(0);
mNumBoolFlagsPerCategory.fill(0);
}
namespace {
// TODO (low-priority): implement this without using <algorithm> to match the original code
// The original code appears to perform a heapsort.
[[gnu::noinline]] void sortFlagPtrArray(sead::PtrArray<FlagBase>& array) {
std::sort(array.dataBegin(), array.dataEnd(),
[](const FlagBase* a, const FlagBase* b) { return a->getHash() < b->getHash(); });
}
inline s32 getFlagIndex(const sead::PtrArray<FlagBase>& flags, u32 name_hash) {
s32 a = 0;
s32 b = flags.size() - 1;
while (a < b) {
const s32 m = (a + b) / 2;
if (flags[m]->getHash() == name_hash)
return m;
if (flags[m]->getHash() < name_hash)
a = m + 1;
else
b = m;
}
if (flags[a]->getHash() == name_hash)
return a;
return -1;
}
inline s32 getFlagIndex(const sead::PtrArray<sead::PtrArray<FlagBase>>& flags, u32 name_hash) {
for (s32 i = 0; i < flags.size(); ++i) {
const auto& array = *flags[i];
if (array.size() > 0 && array[0]->getHash() == name_hash)
return i;
}
return -1;
}
template <typename T>
inline Flag<T>* getFlagByIndex(const sead::PtrArray<FlagBase>& flags, s32 index) {
if (index < 0 || index >= flags.size())
return nullptr;
return static_cast<Flag<T>*>(flags[index]);
}
template <typename T>
inline Flag<T>* getFlag(const sead::PtrArray<FlagBase>& flags, u32 name_hash) {
return getFlagByIndex<T>(flags, getFlagIndex(flags, name_hash));
}
template <typename T>
inline Flag<T>* getFlag(const sead::PtrArray<FlagBase>& flags, const sead::SafeString& name) {
if (name.isEmpty())
return nullptr;
return getFlag<T>(flags, sead::HashCRC32::calcStringHash(name));
}
template <typename T, typename FlagValueType = T>
inline bool getFlagValue(const sead::PtrArray<FlagBase>& array, T* out_value, s32 index,
bool check_permissions) {
static_assert(isValidFlagValueType<FlagValueType>());
const auto* flag = getFlagByIndex<FlagValueType>(array, index);
if (!flag)
return false;
if (check_permissions && !flag->getProperties().isProgramReadable())
return false;
if constexpr (std::is_same<T, const char*>())
*out_value = flag->getValueRef().cstr();
else
*out_value = flag->getValue();
return true;
}
template <typename T, typename FlagValueType = T>
inline bool getFlagValue(const sead::PtrArray<sead::PtrArray<FlagBase>>& arrays, T* out_value,
s32 array_index, s32 flag_index, bool check_permissions) {
static_assert(isValidFlagValueType<FlagValueType>());
if (array_index < 0 || array_index >= arrays.size())
return false;
const auto* array = arrays[array_index];
if (!array)
return false;
const auto* flag = getFlagByIndex<FlagValueType>(*array, flag_index);
if (!flag)
return false;
if (check_permissions && !flag->getProperties().isProgramReadable())
return false;
if constexpr (std::is_same<T, const char*>())
*out_value = flag->getValueRef().cstr();
else
*out_value = flag->getValue();
return true;
}
bool getFlagArraySize(const sead::PtrArray<sead::PtrArray<FlagBase>>& arrays, s32 index, s32* out) {
if (index < 0 || index >= arrays.size())
return false;
*out = arrays[index]->size();
return true;
}
template <typename T>
inline void copyGameDataResBuffer(sead::Buffer<T>& source, sead::PtrArray<FlagBase>& dest,
sead::Heap* heap) {
if (source.size() == 0)
return;
if (!dest.isBufferReady())
dest.allocBuffer(source.size(), heap);
for (auto& flag : source)
dest.pushBack(&flag);
}
template <typename T>
inline void copyGameDataResBuffer(sead::PtrArray<sead::Buffer<T>>& source,
sead::PtrArray<sead::PtrArray<FlagBase>>& dest,
sead::Heap* heap) {
const auto n = source.capacity();
if (n < 1)
return;
if (!dest.isBufferReady())
dest.allocBuffer(n, heap);
for (s32 i = 0; i < n; ++i) {
dest.pushBack(new (heap) sead::PtrArray<FlagBase>);
const auto num_flags = source[i]->size();
if (!dest[i]->isBufferReady())
dest[i]->allocBuffer(num_flags, heap);
for (s32 j = 0; j < num_flags; ++j)
dest[i]->pushBack(std::addressof((*source[i])[j]));
}
}
template <typename T>
void makeFlagProxies(sead::PtrArray<FlagBase>& dest, const sead::PtrArray<FlagBase>& src, s32 count,
sead::Heap* heap, bool permanent_flags_only) {
for (s32 i = 0; i < count; ++i) {
auto* flag = static_cast<Flag<T>*>(src[i]);
if (!permanent_flags_only) {
auto* proxy = new (heap) FlagProxy<T>;
proxy->setFlag(flag);
proxy->setValue(flag->getValue());
proxy->setCategory(flag->getCategory());
dest.pushBack(proxy);
} else if (flag->isPermanent()) {
auto* proxy = new (heap) FlagProxy<T>;
proxy->setFlag(flag);
proxy->setValue(flag->getValue());
proxy->setCategory(flag->getCategory());
dest.pushBack(proxy);
}
}
}
} // namespace
void TriggerParam::copyFromGameDataRes(res::GameData* gdata, sead::Heap* heap) {
if (!gdata)
return;
copyGameDataResBuffer(gdata->getBoolFlags(), mBoolFlags, heap);
copyGameDataResBuffer(gdata->getS32Flags(), mS32Flags, heap);
copyGameDataResBuffer(gdata->getF32Flags(), mF32Flags, heap);
copyGameDataResBuffer(gdata->getStringFlags(), mStringFlags, heap);
copyGameDataResBuffer(gdata->getString64Flags(), mString64Flags, heap);
copyGameDataResBuffer(gdata->getString256Flags(), mString256Flags, heap);
copyGameDataResBuffer(gdata->getVector2fFlags(), mVector2fFlags, heap);
copyGameDataResBuffer(gdata->getVector3fFlags(), mVector3fFlags, heap);
copyGameDataResBuffer(gdata->getVector4fFlags(), mVector4fFlags, heap);
copyGameDataResBuffer(gdata->getBoolArrayFlags(), mBoolArrayFlags, heap);
copyGameDataResBuffer(gdata->getS32ArrayFlags(), mS32ArrayFlags, heap);
copyGameDataResBuffer(gdata->getF32ArrayFlags(), mF32ArrayFlags, heap);
copyGameDataResBuffer(gdata->getStringArrayFlags(), mStringArrayFlags, heap);
copyGameDataResBuffer(gdata->getString64ArrayFlags(), mString64ArrayFlags, heap);
copyGameDataResBuffer(gdata->getString256ArrayFlags(), mString256ArrayFlags, heap);
copyGameDataResBuffer(gdata->getVector2fArrayFlags(), mVector2fArrayFlags, heap);
copyGameDataResBuffer(gdata->getVector3fArrayFlags(), mVector3fArrayFlags, heap);
copyGameDataResBuffer(gdata->getVector4fArrayFlags(), mVector4fArrayFlags, heap);
mResourceFlags = gdata->getField14();
}
void TriggerParam::init(sead::Heap* heap) {
sortFlagPtrArray(mBoolFlags);
sortFlagPtrArray(mS32Flags);
sortFlagPtrArray(mF32Flags);
sortFlagPtrArray(mStringFlags);
sortFlagPtrArray(mString64Flags);
sortFlagPtrArray(mString256Flags);
sortFlagPtrArray(mVector2fFlags);
sortFlagPtrArray(mVector3fFlags);
sortFlagPtrArray(mVector4fFlags);
allocCombinedFlagArrays(heap);
updateBoolFlagCounts();
mHeap = heap;
}
void TriggerParam::allocCombinedFlagArrays(sead::Heap* heap) {
#define ALLOC_COMBINED_ARRAY_(FLAGS, FLAG_ARRAYS, DEST) \
{ \
s32 size = FLAGS.size(); \
for (s32 i = 0; i < FLAG_ARRAYS.size(); ++i) \
size += FLAG_ARRAYS[i]->size(); \
\
DEST.allocBuffer(size, heap); \
}
ALLOC_COMBINED_ARRAY_(mBoolFlags, mBoolArrayFlags, mCombinedBoolFlags);
ALLOC_COMBINED_ARRAY_(mS32Flags, mS32ArrayFlags, mCombinedS32Flags);
ALLOC_COMBINED_ARRAY_(mF32Flags, mF32ArrayFlags, mCombinedF32Flags);
ALLOC_COMBINED_ARRAY_(mStringFlags, mStringArrayFlags, mCombinedStringFlags);
ALLOC_COMBINED_ARRAY_(mString64Flags, mString64ArrayFlags, mCombinedString64Flags);
ALLOC_COMBINED_ARRAY_(mString256Flags, mString256ArrayFlags, mCombinedString256Flags);
ALLOC_COMBINED_ARRAY_(mVector2fFlags, mVector2fArrayFlags, mCombinedVector2fFlags);
ALLOC_COMBINED_ARRAY_(mVector3fFlags, mVector3fArrayFlags, mCombinedVector3fFlags);
ALLOC_COMBINED_ARRAY_(mVector4fFlags, mVector4fArrayFlags, mCombinedVector4fFlags);
#undef ALLOC_COMBINED_ARRAY_
}
void TriggerParam::updateBoolFlagCounts() {
for (s32 i = 0; i < mBoolFlags.size(); ++i) {
const s32 category = mBoolFlags[i]->getCategory();
if (category > 0)
++mNumBoolFlagsPerCategory[category - 1];
}
for (s32 array_i = 0; array_i < mBoolArrayFlags.size(); ++array_i) {
for (s32 i = 0; i < mBoolArrayFlags[array_i]->size(); ++i) {
const s32 category = (*mBoolArrayFlags[array_i])[i]->getCategory();
if (category > 0)
++mNumBoolFlagsPerCategory[category - 1];
}
}
}
void TriggerParam::destroyHeap() {
util::safeDeleteHeap(mHeap);
}
void TriggerParam::allocBools(s32 size, sead::Heap* heap) {
mBoolFlags.allocBuffer(size, heap);
}
void TriggerParam::allocS32s(s32 size, sead::Heap* heap) {
mS32Flags.allocBuffer(size, heap);
}
void TriggerParam::initResetData(sead::Heap* heap) {
s32 num_reset_entries = 0;
#define COUNT_FLAGS_(FLAGS) \
do { \
for (s32 i = 0; i < FLAGS.size(); ++i) { \
if (FLAGS[i]->isResettable()) \
++num_reset_entries; \
} \
} while (0)
#define COUNT_FLAGS_ARRAY_(ARRAYS) \
do { \
for (s32 i = 0; i < ARRAYS.size(); ++i) { \
if ((*ARRAYS[i])[0]->isResettable()) \
++num_reset_entries; \
} \
} while (0)
COUNT_FLAGS_(mBoolFlags);
COUNT_FLAGS_(mS32Flags);
COUNT_FLAGS_(mF32Flags);
COUNT_FLAGS_(mStringFlags);
COUNT_FLAGS_(mString64Flags);
COUNT_FLAGS_(mString256Flags);
COUNT_FLAGS_(mVector2fFlags);
COUNT_FLAGS_(mVector3fFlags);
COUNT_FLAGS_(mVector4fFlags);
COUNT_FLAGS_ARRAY_(mBoolArrayFlags);
COUNT_FLAGS_ARRAY_(mS32ArrayFlags);
COUNT_FLAGS_ARRAY_(mF32ArrayFlags);
COUNT_FLAGS_ARRAY_(mStringArrayFlags);
COUNT_FLAGS_ARRAY_(mString64ArrayFlags);
COUNT_FLAGS_ARRAY_(mString256ArrayFlags);
COUNT_FLAGS_ARRAY_(mVector2fArrayFlags);
COUNT_FLAGS_ARRAY_(mVector3fArrayFlags);
COUNT_FLAGS_ARRAY_(mVector4fArrayFlags);
#undef COUNT_FLAGS_
#undef COUNT_FLAGS_ARRAY_
if (num_reset_entries == 0)
return;
mResetEntries.allocBufferAssert(num_reset_entries, heap);
s32 reset_entry_idx = 0;
#define ADD_ENTRIES_(TYPE, FLAGS) \
do { \
for (s32 i = 0; i < FLAGS.size(); ++i) { \
if (!FLAGS[i]->isResettable()) \
continue; \
mResetEntries[reset_entry_idx].type = TYPE; \
mResetEntries[reset_entry_idx].index = i; \
mResetEntries[reset_entry_idx].reset_type = FLAGS[i]->getProperties().getResetType(); \
++reset_entry_idx; \
if (reset_entry_idx == num_reset_entries) \
return; \
} \
} while (0)
#define ADD_ENTRIES_ARRAY_(TYPE, ARRAYS) \
do { \
for (s32 i = 0; i < ARRAYS.size(); ++i) { \
if (!(*ARRAYS[i])[0]->isResettable()) \
continue; \
\
mResetEntries[reset_entry_idx].type = TYPE; \
\
/* ??? */ \
if constexpr (TYPE == FlagType::String256Array) \
mResetEntries[reset_entry_idx].index = s16(i); \
else \
mResetEntries[reset_entry_idx].index = i; \
\
mResetEntries[reset_entry_idx].reset_type = \
(*ARRAYS[i])[0]->getProperties().getResetType(); \
\
++reset_entry_idx; \
if (reset_entry_idx == num_reset_entries) \
return; \
} \
} while (0)
ADD_ENTRIES_(FlagType::Bool, mBoolFlags);
ADD_ENTRIES_(FlagType::S32, mS32Flags);
ADD_ENTRIES_(FlagType::F32, mF32Flags);
ADD_ENTRIES_(FlagType::String, mStringFlags);
ADD_ENTRIES_(FlagType::String64, mString64Flags);
ADD_ENTRIES_(FlagType::String256, mString256Flags);
ADD_ENTRIES_(FlagType::Vector2f, mVector2fFlags);
ADD_ENTRIES_(FlagType::Vector3f, mVector3fFlags);
ADD_ENTRIES_(FlagType::Vector4f, mVector4fFlags);
ADD_ENTRIES_ARRAY_(FlagType::BoolArray, mBoolArrayFlags);
ADD_ENTRIES_ARRAY_(FlagType::S32Array, mS32ArrayFlags);
ADD_ENTRIES_ARRAY_(FlagType::F32Array, mF32ArrayFlags);
ADD_ENTRIES_ARRAY_(FlagType::StringArray, mStringArrayFlags);
ADD_ENTRIES_ARRAY_(FlagType::String64Array, mString64ArrayFlags);
ADD_ENTRIES_ARRAY_(FlagType::String256Array, mString256ArrayFlags);
ADD_ENTRIES_ARRAY_(FlagType::Vector2fArray, mVector2fArrayFlags);
ADD_ENTRIES_ARRAY_(FlagType::Vector3fArray, mVector3fArrayFlags);
ADD_ENTRIES_ARRAY_(FlagType::Vector4fArray, mVector4fArrayFlags);
#undef ADD_ENTRIES_
#undef ADD_ENTRIES_ARRAY_
}
void TriggerParam::initRevivalRandomBools(sead::Heap* heap) {
s32 count = 0;
for (s32 i = 0; i < mBoolFlags.size(); ++i) {
if (static_cast<FlagBool*>(mBoolFlags[i])->getRandomResetData())
++count;
}
if (count == 0)
return;
mRevivalRandomBools.allocBuffer(count, heap);
for (s32 i = 0; i < mBoolFlags.size(); ++i) {
if (static_cast<FlagBool*>(mBoolFlags[i])->getRandomResetData())
mRevivalRandomBools.pushBack(static_cast<FlagBool*>(mBoolFlags[i]));
}
}
void TriggerParam::copyAllFlags(const TriggerParam& src, sead::Heap* heap, bool init_reset_data) {
mResourceFlags = src.mResourceFlags;
s32 num_flags = 0;
#define COPY_(MEMBER, T) \
do { \
const auto size = src.MEMBER.size(); \
if (size > 0) { \
MEMBER.allocBuffer(size, heap); \
makeFlagProxies<T>(MEMBER, src.MEMBER, size, heap, false); \
num_flags += size; \
} \
} while (0)
COPY_(mBoolFlags, bool);
COPY_(mS32Flags, s32);
COPY_(mF32Flags, f32);
COPY_(mStringFlags, sead::FixedSafeString<32>);
COPY_(mString64Flags, sead::FixedSafeString<64>);
COPY_(mString256Flags, sead::FixedSafeString<256>);
COPY_(mVector2fFlags, sead::Vector2f);
COPY_(mVector3fFlags, sead::Vector3f);
COPY_(mVector4fFlags, sead::Vector4f);
#undef COPY_
#define COPY_ARRAY_(MEMBER, T) \
do { \
const auto size = src.MEMBER.size(); \
if (size > 0) { \
MEMBER.allocBuffer(size, heap); \
for (s32 i = 0; i < size; ++i) { \
const auto array_size = src.MEMBER[i]->size(); \
if (array_size > 0) { \
MEMBER.pushBack(new (heap) sead::PtrArray<FlagBase>); \
MEMBER[i]->allocBuffer(std::max(1, array_size), heap); \
makeFlagProxies<T>(*MEMBER[i], *src.MEMBER[i], array_size, heap, false); \
num_flags += size; \
} \
} \
} \
} while (0)
COPY_ARRAY_(mBoolArrayFlags, bool);
COPY_ARRAY_(mS32ArrayFlags, s32);
COPY_ARRAY_(mF32ArrayFlags, f32);
COPY_ARRAY_(mStringArrayFlags, sead::FixedSafeString<32>);
COPY_ARRAY_(mString64ArrayFlags, sead::FixedSafeString<64>);
COPY_ARRAY_(mString256ArrayFlags, sead::FixedSafeString<256>);
COPY_ARRAY_(mVector2fArrayFlags, sead::Vector2f);
COPY_ARRAY_(mVector3fArrayFlags, sead::Vector3f);
COPY_ARRAY_(mVector4fArrayFlags, sead::Vector4f);
#undef COPY_
#undef COPY_ARRAY_
if (init_reset_data) {
for (auto& array : *mUnkArray.data())
array.allocBufferAssert(num_flags, heap);
initResetData(heap);
initRevivalRandomBools(heap);
}
mHeap = heap;
}
void TriggerParam::copyPermanentFlags(const TriggerParam& src, sead::Heap* heap) {
#define COPY_(MEMBER, T) \
do { \
const auto size = src.MEMBER.size(); \
if (size > 0) { \
s32 num_permanent_flags = 0; \
for (s32 i = 0; i < size; ++i) { \
if (src.MEMBER[i]->isPermanent()) \
++num_permanent_flags; \
} \
MEMBER.allocBuffer(std::max(1, num_permanent_flags), heap); \
makeFlagProxies<T>(MEMBER, src.MEMBER, size, heap, true); \
} \
} while (0)
COPY_(mBoolFlags, bool);
COPY_(mS32Flags, s32);
COPY_(mF32Flags, f32);
COPY_(mStringFlags, sead::FixedSafeString<32>);
COPY_(mString64Flags, sead::FixedSafeString<64>);
COPY_(mString256Flags, sead::FixedSafeString<256>);
COPY_(mVector2fFlags, sead::Vector2f);
COPY_(mVector3fFlags, sead::Vector3f);
COPY_(mVector4fFlags, sead::Vector4f);
#undef COPY_
#define COPY_ARRAY_(MEMBER, T) \
do { \
const auto size = src.MEMBER.size(); \
if (size > 0) { \
MEMBER.allocBuffer(size, heap); \
for (s32 i = 0; i < size; ++i) { \
const auto array_size = src.MEMBER[i]->size(); \
if (array_size > 0) { \
auto* array = new (heap) sead::PtrArray<FlagBase>; \
MEMBER.pushBack(array); \
MEMBER[i]->allocBuffer(std::max(1, array_size), heap); \
makeFlagProxies<T>(*MEMBER[i], *src.MEMBER[i], array_size, heap, true); \
} \
} \
} \
} while (0)
COPY_ARRAY_(mBoolArrayFlags, bool);
COPY_ARRAY_(mS32ArrayFlags, s32);
COPY_ARRAY_(mF32ArrayFlags, f32);
COPY_ARRAY_(mStringArrayFlags, sead::FixedSafeString<32>);
COPY_ARRAY_(mString64ArrayFlags, sead::FixedSafeString<64>);
COPY_ARRAY_(mString256ArrayFlags, sead::FixedSafeString<256>);
COPY_ARRAY_(mVector2fArrayFlags, sead::Vector2f);
COPY_ARRAY_(mVector3fArrayFlags, sead::Vector3f);
COPY_ARRAY_(mVector4fArrayFlags, sead::Vector4f);
#undef COPY_
#undef COPY_ARRAY_
mHeap = heap;
}
FlagType TriggerParam::getFlagType(const sead::SafeString& name) const {
if (getBoolIdx(name) != -1)
return FlagType::Bool;
if (getBoolArrayIdx(name) != -1)
return FlagType::BoolArray;
if (getS32Idx(name) != -1)
return FlagType::S32;
if (getS32ArrayIdx(name) != -1)
return FlagType::S32Array;
if (getStrIdx(name) != -1)
return FlagType::String;
if (getStrArrayIdx(name) != -1)
return FlagType::StringArray;
if (getF32Idx(name) != -1)
return FlagType::F32;
if (getF32ArrayIdx(name) != -1)
return FlagType::F32Array;
if (getVec3fIdx(name) != -1)
return FlagType::Vector3f;
if (getVec3fArrayIdx(name) != -1)
return FlagType::Vector3fArray;
if (getStr64Idx(name) != -1)
return FlagType::String64;
if (getStr256ArrayIdx(name) != -1)
return FlagType::String256Array;
if (getStr256Idx(name) != -1)
return FlagType::String256;
if (getStr64ArrayIdx(name) != -1)
return FlagType::String64Array;
if (getVec2fIdx(name) != -1)
return FlagType::Vector2f;
if (getVec2fArrayIdx(name) != -1)
return FlagType::Vector2fArray;
if (getVec4fIdx(name) != -1)
return FlagType::Vector4f;
if (getVec4fArrayIdx(name) != -1)
return FlagType::Vector4fArray;
return FlagType::Invalid;
}
bool TriggerParam::getBool(bool* value, s32 index, bool check_permissions) const {
return getFlagValue(mBoolFlags, value, index, check_permissions);
}
bool TriggerParam::getS32(s32* value, s32 index, bool check_permissions) const {
return getFlagValue(mS32Flags, value, index, check_permissions);
}
bool TriggerParam::getF32(f32* value, s32 index, bool check_permissions) const {
return getFlagValue(mF32Flags, value, index, check_permissions);
}
bool TriggerParam::getStr(const char** value, s32 index, bool check_permissions) const {
return getFlagValue<const char*, sead::FixedSafeString<32>>(mStringFlags, value, index,
check_permissions);
}
bool TriggerParam::getStr64(const char** value, s32 index, bool check_permissions) const {
return getFlagValue<const char*, sead::FixedSafeString<64>>(mString64Flags, value, index,
check_permissions);
}
bool TriggerParam::getStr256(const char** value, s32 index, bool check_permissions) const {
return getFlagValue<const char*, sead::FixedSafeString<256>>(mString256Flags, value, index,
check_permissions);
}
bool TriggerParam::getVec2f(sead::Vector2f* value, s32 index, bool check_permissions) const {
return getFlagValue(mVector2fFlags, value, index, check_permissions);
}
bool TriggerParam::getVec3f(sead::Vector3f* value, s32 index, bool check_permissions) const {
return getFlagValue(mVector3fFlags, value, index, check_permissions);
}
bool TriggerParam::getVec4f(sead::Vector4f* value, s32 index, bool check_permissions) const {
return getFlagValue(mVector4fFlags, value, index, check_permissions);
}
bool TriggerParam::getBool(bool* value, const sead::SafeString& name,
bool check_permissions) const {
return getBool(value, getBoolIdx(name), check_permissions);
}
bool TriggerParam::getBool2(bool* value, const sead::SafeString& name,
bool check_permissions) const {
return getBool(value, getBoolIdx(name), check_permissions);
}
bool TriggerParam::getS32(s32* value, const sead::SafeString& name, bool check_permissions) const {
return getS32(value, getS32Idx(name), check_permissions);
}
bool TriggerParam::getF32(f32* value, const sead::SafeString& name, bool check_permissions) const {
return getF32(value, getF32Idx(name), check_permissions);
}
bool TriggerParam::getStr(const char** value, const sead::SafeString& name,
bool check_permissions) const {
return getStr(value, getStrIdx(name), check_permissions);
}
bool TriggerParam::getStr64(const char** value, const sead::SafeString& name,
bool check_permissions) const {
return getStr64(value, getStr64Idx(name), check_permissions);
}
bool TriggerParam::getStr256(const char** value, const sead::SafeString& name,
bool check_permissions) const {
return getStr256(value, getStr256Idx(name), check_permissions);
}
bool TriggerParam::getVec2f(sead::Vector2f* value, const sead::SafeString& name,
bool check_permissions) const {
return getVec2f(value, getVec2fIdx(name), check_permissions);
}
bool TriggerParam::getVec3f(sead::Vector3f* value, const sead::SafeString& name,
bool check_permissions) const {
return getVec3f(value, getVec3fIdx(name), check_permissions);
}
bool TriggerParam::getVec4f(sead::Vector4f* value, const sead::SafeString& name,
bool check_permissions) const {
return getVec4f(value, getVec4fIdx(name), check_permissions);
}
bool TriggerParam::getBool(bool* value, s32 array_index, s32 index, bool check_permissions) const {
return getFlagValue(mBoolArrayFlags, value, array_index, index, check_permissions);
}
bool TriggerParam::getS32(s32* value, s32 array_index, s32 index, bool check_permissions) const {
return getFlagValue(mS32ArrayFlags, value, array_index, index, check_permissions);
}
bool TriggerParam::getF32(f32* value, s32 array_index, s32 index, bool check_permissions) const {
return getFlagValue(mF32ArrayFlags, value, array_index, index, check_permissions);
}
bool TriggerParam::getStr(const char** value, s32 array_index, s32 index,
bool check_permissions) const {
return getFlagValue<const char*, sead::FixedSafeString<32>>(
mStringArrayFlags, value, array_index, index, check_permissions);
}
bool TriggerParam::getStr64(const char** value, s32 array_index, s32 index,
bool check_permissions) const {
return getFlagValue<const char*, sead::FixedSafeString<64>>(
mString64ArrayFlags, value, array_index, index, check_permissions);
}
bool TriggerParam::getStr256(const char** value, s32 array_index, s32 index,
bool check_permissions) const {
return getFlagValue<const char*, sead::FixedSafeString<256>>(
mString256ArrayFlags, value, array_index, index, check_permissions);
}
bool TriggerParam::getVec2f(sead::Vector2f* value, s32 array_index, s32 index,
bool check_permissions) const {
return getFlagValue(mVector2fArrayFlags, value, array_index, index, check_permissions);
}
bool TriggerParam::getVec3f(sead::Vector3f* value, s32 array_index, s32 index,
bool check_permissions) const {
return getFlagValue(mVector3fArrayFlags, value, array_index, index, check_permissions);
}
bool TriggerParam::getVec4f(sead::Vector4f* value, s32 array_index, s32 index,
bool check_permissions) const {
return getFlagValue(mVector4fArrayFlags, value, array_index, index, check_permissions);
}
bool TriggerParam::getBool(bool* value, const sead::SafeString& name, s32 index,
bool check_permissions) const {
return getBool(value, getBoolArrayIdx(name), index, check_permissions);
}
bool TriggerParam::getS32(s32* value, const sead::SafeString& name, s32 index,
bool check_permissions) const {
return getS32(value, getS32ArrayIdx(name), index, check_permissions);
}
bool TriggerParam::getF32(f32* value, const sead::SafeString& name, s32 index,
bool check_permissions) const {
return getF32(value, getF32ArrayIdx(name), index, check_permissions);
}
bool TriggerParam::getStr(const char** value, const sead::SafeString& name, s32 index,
bool check_permissions) const {
return getStr(value, getStrArrayIdx(name), index, check_permissions);
}
bool TriggerParam::getStr64(const char** value, const sead::SafeString& name, s32 index,
bool check_permissions) const {
return getStr64(value, getStr64ArrayIdx(name), index, check_permissions);
}
bool TriggerParam::getStr256(const char** value, const sead::SafeString& name, s32 index,
bool check_permissions) const {
return getStr256(value, getStr256ArrayIdx(name), index, check_permissions);
}
bool TriggerParam::getVec2f(sead::Vector2f* value, const sead::SafeString& name, s32 index,
bool check_permissions) const {
return getVec2f(value, getVec2fArrayIdx(name), index, check_permissions);
}
bool TriggerParam::getVec3f(sead::Vector3f* value, const sead::SafeString& name, s32 index,
bool check_permissions) const {
return getVec3f(value, getVec3fArrayIdx(name), index, check_permissions);
}
bool TriggerParam::getVec4f(sead::Vector4f* value, const sead::SafeString& name, s32 index,
bool check_permissions) const {
return getVec4f(value, getVec4fArrayIdx(name), index, check_permissions);
}
bool TriggerParam::getBoolArraySize(s32* size, s32 index) const {
return getFlagArraySize(mBoolArrayFlags, index, size);
}
bool TriggerParam::getS32ArraySize(s32* size, s32 index) const {
return getFlagArraySize(mS32ArrayFlags, index, size);
}
bool TriggerParam::getF32ArraySize(s32* size, s32 index) const {
return getFlagArraySize(mF32ArrayFlags, index, size);
}
bool TriggerParam::getStrArraySize(s32* size, s32 index) const {
return getFlagArraySize(mStringArrayFlags, index, size);
}
bool TriggerParam::getStr64ArraySize(s32* size, s32 index) const {
return getFlagArraySize(mString64ArrayFlags, index, size);
}
bool TriggerParam::getStr256ArraySize(s32* size, s32 index) const {
return getFlagArraySize(mString256ArrayFlags, index, size);
}
bool TriggerParam::getVec2fArraySize(s32* size, s32 index) const {
return getFlagArraySize(mVector2fArrayFlags, index, size);
}
bool TriggerParam::getVec3fArraySize(s32* size, s32 index) const {
return getFlagArraySize(mVector3fArrayFlags, index, size);
}
bool TriggerParam::getVec4fArraySize(s32* size, s32 index) const {
return getFlagArraySize(mVector4fArrayFlags, index, size);
}
bool TriggerParam::getBoolArraySizeByHash(s32* size, u32 name) const {
return getBoolArraySize(size, getBoolArrayIdx(name));
}
bool TriggerParam::getS32ArraySizeByHash(s32* size, u32 name) const {
return getS32ArraySize(size, getS32ArrayIdx(name));
}
bool TriggerParam::getF32ArraySizeByHash(s32* size, u32 name) const {
return getF32ArraySize(size, getF32ArrayIdx(name));
}
bool TriggerParam::getStrArraySizeByHash(s32* size, u32 name) const {
return getStrArraySize(size, getStrArrayIdx(name));
}
bool TriggerParam::getStr64ArraySizeByHash(s32* size, u32 name) const {
return getStr64ArraySize(size, getStr64ArrayIdx(name));
}
bool TriggerParam::getStr256ArraySizeByHash(s32* size, u32 name) const {
return getStr256ArraySize(size, getStr256ArrayIdx(name));
}
bool TriggerParam::getVec2fArraySizeByHash(s32* size, u32 name) const {
return getVec2fArraySize(size, getVec2fArrayIdx(name));
}
bool TriggerParam::getVec3fArraySizeByHash(s32* size, u32 name) const {
return getVec3fArraySize(size, getVec3fArrayIdx(name));
}
bool TriggerParam::getVec4fArraySizeByHash(s32* size, u32 name) const {
return getVec4fArraySize(size, getVec4fArrayIdx(name));
}
bool TriggerParam::getS32ArraySize(s32* size, const sead::SafeString& name) const {
return getS32ArraySize(size, getS32ArrayIdx(name));
}
bool TriggerParam::getStr64ArraySize(s32* size, const sead::SafeString& name) const {
return getStr64ArraySize(size, getStr64ArrayIdx(name));
}
bool TriggerParam::getVec3fArraySize(s32* size, const sead::SafeString& name) const {
return getVec3fArraySize(size, getVec3fArrayIdx(name));
}
bool TriggerParam::getMinValueForS32(s32* min, const sead::SafeString& name) const {
const auto* flag = getFlag<s32>(mS32Flags, name);
if (!flag)
return false;
*min = flag->getConfig().min_value;
return true;
}
bool TriggerParam::getMaxValueForS32(s32* max, const sead::SafeString& name) const {
const auto* flag = getFlag<s32>(mS32Flags, name);
if (!flag)
return false;
*max = flag->getConfig().max_value;
return true;
}
s32 TriggerParam::getBoolIdx(u32 name) const {
return getFlagIndex(mBoolFlags, name);
}
s32 TriggerParam::getS32Idx(u32 name) const {
return getFlagIndex(mS32Flags, name);
}
s32 TriggerParam::getF32Idx(u32 name) const {
return getFlagIndex(mF32Flags, name);
}
s32 TriggerParam::getStrIdx(u32 name) const {
return getFlagIndex(mStringFlags, name);
}
s32 TriggerParam::getStr64Idx(u32 name) const {
return getFlagIndex(mString64Flags, name);
}
s32 TriggerParam::getStr256Idx(u32 name) const {
return getFlagIndex(mString256Flags, name);
}
s32 TriggerParam::getVec2fIdx(u32 name) const {
return getFlagIndex(mVector2fFlags, name);
}
s32 TriggerParam::getVec3fIdx(u32 name) const {
return getFlagIndex(mVector3fFlags, name);
}
s32 TriggerParam::getVec4fIdx(u32 name) const {
return getFlagIndex(mVector4fFlags, name);
}
s32 TriggerParam::getBoolArrayIdx(u32 name) const {
return getFlagIndex(mBoolArrayFlags, name);
}
s32 TriggerParam::getS32ArrayIdx(u32 name) const {
return getFlagIndex(mS32ArrayFlags, name);
}
s32 TriggerParam::getF32ArrayIdx(u32 name) const {
return getFlagIndex(mF32ArrayFlags, name);
}
s32 TriggerParam::getStrArrayIdx(u32 name) const {
return getFlagIndex(mStringArrayFlags, name);
}
s32 TriggerParam::getStr64ArrayIdx(u32 name) const {
return getFlagIndex(mString64ArrayFlags, name);
}
s32 TriggerParam::getStr256ArrayIdx(u32 name) const {
return getFlagIndex(mString256ArrayFlags, name);
}
s32 TriggerParam::getVec2fArrayIdx(u32 name) const {
return getFlagIndex(mVector2fArrayFlags, name);
}
s32 TriggerParam::getVec3fArrayIdx(u32 name) const {
return getFlagIndex(mVector3fArrayFlags, name);
}
s32 TriggerParam::getVec4fArrayIdx(u32 name) const {
return getFlagIndex(mVector4fArrayFlags, name);
}
} // namespace ksys::gdt

View File

@ -1,7 +1,9 @@
#pragma once
#include <basis/seadTypes.h>
#include <codec/seadHashCRC32.h>
#include <container/seadBuffer.h>
#include <container/seadObjArray.h>
#include <container/seadPtrArray.h>
#include <container/seadSafeArray.h>
#include <prim/seadStorageFor.h>
@ -9,6 +11,10 @@
#include "KingSystem/GameData/gdtFlag.h"
#include "KingSystem/Utils/Types.h"
namespace ksys::res {
class GameData;
}
namespace ksys::gdt {
class TriggerParam {
@ -22,69 +28,247 @@ public:
TriggerParam();
void copyFromGameDataRes(res::GameData* gdata, sead::Heap* heap);
void init(sead::Heap* heap);
void destroyHeap();
void allocBools(s32 size, sead::Heap* heap);
void allocS32s(s32 size, sead::Heap* heap);
void copyAllFlags(const TriggerParam& src, sead::Heap* heap, bool init_reset_data);
void copyPermanentFlags(const TriggerParam& src, sead::Heap* heap);
FlagType getFlagType(const sead::SafeString& name) const;
// region Value getters (by hash)
bool getBool(bool* value, s32 index, bool check_permissions) const;
bool getS32(s32* value, s32 index, bool check_permissions) const;
bool getF32(f32* value, s32 index, bool check_permissions) const;
bool getStr(const char** value, s32 index, bool check_permissions) const;
bool getStr64(const char** value, s32 index, bool check_permissions) const;
bool getStr256(const char** value, s32 index, bool check_permissions) const;
bool getVec2f(sead::Vector2f* value, s32 index, bool check_permissions) const;
bool getVec3f(sead::Vector3f* value, s32 index, bool check_permissions) const;
bool getVec4f(sead::Vector4f* value, s32 index, bool check_permissions) const;
bool getBool(bool* value, s32 array_index, s32 index, bool check_permissions) const;
bool getS32(s32* value, s32 array_index, s32 index, bool check_permissions) const;
bool getF32(f32* value, s32 array_index, s32 index, bool check_permissions) const;
bool getStr(const char** value, s32 array_index, s32 index, bool check_permissions) const;
bool getStr64(const char** value, s32 array_index, s32 index, bool check_permissions) const;
bool getStr256(const char** value, s32 array_index, s32 index, bool check_permissions) const;
bool getVec2f(sead::Vector2f* value, s32 array_index, s32 index, bool check_permissions) const;
bool getVec3f(sead::Vector3f* value, s32 array_index, s32 index, bool check_permissions) const;
bool getVec4f(sead::Vector4f* value, s32 array_index, s32 index, bool check_permissions) const;
// endregion
// region Value getters (by name)
bool getBool(bool* value, const sead::SafeString& name, bool check_permissions) const;
bool getBool2(bool* value, const sead::SafeString& name, bool check_permissions) const;
bool getS32(s32* value, const sead::SafeString& name, bool check_permissions) const;
bool getF32(f32* value, const sead::SafeString& name, bool check_permissions) const;
bool getStr(const char** value, const sead::SafeString& name, bool check_permissions) const;
bool getStr64(const char** value, const sead::SafeString& name, bool check_permissions) const;
bool getStr256(const char** value, const sead::SafeString& name, bool check_permissions) const;
bool getVec2f(sead::Vector2f* value, const sead::SafeString& name,
bool check_permissions) const;
bool getVec3f(sead::Vector3f* value, const sead::SafeString& name,
bool check_permissions) const;
bool getVec4f(sead::Vector4f* value, const sead::SafeString& name,
bool check_permissions) const;
bool getBool(bool* value, const sead::SafeString& name, s32 index,
bool check_permissions) const;
bool getS32(s32* value, const sead::SafeString& name, s32 index, bool check_permissions) const;
bool getF32(f32* value, const sead::SafeString& name, s32 index, bool check_permissions) const;
bool getStr(const char** value, const sead::SafeString& name, s32 index,
bool check_permissions) const;
bool getStr64(const char** value, const sead::SafeString& name, s32 index,
bool check_permissions) const;
bool getStr256(const char** value, const sead::SafeString& name, s32 index,
bool check_permissions) const;
bool getVec2f(sead::Vector2f* value, const sead::SafeString& name, s32 index,
bool check_permissions) const;
bool getVec3f(sead::Vector3f* value, const sead::SafeString& name, s32 index,
bool check_permissions) const;
bool getVec4f(sead::Vector4f* value, const sead::SafeString& name, s32 index,
bool check_permissions) const;
// endregion
// region Index getters (by hash)
s32 getBoolIdx(u32 name) const;
s32 getS32Idx(u32 name) const;
s32 getF32Idx(u32 name) const;
s32 getStrIdx(u32 name) const;
s32 getStr64Idx(u32 name) const;
s32 getStr256Idx(u32 name) const;
s32 getVec2fIdx(u32 name) const;
s32 getVec3fIdx(u32 name) const;
s32 getVec4fIdx(u32 name) const;
s32 getBoolArrayIdx(u32 name) const;
s32 getS32ArrayIdx(u32 name) const;
s32 getF32ArrayIdx(u32 name) const;
s32 getStrArrayIdx(u32 name) const;
s32 getStr64ArrayIdx(u32 name) const;
s32 getStr256ArrayIdx(u32 name) const;
s32 getVec2fArrayIdx(u32 name) const;
s32 getVec3fArrayIdx(u32 name) const;
s32 getVec4fArrayIdx(u32 name) const;
// endregion
// region Index getters (by name)
s32 getBoolIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getBoolIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getS32Idx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getS32Idx(sead::HashCRC32::calcStringHash(name));
}
s32 getF32Idx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getF32Idx(sead::HashCRC32::calcStringHash(name));
}
s32 getStrIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getStrIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getStr64Idx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getStr64Idx(sead::HashCRC32::calcStringHash(name));
}
s32 getStr256Idx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getStr256Idx(sead::HashCRC32::calcStringHash(name));
}
s32 getVec2fIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getVec2fIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getVec3fIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getVec3fIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getVec4fIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getVec4fIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getBoolArrayIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getBoolArrayIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getS32ArrayIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getS32ArrayIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getF32ArrayIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getF32ArrayIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getStrArrayIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getStrArrayIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getStr64ArrayIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getStr64ArrayIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getStr256ArrayIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getStr256ArrayIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getVec2fArrayIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getVec2fArrayIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getVec3fArrayIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getVec3fArrayIdx(sead::HashCRC32::calcStringHash(name));
}
s32 getVec4fArrayIdx(const sead::SafeString& name) const {
return name.isEmpty() ? -1 : getVec4fArrayIdx(sead::HashCRC32::calcStringHash(name));
}
// endregion
// region Array size getters
bool getBoolArraySize(s32* size, s32 index) const;
bool getS32ArraySize(s32* size, s32 index) const;
bool getF32ArraySize(s32* size, s32 index) const;
bool getStrArraySize(s32* size, s32 index) const;
bool getStr64ArraySize(s32* size, s32 index) const;
bool getStr256ArraySize(s32* size, s32 index) const;
bool getVec2fArraySize(s32* size, s32 index) const;
bool getVec3fArraySize(s32* size, s32 index) const;
bool getVec4fArraySize(s32* size, s32 index) const;
bool getBoolArraySizeByHash(s32* size, u32 name) const;
bool getS32ArraySizeByHash(s32* size, u32 name) const;
bool getF32ArraySizeByHash(s32* size, u32 name) const;
bool getStrArraySizeByHash(s32* size, u32 name) const;
bool getStr64ArraySizeByHash(s32* size, u32 name) const;
bool getStr256ArraySizeByHash(s32* size, u32 name) const;
bool getVec2fArraySizeByHash(s32* size, u32 name) const;
bool getVec3fArraySizeByHash(s32* size, u32 name) const;
bool getVec4fArraySizeByHash(s32* size, u32 name) const;
bool getS32ArraySize(s32* size, const sead::SafeString& name) const;
bool getStr64ArraySize(s32* size, const sead::SafeString& name) const;
bool getVec3fArraySize(s32* size, const sead::SafeString& name) const;
// endregion
bool getMinValueForS32(s32* min, const sead::SafeString& name) const;
bool getMaxValueForS32(s32* max, const sead::SafeString& name) const;
private:
enum class Flag : u8 {
enum class BitFlag : u8 {
};
sead::TypedBitFlag<Flag>& getFlags() { return *mFlags.data(); }
const sead::TypedBitFlag<Flag>& getFlags() const { return *mFlags.data(); }
void allocCombinedFlagArrays(sead::Heap* heap);
void updateBoolFlagCounts();
void initResetData(sead::Heap* heap);
void initRevivalRandomBools(sead::Heap* heap);
sead::TypedBitFlag<BitFlag>& getBitFlags() { return *mBitFlags.data(); }
const sead::TypedBitFlag<BitFlag>& getBitFlags() const { return *mBitFlags.data(); }
sead::SafeArray<sead::CriticalSection, 3>& getCriticalSections() {
return *mCriticalSections.data();
}
u32 mResourceFlags = 0;
sead::PtrArray<FlagBool> mBoolFlags;
sead::PtrArray<FlagS32> mS32Flags;
sead::PtrArray<FlagF32> mF32Flags;
sead::PtrArray<FlagString> mStringFlags;
sead::PtrArray<FlagString64> mString64Flags;
sead::PtrArray<FlagString256> mString256Flags;
sead::PtrArray<FlagVector2f> mVector2fFlags;
sead::PtrArray<FlagVector3f> mVector3fFlags;
sead::PtrArray<FlagVector4f> mVector4fFlags;
sead::PtrArray<FlagBase> mBoolFlags;
sead::PtrArray<FlagBase> mS32Flags;
sead::PtrArray<FlagBase> mF32Flags;
sead::PtrArray<FlagBase> mStringFlags;
sead::PtrArray<FlagBase> mString64Flags;
sead::PtrArray<FlagBase> mString256Flags;
sead::PtrArray<FlagBase> mVector2fFlags;
sead::PtrArray<FlagBase> mVector3fFlags;
sead::PtrArray<FlagBase> mVector4fFlags;
sead::PtrArray<FlagBoolArray> mBoolArrayFlags;
sead::PtrArray<FlagS32Array> mS32ArrayFlags;
sead::PtrArray<FlagF32Array> mF32ArrayFlags;
sead::PtrArray<FlagStringArray> mStringArrayFlags;
sead::PtrArray<FlagString64Array> mString64ArrayFlags;
sead::PtrArray<FlagString256Array> mString256ArrayFlags;
sead::PtrArray<FlagVector2fArray> mVector2fArrayFlags;
sead::PtrArray<FlagVector3fArray> mVector3fArrayFlags;
sead::PtrArray<FlagVector4fArray> mVector4fArrayFlags;
sead::PtrArray<sead::PtrArray<FlagBase>> mBoolArrayFlags;
sead::PtrArray<sead::PtrArray<FlagBase>> mS32ArrayFlags;
sead::PtrArray<sead::PtrArray<FlagBase>> mF32ArrayFlags;
sead::PtrArray<sead::PtrArray<FlagBase>> mStringArrayFlags;
sead::PtrArray<sead::PtrArray<FlagBase>> mString64ArrayFlags;
sead::PtrArray<sead::PtrArray<FlagBase>> mString256ArrayFlags;
sead::PtrArray<sead::PtrArray<FlagBase>> mVector2fArrayFlags;
sead::PtrArray<sead::PtrArray<FlagBase>> mVector3fArrayFlags;
sead::PtrArray<sead::PtrArray<FlagBase>> mVector4fArrayFlags;
sead::StorageFor<sead::SafeArray<sead::Buffer<ResetEntry>, 3>> mUnkArray{};
sead::ObjArray<FlagBase> mCombinedBoolFlags;
sead::ObjArray<FlagBase> mCombinedS32Flags;
sead::ObjArray<FlagBase> mCombinedF32Flags;
sead::ObjArray<FlagBase> mCombinedStringFlags;
sead::ObjArray<FlagBase> mCombinedString64Flags;
sead::ObjArray<FlagBase> mCombinedString256Flags;
sead::ObjArray<FlagBase> mCombinedVector2fFlags;
sead::ObjArray<FlagBase> mCombinedVector3fFlags;
sead::ObjArray<FlagBase> mCombinedVector4fFlags;
// FIXME
sead::PtrArray<FlagBool> mUnkArray0;
sead::PtrArray<FlagBool> mUnkArray1;
sead::PtrArray<FlagBool> mUnkArray2;
sead::PtrArray<FlagBool> mUnkArray3;
sead::PtrArray<FlagBool> mUnkArray4;
sead::PtrArray<FlagBool> mUnkArray5;
sead::PtrArray<FlagBool> mUnkArray6;
sead::PtrArray<FlagBool> mUnkArray7;
sead::PtrArray<FlagBool> mUnkArray8;
sead::PtrArray<FlagBool> mUnkArray9;
sead::PtrArray<FlagBool> mUnkArray10;
sead::PtrArray<FlagBool> mUnkArray11;
sead::PtrArray<FlagBool> mUnkArray12;
sead::PtrArray<FlagBool> mUnkArray13;
sead::PtrArray<FlagBool> mUnkArray14;
sead::PtrArray<FlagBool> mUnkArray15;
sead::PtrArray<FlagBool> mUnkArray16;
sead::PtrArray<FlagBool> mUnkArray17;
sead::PtrArray<FlagBool> mUnkArray18;
sead::PtrArray<FlagBool> mUnkArray19;
sead::PtrArray<FlagBool> mUnkArray20;
sead::Buffer<ResetEntry> mResetEntries;
sead::PtrArray<FlagBool> mRevivalRandomBools;
sead::Heap* mHeap = nullptr;
sead::SafeArray<s32, 33> mCounts;
sead::SafeArray<s32, 18> mCounts;
sead::SafeArray<s32, 15> mNumBoolFlagsPerCategory;
sead::StorageFor<sead::SafeArray<sead::CriticalSection, 3>> mCriticalSections{};
sead::StorageFor<sead::TypedBitFlag<Flag>> mFlags;
sead::StorageFor<sead::TypedBitFlag<BitFlag>> mBitFlags;
};
KSYS_CHECK_SIZE_NX150(TriggerParam, 0x3f0);

View File

@ -23,6 +23,27 @@ public:
s32 getField14() const { return _14; }
sead::Buffer<gdt::FlagBool>& getBoolFlags() { return mBoolFlags; }
sead::Buffer<gdt::FlagS32>& getS32Flags() { return mS32Flags; }
sead::Buffer<gdt::FlagF32>& getF32Flags() { return mF32Flags; }
sead::Buffer<gdt::FlagString>& getStringFlags() { return mStringFlags; }
sead::Buffer<gdt::FlagString64>& getString64Flags() { return mString64Flags; }
sead::Buffer<gdt::FlagString256>& getString256Flags() { return mString256Flags; }
sead::Buffer<gdt::FlagVector2f>& getVector2fFlags() { return mVector2fFlags; }
sead::Buffer<gdt::FlagVector3f>& getVector3fFlags() { return mVector3fFlags; }
sead::Buffer<gdt::FlagVector4f>& getVector4fFlags() { return mVector4fFlags; }
sead::PtrArray<gdt::FlagBoolArray>& getBoolArrayFlags() { return mBoolArrayFlags; }
sead::PtrArray<gdt::FlagS32Array>& getS32ArrayFlags() { return mS32ArrayFlags; }
sead::PtrArray<gdt::FlagF32Array>& getF32ArrayFlags() { return mF32ArrayFlags; }
sead::PtrArray<gdt::FlagStringArray>& getStringArrayFlags() { return mStringArrayFlags; }
sead::PtrArray<gdt::FlagString64Array>& getString64ArrayFlags() { return mString64ArrayFlags; }
sead::PtrArray<gdt::FlagString256Array>& getString256ArrayFlags() {
return mString256ArrayFlags;
}
sead::PtrArray<gdt::FlagVector2fArray>& getVector2fArrayFlags() { return mVector2fArrayFlags; }
sead::PtrArray<gdt::FlagVector3fArray>& getVector3fArrayFlags() { return mVector3fArrayFlags; }
sead::PtrArray<gdt::FlagVector4fArray>& getVector4fArrayFlags() { return mVector4fArrayFlags; }
const sead::Buffer<gdt::FlagBool>& getBoolFlags() const { return mBoolFlags; }
const sead::Buffer<gdt::FlagS32>& getS32Flags() const { return mS32Flags; }
const sead::Buffer<gdt::FlagF32>& getF32Flags() const { return mF32Flags; }

View File

@ -26,6 +26,8 @@ public:
void calc();
void reportDebug(const sead::SafeString& message, const sead::SafeString& data);
ProductReporter* getReporter() const { return mReporter; }
bool get30() const { return _30; }

View File

@ -35,5 +35,6 @@ target_sources(uking PRIVATE
ParamIO.h
SafeDelete.h
StrTreeMap.h
TypeTraits.h
Types.h
)

View File

@ -0,0 +1,13 @@
#pragma once
#include <type_traits>
namespace ksys {
template <class T, class...>
struct IsAnyOfType : std::false_type {};
template <class T, class Head, class... Tail>
struct IsAnyOfType<T, Head, Tail...>
: std::conditional_t<std::is_same_v<T, Head>, std::true_type, IsAnyOfType<T, Tail...>> {};
} // namespace ksys