diff options
| author | Léo Lam <leo@leolam.fr> | 2021-03-26 00:45:25 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-03-26 00:48:51 +0100 |
| commit | a36463b339479c4f31c1650c144bcb9786ed9e06 (patch) | |
| tree | 95fae7e43bdc9b164d59dcced4aea2d39c663c31 /src/Game/AI/Query/queryCheckGameDataInt.cpp | |
| parent | 69fcdfbed7dbb65343d103c8dcbbe3ad3895a746 (diff) | |
query: Implement CheckGameDataInt
Diffstat (limited to 'src/Game/AI/Query/queryCheckGameDataInt.cpp')
| -rw-r--r-- | src/Game/AI/Query/queryCheckGameDataInt.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/Game/AI/Query/queryCheckGameDataInt.cpp b/src/Game/AI/Query/queryCheckGameDataInt.cpp index e7b4c8f5..080749a4 100644 --- a/src/Game/AI/Query/queryCheckGameDataInt.cpp +++ b/src/Game/AI/Query/queryCheckGameDataInt.cpp @@ -1,5 +1,6 @@ #include "Game/AI/Query/queryCheckGameDataInt.h" #include <evfl/query.h> +#include "KingSystem/GameData/gdtManager.h" namespace uking::query { @@ -7,9 +8,29 @@ CheckGameDataInt::CheckGameDataInt(const InitArg& arg) : ksys::act::ai::Query(ar CheckGameDataInt::~CheckGameDataInt() = default; -// FIXME: implement int CheckGameDataInt::doQuery() { - return -1; + int flag_value = 0; + const auto value = *mValue; + + auto* gdt = ksys::gdt::Manager::instance(); + if (!gdt || !gdt->getParamBypassPerm().get().getS32(&flag_value, mGameDataIntName)) + 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 CheckGameDataInt::loadParams(const evfl::QueryArg& arg) { |
