query: Implement CompareGameDataTime

This commit is contained in:
Léo Lam
2021-03-26 01:54:16 +01:00
parent ce3d29d2ec
commit bc8b8d5829
3 changed files with 36 additions and 3 deletions
+34 -1
View File
@@ -1,5 +1,6 @@
#include "Game/AI/Query/queryCompareGameDataTime.h"
#include <evfl/query.h>
#include "KingSystem/GameData/gdtManager.h"
namespace uking::query {
@@ -7,8 +8,40 @@ CompareGameDataTime::CompareGameDataTime(const InitArg& arg) : ksys::act::ai::Qu
CompareGameDataTime::~CompareGameDataTime() = default;
// FIXME: implement
int CompareGameDataTime::doQuery() {
int min_a{};
int sec_a{};
int milli_a{};
int min_b{};
int sec_b{};
int milli_b{};
auto* gdt = ksys::gdt::Manager::instance();
if (!gdt)
return 0;
if (!gdt->getParamBypassPerm().get().getS32(&min_a, mGameDataIntMinA))
return 0;
if (!gdt->getParamBypassPerm().get().getS32(&sec_a, mGameDataIntSecA))
return 0;
if (!gdt->getParamBypassPerm().get().getS32(&milli_a, mGameDataIntMilliA))
return 0;
if (!gdt->getParamBypassPerm().get().getS32(&min_b, mGameDataIntMinB))
return 0;
if (!gdt->getParamBypassPerm().get().getS32(&sec_b, mGameDataIntSecB))
return 0;
if (!gdt->getParamBypassPerm().get().getS32(&milli_b, mGameDataIntMilliB))
return 0;
const int time_a = (60 * 1000 * min_a) + (1000 * sec_a) + milli_a;
const int time_b = (60 * 1000 * min_b) + (1000 * sec_b) + milli_b;
if (time_a < time_b)
return 0;
if (time_a == time_b)
return 1;
if (time_a != time_b)
return 2;
SEAD_ASSERT(false);
return -1;
}