From 9c6bec732fa433121c7cbda227ed536af0a9cb91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Thu, 4 Feb 2021 18:56:20 +0100 Subject: ksys/evt: Match OrderParam "get T by name" getters --- src/KingSystem/Event/evtOrderParam.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'src/KingSystem/Event/evtOrderParam.cpp') 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 -- cgit v1.2.3