refac: ExecuteEngine 반환 타입 변경

This commit is contained in:
2022-08-30 22:51:14 +09:00
parent 8cb2e2a447
commit 006ca76922
4 changed files with 50 additions and 11 deletions
+16 -1
View File
@@ -3,8 +3,10 @@
namespace sammo\API\Global;
use sammo\Session;
use sammo\DB;
use DateTimeInterface;
use sammo\TurnExecutionHelper;
use sammo\UniqueConst;
class ExecuteEngine extends \sammo\BaseAPI
{
@@ -20,10 +22,23 @@ class ExecuteEngine extends \sammo\BaseAPI
public function launch(Session $session, ?DateTimeInterface $modifiedSince, ?string $reqEtag)
{
$updated = TurnExecutionHelper::executeAllCommand();
$reqServerID = $this->args['serverID'] ?? null;
if($reqServerID && $reqServerID !== UniqueConst::$serverID){
return [
'result' => false,
'reason' => '서버 아이디가 다릅니다',
'reqRefresh' => true,
];
}
$updated = false;
$locked = false;
$lastExecuted = TurnExecutionHelper::executeAllCommand($updated, $locked);
return [
'result' => true,
'updated' => $updated,
'locked' => $locked,
'lastExecuted' => $lastExecuted,
];
}
}
+21 -9
View File
@@ -353,26 +353,26 @@ class TurnExecutionHelper
return [false, $currentTurn];
}
static public function executeAllCommand(): bool
static public function executeAllCommand(&$executed = false, &$locked = false): string
{
//if(!timeover()) { return; }
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
if (TimeUtil::now(true) < $gameStor->turntime) {
//턴 시각 이전이면 아무것도 하지 않음
return false;
return $gameStor->turntime;
}
if (!tryLock()) {
return false;
$locked = true;
return $gameStor->turntime;
}
if ($gameStor->isunited == 2 || $gameStor->isunited == 3) {
//천통시에는 동결
return false;
$locked = true;
return $gameStor->turntime;
}
$gameStor->cacheAll();
@@ -414,10 +414,14 @@ class TurnExecutionHelper
if ($executionOver) {
if ($currentTurn !== null) {
$executed = true;
$gameStor->turntime = $currentTurn;
}
unlock();
return $currentTurn !== null && $lastExecuted !== $currentTurn;
if($lastExecuted !== $currentTurn){
$executed = true;
}
return $gameStor->turntime;
}
$monthlyRng = new RandUtil(new LiteHashDRBG(Util::simpleSerialize(
@@ -505,6 +509,7 @@ class TurnExecutionHelper
);
if ($currentTurn !== null) {
$executed = true;
$gameStor->turntime = $currentTurn;
}
@@ -512,10 +517,17 @@ class TurnExecutionHelper
processTournament();
//거래 처리
processAuction();
// 금 해제
// 금 해제
$turntime = $gameStor->turntime;
$gameStor->resetCache();
unlock();
return $currentTurn !== null && $lastExecuted !== $currentTurn;
if($lastExecuted !== $currentTurn){
$executed = true;
}
return $turntime;
}
}
+6 -1
View File
@@ -22,6 +22,7 @@ import type { SetBlockWarResponse, GeneralListResponse as NationGeneralListRespo
import type { UploadImageResponse } from "./defs/API/Misc";
import type { GeneralLogType, GetGeneralLogResponse, JoinArgs } from "./defs/API/General";
import type {
ExecuteResponse,
GetConstResponse,
GetCurrentHistoryResponse,
GetDiplomacyResponse,
@@ -144,7 +145,11 @@ const apiRealPath = {
>,
GetCachedMap: GET as APICallT<undefined, CachedMapResult>,
GetDiplomacy: GET as APICallT<undefined, GetDiplomacyResponse>,
ExecuteEngine: POST as APICallT<undefined, ValidResponse & { updated: boolean }>,
ExecuteEngine: POST as APICallT<{
serverID: string | undefined
}, ExecuteResponse, InvalidResponse & {
reqRefresh?: boolean
}>,
GetRecentRecord: GET as APICallT<{
lastGeneralRecordID: number;
lastWorldHistoryID: number;
+7
View File
@@ -78,6 +78,13 @@ export type GetDiplomacyResponse = {
myNationID: number;
}
export type ExecuteResponse = {
result: true;
updated: boolean;
locked: boolean;
lastExecuted: string;
};
export type GetRecentRecordResponse = {
result: true;
history: [number, string][];