diff options
| author | Léo Lam <leo@leolam.fr> | 2021-02-04 18:56:20 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-02-07 15:45:09 +0100 |
| commit | 9c6bec732fa433121c7cbda227ed536af0a9cb91 (patch) | |
| tree | c4f0cca1357c28b289e253a837de247a5a8a3c7e /src/KingSystem/Event/evtOrderParam.cpp | |
| parent | 85430d323270b83aff1e91837cd716733adce002 (diff) | |
ksys/evt: Match OrderParam "get T by name" getters
Diffstat (limited to 'src/KingSystem/Event/evtOrderParam.cpp')
| -rw-r--r-- | src/KingSystem/Event/evtOrderParam.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/KingSystem/Event/evtOrderParam.cpp b/src/KingSystem/Event/evtOrderParam.cpp index cbf71639..918fca06 100644 --- a/src/KingSystem/Event/evtOrderParam.cpp +++ b/src/KingSystem/Event/evtOrderParam.cpp @@ -91,18 +91,17 @@ void OrderParam::addParamActor(ksys::act::BaseProc& actor, sead::SafeString& nam } } } -// The three below have 1 pair of instructions swapped bool OrderParam::getIntByName(const sead::SafeString& name, u32** out_ptr) { - return tryGetPointerByName(name, (void**)out_ptr, nullptr, OrderParamType::INT); + return getPointerByName(name, out_ptr, nullptr, OrderParamType::INT); } bool OrderParam::getStringByName(const sead::SafeString& name, sead::SafeString** out_ptr) { - return tryGetPointerByName(name, (void**)out_ptr, nullptr, OrderParamType::STRING); + return getPointerByName(name, out_ptr, nullptr, OrderParamType::STRING); } bool OrderParam::getArrayByName(const sead::SafeString& name, void** out_ptr, u32* out_size) { - return tryGetPointerByName(name, out_ptr, out_size, OrderParamType::ARRAY); + return getPointerByName(name, out_ptr, out_size, OrderParamType::ARRAY); } // This one also does not match @@ -170,4 +169,17 @@ OrderParamEntry* OrderParam::tryAlloc(OrderParamType type, u32 size, sead::SafeS return nullptr; } -} // namespace ksys::evt
\ No newline at end of file +void* OrderParam::getPointerByName(const sead::SafeString& name, u32* out_size, + OrderParamType type) const { + const u32 hash = sead::HashCRC32::calcStringHash(name); + for (s32 i = 0; i < mEntries.size(); i++) { + if (mEntries[i].mHash == hash && mEntries[i].mType == type) { + if (out_size) + *out_size = mEntries[i].mSize; + return mEntries[i].mPointer; + } + } + return nullptr; +} + +} // namespace ksys::evt |
