ksys/gdt: Implement flag+index getters

This commit is contained in:
Léo Lam 2020-10-29 00:33:23 +01:00
parent abf3276642
commit 2cd8eb111f
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
3 changed files with 181 additions and 19 deletions

View File

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

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

View File

@ -1526,6 +1526,76 @@ FlagVector4f* TriggerParam::getVec4fFlag(s32 idx) const {
return static_cast<FlagVector4f*>(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<FlagBool*>(mBoolArrayFlags[idx]->at(sub_idx));
}
@ -1562,6 +1632,69 @@ FlagVector4f* TriggerParam::getVec4fFlag(s32 idx, s32 sub_idx) const {
return static_cast<FlagVector4f*>(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<bool>(*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<s32>(*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<f32>(*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<sead::FixedSafeString<32>>(*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<sead::FixedSafeString<64>>(*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<sead::FixedSafeString<256>>(*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<sead::Vector2f>(*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<sead::Vector3f>(*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<sead::Vector4f>(*mVector4fArrayFlags[*idx], sub_idx);
}
void TriggerParam::onResetBoolFlagForRadarMgr(FlagBase* flag, s32 sub_idx) {
reportFlagChange<bool>(flag, sub_idx);
}

View File

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