summaryrefslogtreecommitdiff
path: root/src/Game/AI/Query/queryCountFlag4.cpp
blob: e3a163e3cc569d1085b10681d50c7fd544cd6196 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "Game/AI/Query/queryCountFlag4.h"
#include <evfl/Query.h>
#include "KingSystem/GameData/gdtManager.h"

namespace uking::query {

CountFlag4::CountFlag4(const InitArg& arg) : ksys::act::ai::Query(arg) {}

CountFlag4::~CountFlag4() = default;

int CountFlag4::doQuery() {
    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) {
    loadString(arg.param_accessor, "GameDataFlagNo0");
    loadString(arg.param_accessor, "GameDataFlagNo1");
    loadString(arg.param_accessor, "GameDataFlagNo2");
    loadString(arg.param_accessor, "GameDataFlagNo3");
    loadString(arg.param_accessor, "GameDataFlagNo4");
}

void CountFlag4::loadParams() {
    getDynamicParam(&mGameDataFlagNo0, "GameDataFlagNo0");
    getDynamicParam(&mGameDataFlagNo1, "GameDataFlagNo1");
    getDynamicParam(&mGameDataFlagNo2, "GameDataFlagNo2");
    getDynamicParam(&mGameDataFlagNo3, "GameDataFlagNo3");
    getDynamicParam(&mGameDataFlagNo4, "GameDataFlagNo4");
}

}  // namespace uking::query