refac: 장수 목록에서 부대장 턴 간이 출력
This commit is contained in:
@@ -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,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user