compare: run optional general turn lifecycle
This commit is contained in:
@@ -523,14 +523,34 @@ function comparisonRunTurnCommand(array $request): array
|
|||||||
$actorGeneralId = $request['actorGeneralId'] ?? null;
|
$actorGeneralId = $request['actorGeneralId'] ?? null;
|
||||||
$action = $request['action'] ?? null;
|
$action = $request['action'] ?? null;
|
||||||
$args = $request['args'] ?? null;
|
$args = $request['args'] ?? null;
|
||||||
|
$includeLifecycle = $request['includeLifecycle'] ?? false;
|
||||||
if (!is_int($actorGeneralId) || $actorGeneralId < 1) {
|
if (!is_int($actorGeneralId) || $actorGeneralId < 1) {
|
||||||
throw new \InvalidArgumentException('actorGeneralId must be a positive integer');
|
throw new \InvalidArgumentException('actorGeneralId must be a positive integer');
|
||||||
}
|
}
|
||||||
if (!is_string($action) || $action === '') {
|
if (!is_string($action) || $action === '') {
|
||||||
throw new \InvalidArgumentException('action must be a non-empty string');
|
throw new \InvalidArgumentException('action must be a non-empty string');
|
||||||
}
|
}
|
||||||
|
if (!is_bool($includeLifecycle)) {
|
||||||
|
throw new \InvalidArgumentException('includeLifecycle must be a boolean');
|
||||||
|
}
|
||||||
|
if ($includeLifecycle && $kind !== 'general') {
|
||||||
|
throw new \InvalidArgumentException('includeLifecycle currently supports general commands only');
|
||||||
|
}
|
||||||
|
|
||||||
comparisonApplyTurnFixtureSetup($request['setup'] ?? null);
|
comparisonApplyTurnFixtureSetup($request['setup'] ?? null);
|
||||||
|
if ($includeLifecycle) {
|
||||||
|
DB::db()->insertUpdate('general_turn', [
|
||||||
|
'general_id' => $actorGeneralId,
|
||||||
|
'turn_idx' => 0,
|
||||||
|
'action' => $action,
|
||||||
|
'arg' => Json::encode($args),
|
||||||
|
'brief' => $action,
|
||||||
|
], [
|
||||||
|
'action' => $action,
|
||||||
|
'arg' => Json::encode($args),
|
||||||
|
'brief' => $action,
|
||||||
|
]);
|
||||||
|
}
|
||||||
$snapshotRequest = ['observe' => $request['observe'] ?? []];
|
$snapshotRequest = ['observe' => $request['observe'] ?? []];
|
||||||
$before = comparisonTurnStateSnapshot($snapshotRequest);
|
$before = comparisonTurnStateSnapshot($snapshotRequest);
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
@@ -610,6 +630,16 @@ function comparisonRunTurnCommand(array $request): array
|
|||||||
$nationStor->setValue($lastNationTurnKey, $resultTurn->toRaw());
|
$nationStor->setValue($lastNationTurnKey, $resultTurn->toRaw());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($includeLifecycle) {
|
||||||
|
pullGeneralCommand($general->getID());
|
||||||
|
$general->increaseVarWithLimit(
|
||||||
|
'myset',
|
||||||
|
GameConst::$incDefSettingChange,
|
||||||
|
null,
|
||||||
|
GameConst::$maxDefSettingChange,
|
||||||
|
);
|
||||||
|
$turn->updateTurnTime();
|
||||||
|
}
|
||||||
$general->getLogger()->flush();
|
$general->getLogger()->flush();
|
||||||
$turn->applyDB();
|
$turn->applyDB();
|
||||||
unset($turn);
|
unset($turn);
|
||||||
|
|||||||
Reference in New Issue
Block a user