make form buttons uninteractible until tweens finished instead

This commit is contained in:
ChrisLolz 2025-01-23 01:20:34 -05:00
parent 41fd698165
commit 14614eb60a
3 changed files with 31 additions and 29 deletions

View File

@ -111,7 +111,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler {
if (this.buttonBgs.length) { if (this.buttonBgs.length) {
this.buttonBgs[0].off("pointerdown"); this.buttonBgs[0].off("pointerdown");
this.buttonBgs[0].on("pointerdown", () => { this.buttonBgs[0].on("pointerdown", () => {
if (this.submitAction) { if (this.submitAction && globalScene.tweens.getTweensOf(this.modalContainer).length === 0) {
this.submitAction(); this.submitAction();
} }
}); });

View File

@ -181,10 +181,6 @@ export default class LoginFormUiHandler extends FormModalUiHandler {
} }
private processExternalProvider(config: ModalConfig): void { private processExternalProvider(config: ModalConfig): void {
this.externalPartyContainer.destroy();
this.infoContainer.destroy();
this.buildExternalPartyContainer();
this.buildInfoContainer();
this.externalPartyTitle.setText(i18next.t("menu:orUse") ?? ""); this.externalPartyTitle.setText(i18next.t("menu:orUse") ?? "");
this.externalPartyTitle.setX(20 + this.externalPartyTitle.text.length); this.externalPartyTitle.setX(20 + this.externalPartyTitle.text.length);
this.externalPartyTitle.setVisible(true); this.externalPartyTitle.setVisible(true);
@ -222,31 +218,33 @@ export default class LoginFormUiHandler extends FormModalUiHandler {
}; };
this.usernameInfoImage.on("pointerdown", () => { this.usernameInfoImage.on("pointerdown", () => {
const localStorageKeys = Object.keys(localStorage); // this gets the keys for localStorage if (globalScene.tweens.getTweensOf(this.infoContainer).length === 0) {
const keyToFind = "data_"; const localStorageKeys = Object.keys(localStorage); // this gets the keys for localStorage
const dataKeys = localStorageKeys.filter(ls => ls.indexOf(keyToFind) >= 0); const keyToFind = "data_";
if (dataKeys.length > 0 && dataKeys.length <= 2) { const dataKeys = localStorageKeys.filter(ls => ls.indexOf(keyToFind) >= 0);
const options: OptionSelectItem[] = []; if (dataKeys.length > 0 && dataKeys.length <= 2) {
for (let i = 0; i < dataKeys.length; i++) { const options: OptionSelectItem[] = [];
options.push({ for (let i = 0; i < dataKeys.length; i++) {
label: dataKeys[i].replace(keyToFind, ""), options.push({
handler: () => { label: dataKeys[i].replace(keyToFind, ""),
globalScene.ui.revertMode(); handler: () => {
this.infoContainer.disableInteractive(); globalScene.ui.revertMode();
return true; this.infoContainer.disableInteractive();
} return true;
}
});
}
globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, {
options: options,
delay: 1000
}); });
} this.infoContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width, globalScene.game.canvas.height), Phaser.Geom.Rectangle.Contains);
globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, {
options: options,
delay: 1000
});
this.infoContainer.setInteractive(new Phaser.Geom.Rectangle(0, 0, globalScene.game.canvas.width, globalScene.game.canvas.height), Phaser.Geom.Rectangle.Contains);
} else {
if (dataKeys.length > 2) {
return onFail(this.ERR_TOO_MANY_SAVES);
} else { } else {
return onFail(this.ERR_NO_SAVES); if (dataKeys.length > 2) {
return onFail(this.ERR_TOO_MANY_SAVES);
} else {
return onFail(this.ERR_NO_SAVES);
}
} }
} }
}); });

View File

@ -122,7 +122,11 @@ export abstract class ModalUiHandler extends UiHandler {
for (let a = 0; a < this.buttonBgs.length; a++) { for (let a = 0; a < this.buttonBgs.length; a++) {
if (a < this.buttonBgs.length) { if (a < this.buttonBgs.length) {
this.buttonBgs[a].on("pointerdown", (_) => config.buttonActions[a]()); this.buttonBgs[a].on("pointerdown", (_) => {
if (globalScene.tweens.getTweensOf(this.modalContainer).length === 0) {
config.buttonActions[a]();
}
});
} }
} }