Improve sortie prep readability
This commit is contained in:
@@ -250,6 +250,7 @@ type SortiePlanSummary = {
|
||||
reserveTrainingBondPreview: number;
|
||||
objectiveLine: string;
|
||||
formationSlots: SortieFormationSlot[];
|
||||
warningLine: string;
|
||||
warnings: string[];
|
||||
};
|
||||
|
||||
@@ -11500,18 +11501,20 @@ export class CampScene extends Phaser.Scene {
|
||||
this.add.text(x + width - 18, y + 17, `${plan.selectedCount}/${plan.maxCount}명 · 지형 ${plan.terrainGrade}`, this.textStyle(12, '#d8b15f', true))
|
||||
).setOrigin(1, 0).setDepth(depth + 1);
|
||||
|
||||
this.renderSortieDeploymentMap(x + 18, y + 46, width - 36, 84, depth + 1);
|
||||
this.renderSortieRoleSlots(x + 18, y + 136, width - 36, 48, plan, depth + 1);
|
||||
this.renderSortieDeploymentMap(x + 18, y + 46, width - 36, 76, depth + 1);
|
||||
this.trackSortie(this.add.text(x + 18, y + 128, '선택 무장 역할 지정', this.textStyle(11, '#d8b15f', true))).setDepth(depth + 1);
|
||||
this.trackSortie(this.add.text(x + width - 18, y + 128, '슬롯 클릭으로 변경', this.textStyle(10, '#9fb0bf', true))).setOrigin(1, 0).setDepth(depth + 1);
|
||||
this.renderSortieRoleSlots(x + 18, y + 143, width - 36, 48, plan, depth + 1);
|
||||
this.trackSortie(
|
||||
this.add.text(
|
||||
x + 18,
|
||||
y + 190,
|
||||
this.compactText(`${plan.recommendationLine} · 공명 ${plan.activeBondCount}개 · ${plan.objectiveLine}`, 44),
|
||||
this.textStyle(11, '#d4dce6', true)
|
||||
y + 196,
|
||||
this.compactText(plan.warningLine, 42),
|
||||
this.textStyle(11, plan.warnings.length > 0 ? '#ffdf7b' : '#a8ffd0', true)
|
||||
)
|
||||
).setDepth(depth + 1);
|
||||
|
||||
this.renderSortieFocusPanel(x + 18, y + 204, width - 36, 74, depth + 1);
|
||||
this.renderSortieFocusPanel(x + 18, y + 210, width - 36, 68, depth + 1);
|
||||
}
|
||||
|
||||
private renderSortieRoleSlots(x: number, y: number, width: number, height: number, plan: SortiePlanSummary, depth: number) {
|
||||
@@ -11541,9 +11544,9 @@ export class CampScene extends Phaser.Scene {
|
||||
bg.on('pointerout', () => {
|
||||
bg.setFillStyle(filled ? 0x172a22 : 0x111922, filled ? 0.94 : 0.78);
|
||||
});
|
||||
this.renderSortieBattleUiIcon(this.formationRoleIconKey(slot.role), slotX + 13, slotY + slotHeight / 2, 18, depth + 1, filled ? 0.95 : 0.5);
|
||||
this.trackSortie(this.add.text(slotX + 28, slotY + 3, `${slot.label} ${slot.unitNames.length}`, this.textStyle(10, filled ? '#f2e3bf' : '#9fb0bf', true))).setDepth(depth + 1);
|
||||
this.trackSortie(this.add.text(slotX + 76, slotY + 3, this.compactText(slot.unitNames.join(', ') || slot.description, 12), this.textStyle(10, filled ? '#c8d2dd' : '#68727e'))).setDepth(depth + 1);
|
||||
this.renderSortieBattleUiIcon(this.formationRoleIconKey(slot.role), slotX + 14, slotY + slotHeight / 2, 20, depth + 1, filled ? 0.98 : 0.58);
|
||||
this.trackSortie(this.add.text(slotX + 30, slotY + 2, `${slot.label} ${slot.unitNames.length}`, this.textStyle(11, focusedRole ? '#ffdf7b' : filled ? '#f2e3bf' : '#9fb0bf', true))).setDepth(depth + 1);
|
||||
this.trackSortie(this.add.text(slotX + 30, slotY + 15, this.compactText(slot.unitNames.join(', ') || slot.description, 17), this.textStyle(9, filled ? '#c8d2dd' : '#7f8994', filled))).setDepth(depth + 1);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -11573,7 +11576,9 @@ export class CampScene extends Phaser.Scene {
|
||||
return `${equipmentSlotLabels[slot]} ${item.name} Lv${state.level}`;
|
||||
})
|
||||
.join(' / ');
|
||||
const reason = recommendation?.reason ?? (this.isSortieSelected(unit.id) ? '현재 출전 편성에 포함되어 있습니다.' : '대기 훈련으로 성장시키거나 전장 역할에 맞춰 교체할 수 있습니다.');
|
||||
const selected = this.isSortieSelected(unit.id);
|
||||
const roleHint = selected ? `${roleLabel} 배치 · 역할 슬롯 클릭으로 변경` : '대기 중 · 명단 클릭으로 출전 전환';
|
||||
const reason = recommendation?.reason ?? roleHint;
|
||||
|
||||
this.renderSortieBattleUiIcon(this.unitClassIconKey(unit), x + 24, y + 25, 32, depth + 1, 0.98);
|
||||
this.trackSortie(this.add.text(x + 48, y + 6, this.compactText(headline, 24), this.textStyle(13, '#f2e3bf', true))).setDepth(depth + 1);
|
||||
@@ -11586,9 +11591,9 @@ export class CampScene extends Phaser.Scene {
|
||||
this.trackSortie(this.add.text(x + 274, y + 30, `지형 ${terrainGrade} ${terrainScore}`, this.textStyle(10, '#d8b15f', true))).setDepth(depth + 1);
|
||||
|
||||
this.renderSortieEquipmentIcons(unit, x + 26, y + 52, true, depth + 1, 20, 16, 25);
|
||||
this.trackSortie(this.add.text(x + 94, y + 47, this.compactText(equipLine, 38), this.textStyle(10, '#c8d2dd', true))).setDepth(depth + 1);
|
||||
this.trackSortie(this.add.text(x + 94, y + 46, this.compactText(equipLine, 38), this.textStyle(10, '#c8d2dd', true))).setDepth(depth + 1);
|
||||
this.trackSortie(
|
||||
this.add.text(x + 94, y + 61, this.compactText(reason, 28), this.textStyle(9, recommendation ? '#ffdf7b' : '#9fb0bf', Boolean(recommendation)))
|
||||
this.add.text(x + 94, y + 58, this.compactText(reason, 32), this.textStyle(10, recommendation ? '#ffdf7b' : selected ? '#a8ffd0' : '#9fb0bf', true))
|
||||
).setDepth(depth + 1);
|
||||
}
|
||||
|
||||
@@ -11898,7 +11903,19 @@ export class CampScene extends Phaser.Scene {
|
||||
dot.setStrokeStyle(1, 0x05070a, 0.82);
|
||||
});
|
||||
|
||||
this.trackSortie(this.add.text(x + 10, y + height - 16, '전열/돌파/후원 배치점 · 붉은색: 적', this.textStyle(10, '#9fb0bf'))).setDepth(depth + 2);
|
||||
const legend = [
|
||||
{ label: '전열', color: this.sortieRoleDotColor('front') },
|
||||
{ label: '돌파', color: this.sortieRoleDotColor('flank') },
|
||||
{ label: '후원', color: this.sortieRoleDotColor('support') },
|
||||
{ label: '적', color: 0xd35f4a }
|
||||
];
|
||||
let legendX = x + 10;
|
||||
legend.forEach((entry) => {
|
||||
const dot = this.trackSortie(this.add.circle(legendX + 4, y + height - 10, 3.2, entry.color, 0.96));
|
||||
dot.setDepth(depth + 2);
|
||||
this.trackSortie(this.add.text(legendX + 10, y + height - 16, entry.label, this.textStyle(9, '#c8d2dd', true))).setDepth(depth + 2);
|
||||
legendX += 45;
|
||||
});
|
||||
}
|
||||
|
||||
private sortieDeploymentPlanForScenario(scenario: BattleScenarioDefinition) {
|
||||
@@ -12013,6 +12030,7 @@ export class CampScene extends Phaser.Scene {
|
||||
reserveTrainingBondPreview: reserveFocus.bondExpGained,
|
||||
objectiveLine: scenario ? `${scenario.title} · ${scenario.victoryConditionLabel}` : `${flow.title} · 군영 의정`,
|
||||
formationSlots,
|
||||
warningLine: warnings[0] ?? '배치 균형 양호',
|
||||
warnings
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user