query: Implement CompareGameDataTime

This commit is contained in:
Léo Lam 2021-03-26 01:54:16 +01:00
parent ce3d29d2ec
commit bc8b8d5829
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
3 changed files with 36 additions and 3 deletions

View File

@ -199,7 +199,7 @@ query::CompareGameDataFloat:
query::CompareGameDataInt:
status: done
query::CompareGameDataTime:
status: pending
status: done
query::ComparePlayerFireResistantLevel:
status: pending
query::ComparePlayerHeart:

View File

@ -41247,7 +41247,7 @@
0x0000007100698430,AI_Query_CompareGameDataTime::ctor,92,_ZN5uking5query19CompareGameDataTimeC1ERKN4ksys3act2ai5Query7InitArgE
0x000000710069848c,AI_Query_CompareGameDataTime::dtor,20,_ZN5uking5query19CompareGameDataTimeD1Ev
0x00000071006984a0,AI_Query_CompareGameDataTime::dtorDelete,52,_ZN5uking5query19CompareGameDataTimeD0Ev
0x00000071006984d4,AI_Query_CompareGameDataTime::doQuery,336,
0x00000071006984d4,AI_Query_CompareGameDataTime::doQuery,336,_ZN5uking5query19CompareGameDataTime7doQueryEv
0x0000007100698624,AI_Query_CompareGameDataTime::m10,224,_ZN5uking5query19CompareGameDataTime10loadParamsERKN4evfl8QueryArgE
0x0000007100698704,AI_Query_CompareGameDataTime::loadParams,212,_ZN5uking5query19CompareGameDataTime10loadParamsEv
0x00000071006987d8,AI_Query_CompareGameDataTime::rtti1,204,_ZNK5uking5query19CompareGameDataTime27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE

Can't render this file because it is too large.

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;
}