refac: 장수 목록에서 부대장 턴 간이 출력

This commit is contained in:
2022-07-27 15:15:42 +09:00
parent c962039aaf
commit 6a5cb950da
2 changed files with 64 additions and 40 deletions
+61 -37
View File
@@ -2,6 +2,7 @@
namespace sammo\API\Nation;
use ArrayObject;
use sammo\DB;
use sammo\General;
use sammo\Session;
@@ -158,35 +159,59 @@ class GeneralList extends \sammo\BaseAPI
$rawGeneralList = Util::convertArrayToDict($db->query('SELECT %l from general WHERE nation = %i ORDER BY turntime ASC', Util::formatListOfBackticks($queryColumns), $nationID), 'no');
/** @var ArrayObject[] */
$troops = [];
foreach ($db->queryAllLists('SELECT troop_leader,name FROM troop WHERE nation = %i', $nationID) as [$troopLeaderID, $troopName]) {
if (!key_exists($troopLeaderID, $rawGeneralList)) {
continue;
}
$troopTurnTime = $rawGeneralList[$troopLeaderID]['turntime'];
$troops[$troopLeaderID] = new ArrayObject([
'id' => $troopLeaderID,
'name' => $troopName,
'turntime' => $troopTurnTime,
'reservedCommand' => [],
]);
}
$reservedCommand = [];
if ($this->permission >= 1) {
$nonNPCGeneralIDList = [];
foreach ($rawGeneralList as $rawGeneral) {
if ($rawGeneral['npc'] < 2) {
$nonNPCGeneralIDList[] = $rawGeneral['no'];
if ($this->permission >= 1 || count($troops)) {
$reservedCommandTargetGeneralIDList = [];
if($this->permission >= 1){
foreach ($rawGeneralList as $rawGeneral) {
if ($rawGeneral['npc'] < 2) {
$reservedCommandTargetGeneralIDList[$rawGeneral['no']] = $rawGeneral['no'];
}
}
}
foreach($troops as $troop){
$reservedCommandTargetGeneralIDList[$troop['id']] = $troop['id'];
}
$rawTurnList = $db->query(
'SELECT general_id, turn_idx, action, arg, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id asc, turn_idx asc',
$nonNPCGeneralIDList
);
foreach ($rawTurnList as $rawTurn) {
[
'general_id' => $generalID,
'action' => $action,
'arg' => $arg,
'brief' => $brief,
] = $rawTurn;
if (!key_exists($generalID, $reservedCommand)) {
$reservedCommand[$generalID] = [];
if($reservedCommandTargetGeneralIDList){
$rawTurnList = $db->query(
'SELECT general_id, turn_idx, action, arg, brief FROM general_turn WHERE general_id IN %li AND turn_idx < 5 ORDER BY general_id asc, turn_idx asc',
array_values($reservedCommandTargetGeneralIDList)
);
foreach ($rawTurnList as $rawTurn) {
[
'general_id' => $generalID,
'action' => $action,
'arg' => $arg,
'brief' => $brief,
] = $rawTurn;
if (!key_exists($generalID, $reservedCommand)) {
$reservedCommand[$generalID] = [];
}
$reservedCommand[$generalID][] = [
'action' => $action,
'arg' => $arg,
'brief' => $brief
];
}
$reservedCommand[$generalID][] = [
'action' => $action,
'arg' => $arg,
'brief' => $brief
];
}
}
@@ -252,6 +277,17 @@ class GeneralList extends \sammo\BaseAPI
$resultColumns[$column] = $column;
}
foreach ($troops as $troop){
$troopLeaderID = $troop['id'];
$troop['reservedCommand'] = array_map(function($turnObj){
$brief = $turnObj['brief'];
if($brief == '집합'){
return $brief;
}
return '-';
}, $specialViewFilter['reservedCommand']($rawGeneralList[$troopLeaderID]));
}
$generalList = [];
foreach ($rawGeneralList as $rawGeneral) {
//General 생성?
@@ -272,24 +308,12 @@ class GeneralList extends \sammo\BaseAPI
$generalList[] = $item;
}
$troops = [];
foreach ($db->queryAllLists('SELECT troop_leader,name FROM troop WHERE nation = %i', $nationID) as [$troopLeaderID, $troopName]) {
if (!key_exists($troopLeaderID, $rawGeneralList)) {
continue;
}
$troopTurnTime = $rawGeneralList[$troopLeaderID]['turntime'];
$troops[] = [
'id' => $troopLeaderID,
'name' => $troopName,
'turntime' => $troopTurnTime
];
}
$result = [
'result' => true,
'permission' => $this->permission,
'column' => array_keys($resultColumns),
'list' => $generalList,
'troops' => $troops,
'troops' => array_values($troops),
'env' => $env,
];
+3 -3
View File
@@ -107,7 +107,7 @@ export type RawGeneralListP0 = ValidResponse & {
permission: 0,
column: (keyof GeneralListItemP0)[],
list: ValuesOf<GeneralListItemP0>[][],
troops: {id: number, name: string, turntime: string}[],
troops: {id: number, name: string, turntime: string, reservedCommand: string[]}[],
env: ResponseEnv,
}
@@ -115,7 +115,7 @@ export type RawGeneralListP1 = ValidResponse & {
permission: 1,
column: (keyof GeneralListItemP1)[],
list: ValuesOf<GeneralListItemP1>[][],
troops: {id: number, name: string, turntime: string}[],
troops: {id: number, name: string, turntime: string, reservedCommand: string[]}[],
env: ResponseEnv,
}
@@ -123,7 +123,7 @@ export type RawGeneralListP2 = ValidResponse & {
permission: 2 | 3 | 4,
column: (keyof GeneralListItemP2)[],
list: ValuesOf<GeneralListItemP2>[][],
troops: {id: number, name: string, turntime: string}[],
troops: {id: number, name: string, turntime: string, reservedCommand: string[]}[],
env: ResponseEnv,
}