summaryrefslogtreecommitdiff
path: root/src/KingSystem/Event/evtOrderParam.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2021-02-04 18:56:20 +0100
committerLéo Lam <leo@leolam.fr>2021-02-07 15:45:09 +0100
commit9c6bec732fa433121c7cbda227ed536af0a9cb91 (patch)
treec4f0cca1357c28b289e253a837de247a5a8a3c7e /src/KingSystem/Event/evtOrderParam.cpp
parent85430d323270b83aff1e91837cd716733adce002 (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.cpp22
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