fix: 피장파장에서 모든 국가에(불가)가 나타나는 버그

This commit is contained in:
2022-06-15 22:34:32 +09:00
parent 03675349d8
commit d38ddcd79e
2 changed files with 59 additions and 39 deletions
+35 -20
View File
@@ -243,30 +243,14 @@ class che_피장파장 extends Command\NationCommand
{
$generalObj = $this->generalObj;
$nationID = $generalObj->getNationID();
$nationList = [];
$testTurn = new LastTurn($this->getName(), null, $this->getPreReqTurn());
foreach (getAllNationStaticInfo() as $destNation) {
$testCommand = new static($generalObj, $this->env, $testTurn, ['destNationID' => $destNation['nation']]);
$nationTarget = [
'id' => $destNation['nation'],
'name' => $destNation['name'],
'color' => $destNation['color'],
'power' => $destNation['power'],
];
if (!$testCommand->hasFullConditionMet()) {
$nationTarget['notAvailable'] = true;
}
if ($destNation['nation'] == $nationID) {
$nationTarget['notAvailable'] = true;
}
$nationList[] = $nationTarget;
}
$testTurn = new LastTurn($this->getName(), null, null);
$availableCommandTypeList = [];
$currYearMonth = Util::joinYearMonth($this->env['year'], $this->env['month']);
$oneAvailableCommandName = null;
foreach (GameConst::$availableChiefCommand['전략'] as $commandType) {
$cmd = buildNationCommandClass($commandType, $generalObj, $this->env, new LastTurn());
$cmdName = $cmd->getName();
@@ -276,9 +260,40 @@ class che_피장파장 extends Command\NationCommand
if ($nextAvailableTurn !== null && $currYearMonth < $nextAvailableTurn) {
$remainTurn = $nextAvailableTurn - $currYearMonth;
}
else{
$oneAvailableCommandName = $cmd->getRawClassName();
}
$availableCommandTypeList[$commandType] = ['name' => $cmdName, 'remainTurn' => $remainTurn];
}
$nationList = [];
foreach (getAllNationStaticInfo() as $destNation) {
$nationTarget = [
'id' => $destNation['nation'],
'name' => $destNation['name'],
'color' => $destNation['color'],
'power' => $destNation['power'],
];
if($oneAvailableCommandName === null){
$nationTarget['notAvailable'] = true;
}
else if ($destNation['nation'] == $nationID) {
$nationTarget['notAvailable'] = true;
}
else {
$testCommand = new static($generalObj, $this->env, $testTurn, [
'destNationID' => $destNation['nation'],
'commandType' => $oneAvailableCommandName
]);
if (!$testCommand->hasFullConditionMet()) {
$nationTarget['notAvailable'] = true;
}
}
$nationList[] = $nationTarget;
}
return [
'procRes' => [
'nationList' => $nationList,
+24 -19
View File
@@ -23,14 +23,31 @@
현재 피장파장이 불가능한 국가는
<span style="color: red">붉은색</span>으로 표시됩니다.<br />
</div>
<div class="row">
<div class="col-6 col-md-3">
<div class="row gx-3">
<div class="col-5 col-md-3">
국가 :
<SelectNation v-model="selectedNationID" :nations="nationList" :searchable="searchable" />
</div>
<div class="col-3 col-md-2">
<div class="col-4 col-md-2">
<label>전략 :</label>
<b-form-select v-model="selectedCommandID" :options="commandTypesOption" />
<select
v-model="selectedCommandID"
class="form-control"
:style="{
color: availableCommandTypeList[selectedCommandID].remainTurn > 0 ? 'red' : undefined,
}"
>
<option
v-for="(command, commandRawName) in availableCommandTypeList"
:key="commandRawName"
:value="commandRawName"
:style="{
color: command.remainTurn > 0 ? 'red' : 'black',
}"
>
{{ command.name }} {{ command.remainTurn > 0 ? `(불가, ${command.remainTurn}턴)` : "" }}
</option>
</select>
</div>
<div class="col-3 col-md-2 d-grid">
<b-button @click="submit">
@@ -56,7 +73,7 @@ declare const procRes: {
delayCnt: number;
postReqTurn: number;
availableCommandTypeList: Record<
number,
string,
{
name: string;
remainTurn: number;
@@ -98,7 +115,6 @@ void Promise.all([storeP]).then(() => {
asyncReady.value = true;
});
const nationList = new Map<number, procNationItem>();
for (const nationItem of procRes.nationList) {
nationList.set(nationItem.id, nationItem);
@@ -111,19 +127,8 @@ const map = ref<MapResult>();
const delayCnt = procRes.delayCnt;
const postReqTurn = procRes.postReqTurn;
const commandTypesOption: { html: string; value: string }[] = [];
for (const [commandTypeID, commandTypeInfo] of Object.entries(procRes.availableCommandTypeList)) {
const notAvailable = commandTypeInfo.remainTurn > 0;
const notAvailableText = notAvailable ? " (불가)" : "";
const name = `${commandTypeInfo.name}${notAvailableText}`;
const html = notAvailable ? `<span style='color:red;'>${name}</span>` : name;
commandTypesOption.push({
html,
value: commandTypeID,
});
}
const selectedCommandID = ref(Object.keys(procRes.availableCommandTypeList)[0]);
const availableCommandTypeList = procRes.availableCommandTypeList;
const selectedCommandID = ref(Object.keys(availableCommandTypeList)[0]);
async function submit(e: Event) {
const event = new CustomEvent<Args>("customSubmit", {