Tighten early battle QA polish
This commit is contained in:
@@ -389,7 +389,7 @@ export const firstBattleScenario: BattleScenarioDefinition = {
|
||||
bonds: firstBattleBonds,
|
||||
mapTextureKey: 'battle-map-first',
|
||||
leaderUnitId: 'rebel-leader',
|
||||
quickVictoryTurnLimit: 8,
|
||||
quickVictoryTurnLimit: 14,
|
||||
baseVictoryGold: 300,
|
||||
objectives: [
|
||||
{
|
||||
@@ -416,9 +416,9 @@ export const firstBattleScenario: BattleScenarioDefinition = {
|
||||
{
|
||||
id: 'quick',
|
||||
kind: 'quick-victory',
|
||||
label: '8턴 안에 승리',
|
||||
label: '14턴 이내 승리',
|
||||
rewardGold: 120,
|
||||
maxTurn: 8
|
||||
maxTurn: 14
|
||||
}
|
||||
],
|
||||
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
||||
@@ -488,14 +488,14 @@ export const thirdBattleScenario: BattleScenarioDefinition = {
|
||||
openingObjectiveLines: [
|
||||
'황건 전령 마원이 광종 본대로 향하고 있습니다. 마원을 격파하면 적의 연락망이 끊어집니다.',
|
||||
'강가 길목과 요새 주변의 궁병을 방치하면 전선이 오래 묶입니다. 지형 보정을 살펴 진군하십시오.',
|
||||
'14턴 이내에 승리하면 광종 구원로 확보 명성이 오릅니다.'
|
||||
'18턴 이내에 승리하면 광종 구원로 확보 명성이 오릅니다.'
|
||||
],
|
||||
map: thirdBattleMap,
|
||||
units: thirdBattleUnits,
|
||||
bonds: thirdBattleBonds,
|
||||
mapTextureKey: 'battle-map-third',
|
||||
leaderUnitId: 'guangzong-leader-ma-yuan',
|
||||
quickVictoryTurnLimit: 14,
|
||||
quickVictoryTurnLimit: 18,
|
||||
baseVictoryGold: 520,
|
||||
objectives: [
|
||||
{
|
||||
@@ -522,9 +522,9 @@ export const thirdBattleScenario: BattleScenarioDefinition = {
|
||||
{
|
||||
id: 'quick',
|
||||
kind: 'quick-victory',
|
||||
label: '14턴 이내 승리',
|
||||
label: '18턴 이내 승리',
|
||||
rewardGold: 180,
|
||||
maxTurn: 14
|
||||
maxTurn: 18
|
||||
}
|
||||
],
|
||||
defeatConditions: [{ kind: 'unit-defeated', unitId: 'liu-bei' }],
|
||||
|
||||
@@ -3192,11 +3192,6 @@ export class BattleScene extends Phaser.Scene {
|
||||
color: '#9aa3ad',
|
||||
wordWrap: { width: panelWidth - 48, useAdvancedWrap: true }
|
||||
});
|
||||
this.add.text(panelX + 24, panelY + panelHeight - 172, '가장자리 커서 / 미니맵 클릭으로 시야 이동', {
|
||||
fontFamily: '"Malgun Gothic", "Noto Sans KR", sans-serif',
|
||||
fontSize: '14px',
|
||||
color: '#9aa3ad'
|
||||
});
|
||||
this.updateObjectiveTracker();
|
||||
this.drawMiniMap();
|
||||
}
|
||||
@@ -3511,20 +3506,20 @@ export class BattleScene extends Phaser.Scene {
|
||||
this.layout.tileSize,
|
||||
this.layout.tileSize,
|
||||
palette.blue,
|
||||
0.24
|
||||
0.34
|
||||
);
|
||||
marker.setData('tileX', x);
|
||||
marker.setData('tileY', y);
|
||||
marker.setOrigin(0);
|
||||
marker.setStrokeStyle(1, palette.blue, 0.68);
|
||||
marker.setStrokeStyle(2, palette.blue, 0.84);
|
||||
marker.setDepth(4);
|
||||
if (this.mapMask) {
|
||||
marker.setMask(this.mapMask);
|
||||
}
|
||||
marker.setVisible(this.isTileVisible(x, y));
|
||||
marker.setInteractive({ useHandCursor: true });
|
||||
marker.on('pointerover', () => marker.setFillStyle(palette.blue, 0.36));
|
||||
marker.on('pointerout', () => marker.setFillStyle(palette.blue, 0.24));
|
||||
marker.on('pointerover', () => marker.setFillStyle(palette.blue, 0.48));
|
||||
marker.on('pointerout', () => marker.setFillStyle(palette.blue, 0.34));
|
||||
marker.on('pointerdown', (pointer: Phaser.Input.Pointer) => {
|
||||
if (pointer.leftButtonDown()) {
|
||||
this.moveSelectedUnit(x, y, pointer);
|
||||
@@ -9421,6 +9416,10 @@ export class BattleScene extends Phaser.Scene {
|
||||
return this.layout.panelY + 152;
|
||||
}
|
||||
|
||||
private sideContentBottom(padding = 16) {
|
||||
return (this.miniMapLayout?.y ?? this.layout.panelY + this.layout.panelHeight - 140) - padding;
|
||||
}
|
||||
|
||||
private renderBondPanel(message?: string) {
|
||||
this.clearSidePanelContent();
|
||||
const { panelX, panelWidth } = this.layout;
|
||||
@@ -9905,6 +9904,11 @@ export class BattleScene extends Phaser.Scene {
|
||||
this.renderStatRow(stat.label, unit.stats[stat.key], left, statTop + index * 28, width);
|
||||
});
|
||||
|
||||
if (message) {
|
||||
this.renderPanelMessage(message, left, top + 306, width, 66);
|
||||
return;
|
||||
}
|
||||
|
||||
const positionText = `위치 ${unit.x + 1}, ${unit.y + 1} / ${terrainRule.label} ${terrainRating}%${acted ? ' / 행동완료' : ''}`;
|
||||
this.trackSideObject(this.add.text(left, top + 306, positionText, {
|
||||
fontFamily: '"Malgun Gothic", "Noto Sans KR", sans-serif',
|
||||
@@ -9913,10 +9917,6 @@ export class BattleScene extends Phaser.Scene {
|
||||
}));
|
||||
|
||||
this.renderEquipmentSummary(unit, left, top + 330, width);
|
||||
|
||||
if (message) {
|
||||
this.renderPanelMessage(message, left, top + 440, width, 50);
|
||||
}
|
||||
}
|
||||
|
||||
private renderEquipmentSummary(unit: UnitData, x: number, y: number, width: number) {
|
||||
@@ -10072,16 +10072,19 @@ export class BattleScene extends Phaser.Scene {
|
||||
}
|
||||
|
||||
private renderPanelMessage(text: string, x: number, y: number, width: number, height = 74) {
|
||||
const bg = this.trackSideObject(this.add.rectangle(x, y, width, height, 0x101820, 0.72));
|
||||
const safeY = Math.max(this.sideContentTop(), Math.min(y, this.sideContentBottom() - height));
|
||||
const bg = this.trackSideObject(this.add.rectangle(x, safeY, width, height, 0x101820, 0.82));
|
||||
bg.setOrigin(0);
|
||||
bg.setStrokeStyle(1, 0x53606c, 0.42);
|
||||
this.trackSideObject(this.add.text(x + 12, y + 10, text, {
|
||||
const messageText = this.trackSideObject(this.add.text(x + 12, safeY + 10, text, {
|
||||
fontFamily: '"Malgun Gothic", "Noto Sans KR", sans-serif',
|
||||
fontSize: height < 60 ? '13px' : '15px',
|
||||
color: '#d4dce6',
|
||||
wordWrap: { width: width - 24, useAdvancedWrap: true },
|
||||
lineSpacing: height < 60 ? 2 : 4
|
||||
}));
|
||||
bg.setDepth(32);
|
||||
messageText.setDepth(33);
|
||||
}
|
||||
|
||||
private returnToRosterPanel(tab: RosterTab) {
|
||||
|
||||
Reference in New Issue
Block a user