diff --git a/data/uking_functions.csv b/data/uking_functions.csv index c0d70d0a..fcd7f139 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -74498,7 +74498,7 @@ 0x0000007100def5d0,shouldSkipReviveShopItem,868, 0x0000007100def934,TriggerParam::reset,3652, 0x0000007100df0778,TriggerParam::getGameDataFlagBool,32,_ZNK4ksys3gdt12TriggerParam11getBoolFlagEi -0x0000007100df0798,TriggerParam::getBoolFlag,256, +0x0000007100df0798,TriggerParam::getBoolFlag,256,_ZNK4ksys3gdt12TriggerParam17getBoolFlagAndIdxEPij 0x0000007100df0898,sub_7100DF0898,32,_ZNK4ksys3gdt12TriggerParam10getS32FlagEi 0x0000007100df08b8,TriggerParam::getBoolIdx,184,_ZNK4ksys3gdt12TriggerParam10getBoolIdxEj 0x0000007100df0970,TriggerParam::getS32Idx,184,_ZNK4ksys3gdt12TriggerParam9getS32IdxEj @@ -74515,24 +74515,24 @@ 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, -0x0000007100df1568,sub_7100DF1568,256, -0x0000007100df1668,sub_7100DF1668,256, -0x0000007100df1768,sub_7100DF1768,256, -0x0000007100df1868,sub_7100DF1868,256, -0x0000007100df1968,sub_7100DF1968,256, -0x0000007100df1a68,TriggerParam::getS32FlagForTrackBlock,236, -0x0000007100df1b54,sub_7100DF1B54,244, -0x0000007100df1c48,sub_7100DF1C48,244, -0x0000007100df1d3c,sub_7100DF1D3C,244, -0x0000007100df1e30,sub_7100DF1E30,244, -0x0000007100df1f24,sub_7100DF1F24,244, -0x0000007100df2018,sub_7100DF2018,244, -0x0000007100df210c,sub_7100DF210C,244, -0x0000007100df2200,sub_7100DF2200,244, -0x0000007100df22f4,sub_7100DF22F4,244, +0x0000007100df1268,TriggerParam::getS32Flag,256,_ZNK4ksys3gdt12TriggerParam16getS32FlagAndIdxEPij +0x0000007100df1368,TriggerParam::getF32Flag,256,_ZNK4ksys3gdt12TriggerParam16getF32FlagAndIdxEPij +0x0000007100df1468,TriggerParam::getString32Flag,256,_ZNK4ksys3gdt12TriggerParam16getStrFlagAndIdxEPij +0x0000007100df1568,sub_7100DF1568,256,_ZNK4ksys3gdt12TriggerParam18getStr64FlagAndIdxEPij +0x0000007100df1668,sub_7100DF1668,256,_ZNK4ksys3gdt12TriggerParam19getStr256FlagAndIdxEPij +0x0000007100df1768,sub_7100DF1768,256,_ZNK4ksys3gdt12TriggerParam18getVec2fFlagAndIdxEPij +0x0000007100df1868,sub_7100DF1868,256,_ZNK4ksys3gdt12TriggerParam18getVec3fFlagAndIdxEPij +0x0000007100df1968,sub_7100DF1968,256,_ZNK4ksys3gdt12TriggerParam18getVec4fFlagAndIdxEPij +0x0000007100df1a68,TriggerParam::getS32FlagForTrackBlock,236,_ZNK4ksys3gdt12TriggerParam16getS32FlagByHashEj +0x0000007100df1b54,sub_7100DF1B54,244,_ZNK4ksys3gdt12TriggerParam17getBoolFlagAndIdxEPiji +0x0000007100df1c48,sub_7100DF1C48,244,_ZNK4ksys3gdt12TriggerParam16getS32FlagAndIdxEPiji +0x0000007100df1d3c,sub_7100DF1D3C,244,_ZNK4ksys3gdt12TriggerParam16getF32FlagAndIdxEPiji +0x0000007100df1e30,sub_7100DF1E30,244,_ZNK4ksys3gdt12TriggerParam16getStrFlagAndIdxEPiji +0x0000007100df1f24,sub_7100DF1F24,244,_ZNK4ksys3gdt12TriggerParam18getStr64FlagAndIdxEPiji +0x0000007100df2018,sub_7100DF2018,244,_ZNK4ksys3gdt12TriggerParam19getStr256FlagAndIdxEPiji +0x0000007100df210c,sub_7100DF210C,244,_ZNK4ksys3gdt12TriggerParam18getVec2fFlagAndIdxEPiji +0x0000007100df2200,sub_7100DF2200,244,_ZNK4ksys3gdt12TriggerParam18getVec3fFlagAndIdxEPiji +0x0000007100df22f4,sub_7100DF22F4,244,_ZNK4ksys3gdt12TriggerParam18getVec4fFlagAndIdxEPiji 0x0000007100df23e8,sub_7100DF23E8,32,_ZNK4ksys3gdt12TriggerParam10getF32FlagEi 0x0000007100df2408,sub_7100DF2408,32,_ZNK4ksys3gdt12TriggerParam10getStrFlagEi 0x0000007100df2428,sub_7100DF2428,32,_ZNK4ksys3gdt12TriggerParam12getStr64FlagEi diff --git a/src/KingSystem/GameData/gdtTriggerParam.cpp b/src/KingSystem/GameData/gdtTriggerParam.cpp index 669d78da..c1ccd732 100644 --- a/src/KingSystem/GameData/gdtTriggerParam.cpp +++ b/src/KingSystem/GameData/gdtTriggerParam.cpp @@ -1526,6 +1526,76 @@ FlagVector4f* TriggerParam::getVec4fFlag(s32 idx) const { return static_cast(mVector4fFlags[idx]); } +FlagBool* TriggerParam::getBoolFlagAndIdx(s32* idx, u32 name_hash) const { + *idx = getBoolIdx(name_hash); + if (*idx < 0 || mBoolFlags.size() <= *idx) + return nullptr; + return getBoolFlag(*idx); +} + +FlagS32* TriggerParam::getS32FlagAndIdx(s32* idx, u32 name_hash) const { + *idx = getS32Idx(name_hash); + if (*idx < 0 || mS32Flags.size() <= *idx) + return nullptr; + return getS32Flag(*idx); +} + +FlagF32* TriggerParam::getF32FlagAndIdx(s32* idx, u32 name_hash) const { + *idx = getF32Idx(name_hash); + if (*idx < 0 || mF32Flags.size() <= *idx) + return nullptr; + return getF32Flag(*idx); +} + +FlagString* TriggerParam::getStrFlagAndIdx(s32* idx, u32 name_hash) const { + *idx = getStrIdx(name_hash); + if (*idx < 0 || mStringFlags.size() <= *idx) + return nullptr; + return getStrFlag(*idx); +} + +FlagString64* TriggerParam::getStr64FlagAndIdx(s32* idx, u32 name_hash) const { + *idx = getStr64Idx(name_hash); + if (*idx < 0 || mString64Flags.size() <= *idx) + return nullptr; + return getStr64Flag(*idx); +} + +FlagString256* TriggerParam::getStr256FlagAndIdx(s32* idx, u32 name_hash) const { + *idx = getStr256Idx(name_hash); + if (*idx < 0 || mString256Flags.size() <= *idx) + return nullptr; + return getStr256Flag(*idx); +} + +FlagVector2f* TriggerParam::getVec2fFlagAndIdx(s32* idx, u32 name_hash) const { + *idx = getVec2fIdx(name_hash); + if (*idx < 0 || mVector2fFlags.size() <= *idx) + return nullptr; + return getVec2fFlag(*idx); +} + +FlagVector3f* TriggerParam::getVec3fFlagAndIdx(s32* idx, u32 name_hash) const { + *idx = getVec3fIdx(name_hash); + if (*idx < 0 || mVector3fFlags.size() <= *idx) + return nullptr; + return getVec3fFlag(*idx); +} + +FlagVector4f* TriggerParam::getVec4fFlagAndIdx(s32* idx, u32 name_hash) const { + *idx = getVec4fIdx(name_hash); + if (*idx < 0 || mVector4fFlags.size() <= *idx) + return nullptr; + return getVec4fFlag(*idx); +} + +FlagS32* TriggerParam::getS32FlagByHash(u32 name_hash) const { + const s32 idx = getS32Idx(name_hash); + if (idx < 0 || mS32Flags.size() <= idx) + return nullptr; + return getS32Flag(idx); +} + FlagBool* TriggerParam::getBoolFlag(s32 idx, s32 sub_idx) const { return static_cast(mBoolArrayFlags[idx]->at(sub_idx)); } @@ -1562,6 +1632,69 @@ FlagVector4f* TriggerParam::getVec4fFlag(s32 idx, s32 sub_idx) const { return static_cast(mVector4fArrayFlags[idx]->at(sub_idx)); } +FlagBool* TriggerParam::getBoolFlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const { + *idx = getBoolArrayIdx(name_hash); + if (*idx < 0 || mBoolArrayFlags.size() <= *idx || sub_idx < 0) + return nullptr; + return getFlagByIndex(*mBoolArrayFlags[*idx], sub_idx); +} + +FlagS32* TriggerParam::getS32FlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const { + *idx = getS32ArrayIdx(name_hash); + if (*idx < 0 || mS32ArrayFlags.size() <= *idx || sub_idx < 0) + return nullptr; + return getFlagByIndex(*mS32ArrayFlags[*idx], sub_idx); +} + +FlagF32* TriggerParam::getF32FlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const { + *idx = getF32ArrayIdx(name_hash); + if (*idx < 0 || mF32ArrayFlags.size() <= *idx || sub_idx < 0) + return nullptr; + return getFlagByIndex(*mF32ArrayFlags[*idx], sub_idx); +} + +FlagString* TriggerParam::getStrFlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const { + *idx = getStrArrayIdx(name_hash); + if (*idx < 0 || mStringArrayFlags.size() <= *idx || sub_idx < 0) + return nullptr; + return getFlagByIndex>(*mStringArrayFlags[*idx], sub_idx); +} + +FlagString64* TriggerParam::getStr64FlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const { + *idx = getStr64ArrayIdx(name_hash); + if (*idx < 0 || mString64ArrayFlags.size() <= *idx || sub_idx < 0) + return nullptr; + return getFlagByIndex>(*mString64ArrayFlags[*idx], sub_idx); +} + +FlagString256* TriggerParam::getStr256FlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const { + *idx = getStr256ArrayIdx(name_hash); + if (*idx < 0 || mString256ArrayFlags.size() <= *idx || sub_idx < 0) + return nullptr; + return getFlagByIndex>(*mString256ArrayFlags[*idx], sub_idx); +} + +FlagVector2f* TriggerParam::getVec2fFlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const { + *idx = getVec2fArrayIdx(name_hash); + if (*idx < 0 || mVector2fArrayFlags.size() <= *idx || sub_idx < 0) + return nullptr; + return getFlagByIndex(*mVector2fArrayFlags[*idx], sub_idx); +} + +FlagVector3f* TriggerParam::getVec3fFlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const { + *idx = getVec3fArrayIdx(name_hash); + if (*idx < 0 || mVector3fArrayFlags.size() <= *idx || sub_idx < 0) + return nullptr; + return getFlagByIndex(*mVector3fArrayFlags[*idx], sub_idx); +} + +FlagVector4f* TriggerParam::getVec4fFlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const { + *idx = getVec4fArrayIdx(name_hash); + if (*idx < 0 || mVector4fArrayFlags.size() <= *idx || sub_idx < 0) + return nullptr; + return getFlagByIndex(*mVector4fArrayFlags[*idx], sub_idx); +} + void TriggerParam::onResetBoolFlagForRadarMgr(FlagBase* flag, s32 sub_idx) { reportFlagChange(flag, sub_idx); } diff --git a/src/KingSystem/GameData/gdtTriggerParam.h b/src/KingSystem/GameData/gdtTriggerParam.h index c98b3b9d..4a86160a 100644 --- a/src/KingSystem/GameData/gdtTriggerParam.h +++ b/src/KingSystem/GameData/gdtTriggerParam.h @@ -383,6 +383,35 @@ public: // endregion + // region Flag + index getters + + FlagBool* getBoolFlagAndIdx(s32* idx, u32 name_hash) const; + FlagS32* getS32FlagAndIdx(s32* idx, u32 name_hash) const; + FlagF32* getF32FlagAndIdx(s32* idx, u32 name_hash) const; + FlagString* getStrFlagAndIdx(s32* idx, u32 name_hash) const; + FlagString64* getStr64FlagAndIdx(s32* idx, u32 name_hash) const; + FlagString256* getStr256FlagAndIdx(s32* idx, u32 name_hash) const; + FlagVector2f* getVec2fFlagAndIdx(s32* idx, u32 name_hash) const; + FlagVector3f* getVec3fFlagAndIdx(s32* idx, u32 name_hash) const; + FlagVector4f* getVec4fFlagAndIdx(s32* idx, u32 name_hash) const; + + // endregion + + // region Flag + index getters (array) + + FlagBool* getBoolFlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const; + FlagS32* getS32FlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const; + FlagF32* getF32FlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const; + FlagString* getStrFlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const; + FlagString64* getStr64FlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const; + FlagString256* getStr256FlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const; + FlagVector2f* getVec2fFlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const; + FlagVector3f* getVec3fFlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const; + FlagVector4f* getVec4fFlagAndIdx(s32* idx, u32 name_hash, s32 sub_idx) const; + + // endregion + + FlagS32* getS32FlagByHash(u32 name_hash) const; void onResetBoolFlagForRadarMgr(FlagBase* flag, s32 sub_idx = -1); private: