diff options
| author | Léo Lam <leo@leolam.fr> | 2020-12-23 17:16:38 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2020-12-23 17:16:38 +0100 |
| commit | 2dd52d903b55b682d687e19cdbd5cf4601e98913 (patch) | |
| tree | 303b3eada3f971e6dd5caf5d48d1525a27ebad22 /src/Game/AI/Query/queryCheckGameDataFloat.cpp | |
| parent | edb2de168d3af4a4a990b65d13e49b71adfd3f43 (diff) | |
uking: Implement CheckGameDataFloat query
Diffstat (limited to 'src/Game/AI/Query/queryCheckGameDataFloat.cpp')
| -rw-r--r-- | src/Game/AI/Query/queryCheckGameDataFloat.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/Game/AI/Query/queryCheckGameDataFloat.cpp b/src/Game/AI/Query/queryCheckGameDataFloat.cpp index 7fbd3c47..2b26dd4f 100644 --- a/src/Game/AI/Query/queryCheckGameDataFloat.cpp +++ b/src/Game/AI/Query/queryCheckGameDataFloat.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCheckGameDataFloat.h" #include <evfl/query.h> +#include "KingSystem/GameData/gdtManager.h" namespace uking::query { @@ -7,9 +8,29 @@ CheckGameDataFloat::CheckGameDataFloat(const InitArg& arg) : ksys::act::ai::Quer CheckGameDataFloat::~CheckGameDataFloat() = default; -// FIXME: implement int CheckGameDataFloat::doQuery() { - return -1; + float flag_value = 0.0; + const auto value = *mValue; + + auto* gdt = ksys::gdt::Manager::instance(); + if (!gdt || !gdt->getParamBypassPerm().get().getF32(&flag_value, mGameDataFloatName)) + return 0; + + sead::FixedSafeString<32> op = mOperator; + if (op == "Equal") + return value == flag_value; + if (op == "NotEqual") + return value != flag_value; + if (op == "GreaterThan") + return value < flag_value; + if (op == "GreaterThanOrEqualTo") + return value <= flag_value; + if (op == "LessThan") + return value > flag_value; + if (op == "LessThanOrEqualTo") + return value >= flag_value; + + return 0; } void CheckGameDataFloat::loadParams(const evfl::QueryArg& arg) { |
