merge: 최신 사령부 변경을 인게임 폰트 통일에 반영
This commit is contained in:
@@ -685,7 +685,9 @@ const clickOutsideMenu = (event: Event) => {
|
||||
class="command-picker"
|
||||
:class="{ 'recruitment-picker': isRecruitmentCommand }"
|
||||
data-testid="command-picker"
|
||||
:style="isRecruitmentCommand || props.compact ? undefined : { top: quickPickerTop }"
|
||||
:style="
|
||||
isRecruitmentCommand || quickTarget === null || props.compact ? undefined : { top: quickPickerTop }
|
||||
"
|
||||
:role="isRecruitmentCommand ? 'dialog' : undefined"
|
||||
:aria-modal="isRecruitmentCommand ? 'true' : undefined"
|
||||
:aria-label="
|
||||
@@ -1146,12 +1148,15 @@ const clickOutsideMenu = (event: Event) => {
|
||||
}
|
||||
|
||||
.mobile.compact .editor-layout {
|
||||
height: 360px;
|
||||
min-height: 370px;
|
||||
display: grid;
|
||||
grid-template-columns: 109px 391px;
|
||||
grid-template-rows: auto auto;
|
||||
}
|
||||
.mobile.compact .control-pad {
|
||||
order: initial;
|
||||
grid-column: 1;
|
||||
grid-row: 1 / -1;
|
||||
min-height: 0;
|
||||
padding: 0;
|
||||
grid-template-columns: 1fr;
|
||||
@@ -1159,6 +1164,8 @@ const clickOutsideMenu = (event: Event) => {
|
||||
}
|
||||
.mobile.compact .queue-area {
|
||||
order: initial;
|
||||
grid-column: 2;
|
||||
grid-row: 1;
|
||||
padding-top: 10px;
|
||||
}
|
||||
.mobile.compact .queue-grid {
|
||||
@@ -1189,8 +1196,8 @@ const clickOutsideMenu = (event: Event) => {
|
||||
overflow: visible;
|
||||
}
|
||||
.mobile.compact .advanced-actions {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 109px;
|
||||
position: static;
|
||||
grid-column: 2;
|
||||
grid-row: 2;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -75,7 +75,10 @@ export const formatReservedCommandBrief = (
|
||||
const commandName = commandNames.get(action) ?? defaultCommandName(action);
|
||||
const cityName = optionLabel(input?.cities ?? [], firstValue(args, ['destCityId', 'destCityID']));
|
||||
const nationName = optionLabel(input?.nations ?? [], firstValue(args, ['destNationId', 'destNationID']));
|
||||
const generalName = optionLabel(input?.generals ?? [], firstValue(args, ['destGeneralId', 'destGeneralID']));
|
||||
const generalName = optionLabel(
|
||||
input?.generalTargets?.[action] ?? input?.generals ?? [],
|
||||
firstValue(args, ['destGeneralId', 'destGeneralID'])
|
||||
);
|
||||
|
||||
if (CITY_TO_COMMANDS.has(action) && cityName) {
|
||||
return `${wrappedWithParticle(cityName, '으로')} ${commandName}`;
|
||||
|
||||
@@ -95,6 +95,7 @@ export type CommandTable = {
|
||||
cities: CommandOption[];
|
||||
nations: CommandOption[];
|
||||
generals: CommandOption[];
|
||||
generalTargets?: Record<string, CommandOption[]>;
|
||||
crewTypes: CommandOption[];
|
||||
armTypes: CommandOption[];
|
||||
nationTypes: CommandOption[];
|
||||
|
||||
@@ -33,6 +33,9 @@ const visibleFields = computed(() => props.fields.filter((entry) => entry.kind !
|
||||
const optionsFor = (field: CommandInputField): CommandOption[] => {
|
||||
if (field.options) return field.options;
|
||||
if (!field.optionSource) return [];
|
||||
if (field.optionSource === 'generals') {
|
||||
return props.options.generalTargets?.[props.commandKey] ?? props.options.generals;
|
||||
}
|
||||
if (field.optionSource === 'items') {
|
||||
return props.options.items[String(values.itemType ?? '')] ?? [];
|
||||
}
|
||||
|
||||
@@ -352,22 +352,34 @@ const repeatTurns = async (amount: number) => {
|
||||
</div>
|
||||
<div class="chief-overview-frame">
|
||||
<div class="chief-overview">
|
||||
<template v-for="chief in chiefViews" :key="chief.officerLevel">
|
||||
<ChiefTurnCard
|
||||
v-if="chief.name"
|
||||
:officer-level-text="chief.officerLevelText"
|
||||
:name="chief.name"
|
||||
:npc-state="chief.npcState"
|
||||
:rows="chief.rows"
|
||||
:compact="true"
|
||||
:selected="chief.officerLevel === selectedChief?.officerLevel"
|
||||
:is-me="chief.officerLevel === data.me.officerLevel"
|
||||
:clickable="true"
|
||||
:turn-time-label="chief.rows[0]?.time"
|
||||
@select="selectedChiefLevel = chief.officerLevel"
|
||||
/>
|
||||
<div v-else class="empty-chief-slot" aria-hidden="true"></div>
|
||||
</template>
|
||||
<div
|
||||
v-for="(rowChiefs, rowIndex) in [chiefViews.slice(0, 4), chiefViews.slice(4, 8)]"
|
||||
:key="rowIndex"
|
||||
class="chief-overview-row"
|
||||
>
|
||||
<div class="overview-turn-index legacy-bg0" :aria-label="`${rowIndex + 1}행 턴 번호`">
|
||||
<span></span><span v-for="idx in data.maxTurns" :key="idx">{{ idx }}</span>
|
||||
</div>
|
||||
<template v-for="chief in rowChiefs" :key="chief.officerLevel">
|
||||
<ChiefTurnCard
|
||||
v-if="chief.name"
|
||||
:officer-level-text="chief.officerLevelText"
|
||||
:name="chief.name"
|
||||
:npc-state="chief.npcState"
|
||||
:rows="chief.rows"
|
||||
:compact="true"
|
||||
:selected="chief.officerLevel === selectedChief?.officerLevel"
|
||||
:is-me="chief.officerLevel === data.me.officerLevel"
|
||||
:clickable="true"
|
||||
:turn-time-label="chief.rows[0]?.time"
|
||||
@select="selectedChiefLevel = chief.officerLevel"
|
||||
/>
|
||||
<div v-else class="empty-chief-slot" aria-hidden="true"></div>
|
||||
</template>
|
||||
<div class="overview-turn-index legacy-bg0" :aria-label="`${rowIndex + 1}행 턴 번호`">
|
||||
<span></span><span v-for="idx in data.maxTurns" :key="idx">{{ idx }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -750,20 +762,25 @@ const repeatTurns = async (amount: number) => {
|
||||
.chief-overview-frame {
|
||||
width: 500px;
|
||||
height: 310px;
|
||||
margin-top: -3px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 11px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.chief-overview {
|
||||
width: 445px;
|
||||
width: 500px;
|
||||
height: 310px;
|
||||
margin-top: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.chief-overview-row {
|
||||
width: 500px;
|
||||
height: 155px;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 111.25px);
|
||||
grid-auto-rows: 155px;
|
||||
grid-template-columns: 12px repeat(4, 119px) 12px;
|
||||
}
|
||||
.chief-overview :deep(.chief-card) {
|
||||
width: 111.25px;
|
||||
width: 119px;
|
||||
height: 155px;
|
||||
border: 0;
|
||||
border-left: 1px solid #fff;
|
||||
@@ -787,13 +804,34 @@ const repeatTurns = async (amount: number) => {
|
||||
box-sizing: border-box;
|
||||
height: 20px !important;
|
||||
min-height: 20px !important;
|
||||
grid-template-rows: none;
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-rows: 10px 10px;
|
||||
line-height: 10px;
|
||||
}
|
||||
.chief-overview :deep(.compact-name),
|
||||
.chief-overview :deep(.compact-meta) {
|
||||
height: 10px;
|
||||
line-height: 10px;
|
||||
}
|
||||
.chief-overview :deep(.row-time),
|
||||
.chief-overview :deep(.row-action) {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
}
|
||||
.overview-turn-index {
|
||||
display: grid;
|
||||
grid-template-rows: 20px repeat(12, 11.25px);
|
||||
width: 12px;
|
||||
height: 155px;
|
||||
color: #fff;
|
||||
font-size: 0.55rem;
|
||||
line-height: 11.25px;
|
||||
text-align: center;
|
||||
}
|
||||
.overview-turn-index span {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
}
|
||||
.mobile-readonly {
|
||||
width: 404px;
|
||||
height: 420px;
|
||||
@@ -879,7 +917,7 @@ const repeatTurns = async (amount: number) => {
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
.chief-overview {
|
||||
grid-template-columns: repeat(4, 111.25px);
|
||||
width: 500px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -891,8 +929,8 @@ const repeatTurns = async (amount: number) => {
|
||||
.chief-grid-row > .empty-chief-slot {
|
||||
height: 384px;
|
||||
}
|
||||
.chief-overview > .empty-chief-slot {
|
||||
width: 111.25px;
|
||||
.chief-overview-row > .empty-chief-slot {
|
||||
width: 119px;
|
||||
height: 155px;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user