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; namespace sammo\API\Nation;
use ArrayObject;
use sammo\DB; use sammo\DB;
use sammo\General; use sammo\General;
use sammo\Session; 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'); $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 = []; $reservedCommand = [];
if ($this->permission >= 1) { if ($this->permission >= 1 || count($troops)) {
$nonNPCGeneralIDList = []; $reservedCommandTargetGeneralIDList = [];
foreach ($rawGeneralList as $rawGeneral) {
if ($rawGeneral['npc'] < 2) { if($this->permission >= 1){
$nonNPCGeneralIDList[] = $rawGeneral['no']; 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( if($reservedCommandTargetGeneralIDList){
'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', $rawTurnList = $db->query(
$nonNPCGeneralIDList '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) {
[ foreach ($rawTurnList as $rawTurn) {
'general_id' => $generalID, [
'action' => $action, 'general_id' => $generalID,
'arg' => $arg, 'action' => $action,
'brief' => $brief, 'arg' => $arg,
] = $rawTurn; 'brief' => $brief,
if (!key_exists($generalID, $reservedCommand)) { ] = $rawTurn;
$reservedCommand[$generalID] = []; 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; $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 = []; $generalList = [];
foreach ($rawGeneralList as $rawGeneral) { foreach ($rawGeneralList as $rawGeneral) {
//General 생성? //General 생성?
@@ -272,24 +308,12 @@ class GeneralList extends \sammo\BaseAPI
$generalList[] = $item; $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 = [
'result' => true, 'result' => true,
'permission' => $this->permission, 'permission' => $this->permission,
'column' => array_keys($resultColumns), 'column' => array_keys($resultColumns),
'list' => $generalList, 'list' => $generalList,
'troops' => $troops, 'troops' => array_values($troops),
'env' => $env, 'env' => $env,
]; ];
+3 -3
View File
@@ -107,7 +107,7 @@ export type RawGeneralListP0 = ValidResponse & {
permission: 0, permission: 0,
column: (keyof GeneralListItemP0)[], column: (keyof GeneralListItemP0)[],
list: ValuesOf<GeneralListItemP0>[][], list: ValuesOf<GeneralListItemP0>[][],
troops: {id: number, name: string, turntime: string}[], troops: {id: number, name: string, turntime: string, reservedCommand: string[]}[],
env: ResponseEnv, env: ResponseEnv,
} }
@@ -115,7 +115,7 @@ export type RawGeneralListP1 = ValidResponse & {
permission: 1, permission: 1,
column: (keyof GeneralListItemP1)[], column: (keyof GeneralListItemP1)[],
list: ValuesOf<GeneralListItemP1>[][], list: ValuesOf<GeneralListItemP1>[][],
troops: {id: number, name: string, turntime: string}[], troops: {id: number, name: string, turntime: string, reservedCommand: string[]}[],
env: ResponseEnv, env: ResponseEnv,
} }
@@ -123,7 +123,7 @@ export type RawGeneralListP2 = ValidResponse & {
permission: 2 | 3 | 4, permission: 2 | 3 | 4,
column: (keyof GeneralListItemP2)[], column: (keyof GeneralListItemP2)[],
list: ValuesOf<GeneralListItemP2>[][], list: ValuesOf<GeneralListItemP2>[][],
troops: {id: number, name: string, turntime: string}[], troops: {id: number, name: string, turntime: string, reservedCommand: string[]}[],
env: ResponseEnv, env: ResponseEnv,
} }