lossingProgressWarning in settings

This commit is contained in:
Adrian 2024-08-18 23:16:45 -04:00
parent 3d8a51e7e4
commit 5be45edc58

View File

@ -2,7 +2,7 @@ import BattleScene from "../../battle-scene";
import { hasTouchscreen, isMobile } from "../../touch-controls"; import { hasTouchscreen, isMobile } from "../../touch-controls";
import { TextStyle, addTextObject } from "../text"; import { TextStyle, addTextObject } from "../text";
import { Mode } from "../ui"; import { Mode } from "../ui";
import UiHandler from "../ui-handler"; import MessageUiHandler from "../message-ui-handler";
import { addWindow } from "../ui-theme"; import { addWindow } from "../ui-theme";
import {Button} from "#enums/buttons"; import {Button} from "#enums/buttons";
import {InputsIcons} from "#app/ui/settings/abstract-control-settings-ui-handler.js"; import {InputsIcons} from "#app/ui/settings/abstract-control-settings-ui-handler.js";
@ -14,10 +14,11 @@ import i18next from "i18next";
/** /**
* Abstract class for handling UI elements related to settings. * Abstract class for handling UI elements related to settings.
*/ */
export default class AbstractSettingsUiHandler extends UiHandler { export default class AbstractSettingsUiHandler extends MessageUiHandler {
private settingsContainer: Phaser.GameObjects.Container; private settingsContainer: Phaser.GameObjects.Container;
private optionsContainer: Phaser.GameObjects.Container; private optionsContainer: Phaser.GameObjects.Container;
private navigationContainer: NavigationMenu; private navigationContainer: NavigationMenu;
private settingsMessageBoxContainer: Phaser.GameObjects.Container;
private scrollCursor: integer; private scrollCursor: integer;
@ -138,6 +139,22 @@ export default class AbstractSettingsUiHandler extends UiHandler {
this.settingsContainer.add(actionText); this.settingsContainer.add(actionText);
this.settingsContainer.add(cancelText); this.settingsContainer.add(cancelText);
this.settingsMessageBoxContainer = this.scene.add.container(0, 130);
this.settingsMessageBoxContainer.setName("settings-message-box");
this.settingsMessageBoxContainer.setVisible(false);
const settingsMessageBox = addWindow(this.scene, 0, 0, (this.scene.game.canvas.width/6) - 2, 48);
this.settingsMessageBoxContainer.add(settingsMessageBox);
const messageText = addTextObject(this.scene,8,8,"",TextStyle.WINDOW,{ maxLines: 2 });
messageText.setWordWrapWidth(this.scene.game.canvas.width - 2);
messageText.setName("settings-message");
messageText.setOrigin(0, 0);
this.settingsMessageBoxContainer.add(messageText);
this.message = messageText;
this.settingsContainer.add(this.settingsMessageBoxContainer);
ui.add(this.settingsContainer); ui.add(this.settingsContainer);
this.setCursor(0); this.setCursor(0);
@ -215,10 +232,31 @@ export default class AbstractSettingsUiHandler extends UiHandler {
let success = false; let success = false;
if (button === Button.CANCEL) { if (button === Button.CANCEL) {
success = true; if (this.reloadRequired && this.scene.currentBattle && this.scene.currentBattle.turn > 1) {
const ui = this.getUi();
this.showText(i18next.t("menuUiHandler:losingProgressionWarning"), null, () => {
ui.setOverlayMode(Mode.CONFIRM, () => {
NavigationManager.getInstance().reset(); NavigationManager.getInstance().reset();
// Reverts UI to its previous state on cancel.
this.scene.ui.revertMode(); this.scene.ui.revertMode();
this.scene.ui.revertMode();
}, () => {
this.reloadSettings.forEach((s,i) => {
if (s !== null && s !== this.optionCursors[i]) {
this.setOptionCursor(i,s,true);
}
});
this.scene.ui.revertMode();
ui.showText("", 0);
}, false, 0,0);
});
} else {
NavigationManager.getInstance().reset();
this.scene.ui.revertMode();
}
success = true;
} else { } else {
const cursor = this.cursor + this.scrollCursor; const cursor = this.cursor + this.scrollCursor;
switch (button) { switch (button) {
@ -267,7 +305,28 @@ export default class AbstractSettingsUiHandler extends UiHandler {
break; break;
case Button.CYCLE_FORM: case Button.CYCLE_FORM:
case Button.CYCLE_SHINY: case Button.CYCLE_SHINY:
if (this.reloadRequired && this.scene.currentBattle && this.scene.currentBattle.turn > 1) {
const ui = this.getUi();
this.showText(i18next.t("menuUiHandler:losingProgressionWarning"), null, () => {
ui.setOverlayMode(Mode.CONFIRM, () => {
NavigationManager.getInstance().reset();
this.scene.ui.revertMode();
this.scene.ui.revertMode();
}, () => {
this.reloadSettings.forEach((s,i) => {
if (s !== null && s !== this.optionCursors[i]) {
this.setOptionCursor(this.cursor + this.scrollCursor,s,true);
}
});
this.scene.ui.revertMode();
ui.showText("", 0);
}, false, 0,0);
});
} else {
success = this.navigationContainer.navigate(button); success = this.navigationContainer.navigate(button);
}
break; break;
case Button.ACTION: case Button.ACTION:
const setting: Setting = this.settings[cursor]; const setting: Setting = this.settings[cursor];
@ -417,4 +476,10 @@ export default class AbstractSettingsUiHandler extends UiHandler {
} }
this.cursorObj = null; this.cursorObj = null;
} }
showText(text: string, delay?: number|null, callback?: Function, callbackDelay?: number, prompt?: boolean, promptDelay?: number): void {
this.settingsMessageBoxContainer.setVisible(!!text);
super.showText(text, delay, callback, callbackDelay, prompt, promptDelay);
}
} }