summaryrefslogtreecommitdiff
path: root/src/Game/AI/Query/queryCountFlag4.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Game/AI/Query/queryCountFlag4.cpp')
-rw-r--r--src/Game/AI/Query/queryCountFlag4.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/Game/AI/Query/queryCountFlag4.cpp b/src/Game/AI/Query/queryCountFlag4.cpp
index 0b7210b4..e3a163e3 100644
--- a/src/Game/AI/Query/queryCountFlag4.cpp
+++ b/src/Game/AI/Query/queryCountFlag4.cpp
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryCountFlag4.h"
#include <evfl/Query.h>
+#include "KingSystem/GameData/gdtManager.h"
namespace uking::query {
@@ -7,9 +8,30 @@ CountFlag4::CountFlag4(const InitArg& arg) : ksys::act::ai::Query(arg) {}
CountFlag4::~CountFlag4() = default;
-// FIXME: implement
int CountFlag4::doQuery() {
- return -1;
+ auto* gdm = ksys::gdt::Manager::instance();
+ if (gdm == nullptr)
+ return 0;
+
+ bool x = false;
+ int result = 0;
+
+ auto isOn = [&](const sead::SafeString& s) {
+ return gdm->getParamBypassPerm().get().getBool(&x, s) && x;
+ };
+
+ if (!mGameDataFlagNo0.isEmpty())
+ result += isOn(mGameDataFlagNo0);
+ if (!mGameDataFlagNo1.isEmpty())
+ result += isOn(mGameDataFlagNo1);
+ if (!mGameDataFlagNo2.isEmpty())
+ result += isOn(mGameDataFlagNo2);
+ if (!mGameDataFlagNo3.isEmpty())
+ result += isOn(mGameDataFlagNo3);
+ if (!mGameDataFlagNo4.isEmpty())
+ result += isOn(mGameDataFlagNo4);
+
+ return result;
}
void CountFlag4::loadParams(const evfl::QueryArg& arg) {