Support number keys for battle save slots
This commit is contained in:
@@ -3069,6 +3069,7 @@ export class BattleScene extends Phaser.Scene {
|
||||
private resultAnimationToken = 0;
|
||||
private resultSettlementText?: Phaser.GameObjects.Text;
|
||||
private saveSlotPanelObjects: Phaser.GameObjects.GameObject[] = [];
|
||||
private saveSlotPanelMode?: SaveSlotMode;
|
||||
private unitViews = new Map<string, UnitView>();
|
||||
private actedUnitIds = new Set<string>();
|
||||
private bondStates = new Map<string, BondState>();
|
||||
@@ -3215,6 +3216,9 @@ export class BattleScene extends Phaser.Scene {
|
||||
this.refreshUnitLegibilityStyles();
|
||||
}
|
||||
});
|
||||
this.input.keyboard?.on('keydown', (event: KeyboardEvent) => {
|
||||
this.handleSaveSlotPanelKey(event);
|
||||
});
|
||||
this.input.keyboard?.on('keydown-SPACE', (event: KeyboardEvent) => {
|
||||
if (this.activeFaction !== 'enemy' || this.fastForwardHeld) {
|
||||
return;
|
||||
@@ -11150,8 +11154,40 @@ export class BattleScene extends Phaser.Scene {
|
||||
return Array.from({ length: campaignSaveSlotCount }, (_, index) => index + 1).some((slot) => Boolean(this.readBattleSaveState(slot)));
|
||||
}
|
||||
|
||||
private handleSaveSlotPanelKey(event: KeyboardEvent) {
|
||||
if (!this.saveSlotPanelMode) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const slot = Number(event.key);
|
||||
if (!Number.isInteger(slot) || slot < 1 || slot > campaignSaveSlotCount) {
|
||||
return false;
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
this.activateSaveSlotPanelSlot(slot);
|
||||
return true;
|
||||
}
|
||||
|
||||
private activateSaveSlotPanelSlot(slot: number) {
|
||||
const mode = this.saveSlotPanelMode;
|
||||
if (!mode || (mode === 'load' && !this.readBattleSaveState(slot))) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.suppressNextLeftClick = true;
|
||||
soundDirector.playSelect();
|
||||
if (mode === 'save') {
|
||||
this.showSaveBattleConfirm(slot);
|
||||
return;
|
||||
}
|
||||
|
||||
this.showLoadBattleConfirm(slot);
|
||||
}
|
||||
|
||||
private showSaveSlotPanel(mode: SaveSlotMode) {
|
||||
this.hideSaveSlotPanel();
|
||||
this.saveSlotPanelMode = mode;
|
||||
this.clearPointerFeedback();
|
||||
const depth = 70;
|
||||
const width = 520;
|
||||
@@ -11226,13 +11262,7 @@ export class BattleScene extends Phaser.Scene {
|
||||
|
||||
if (!disabled) {
|
||||
const run = () => {
|
||||
this.suppressNextLeftClick = true;
|
||||
soundDirector.playSelect();
|
||||
if (mode === 'save') {
|
||||
this.showSaveBattleConfirm(slot);
|
||||
} else {
|
||||
this.showLoadBattleConfirm(slot);
|
||||
}
|
||||
this.activateSaveSlotPanelSlot(slot);
|
||||
};
|
||||
row.setInteractive({ useHandCursor: true });
|
||||
row.on('pointerover', () => row.setFillStyle(0x263647, 0.98));
|
||||
@@ -11264,6 +11294,7 @@ export class BattleScene extends Phaser.Scene {
|
||||
private hideSaveSlotPanel() {
|
||||
this.saveSlotPanelObjects.forEach((object) => object.destroy());
|
||||
this.saveSlotPanelObjects = [];
|
||||
this.saveSlotPanelMode = undefined;
|
||||
}
|
||||
|
||||
private showSaveBattleConfirm(slot: number) {
|
||||
@@ -17214,6 +17245,7 @@ export class BattleScene extends Phaser.Scene {
|
||||
commandMenuVisible: this.commandMenuObjects.length > 0,
|
||||
mapMenuVisible: this.mapMenuObjects.length > 0,
|
||||
saveSlotPanelVisible: this.saveSlotPanelObjects.length > 0,
|
||||
saveSlotPanelMode: this.saveSlotPanelMode ?? null,
|
||||
resultVisible: this.resultObjects.length > 0,
|
||||
turnPromptVisible: this.turnPromptObjects.length > 0,
|
||||
turnPromptMode: this.turnPromptMode ?? null,
|
||||
|
||||
Reference in New Issue
Block a user