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