From 490a9b16936f05e81e8f81252858c92bd866bee9 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 14 Jul 2025 20:38:36 +0800 Subject: [PATCH] add restart dialog on World selectbox --- .../forge/adventure/scene/SettingsScene.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java index 1b77c9be206..6c7496be284 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java @@ -37,7 +37,7 @@ public class SettingsScene extends UIScene { SelectBox selectSourcePlane; TextField newPlaneName; - Dialog createNewPlane, copyPlane, errorDialog; + Dialog createNewPlane, copyPlane, errorDialog, restartDialog; private void copyNewPlane() { String plane = selectSourcePlane.getSelected(); @@ -98,16 +98,20 @@ public class SettingsScene extends UIScene { super(Forge.isLandscapeMode() ? "ui/settings.json" : "ui/settings_portrait.json"); settingGroup = new Table(); - //temporary disable custom world until it works correctly on each update selectSourcePlane = Controls.newComboBox(); newPlaneName = Controls.newTextField(""); - selectSourcePlane.setItems(Config.instance().getAllAdventures()); SelectBox plane = Controls.newComboBox(Config.instance().getAllAdventures(), Config.instance().getSettingData().plane, o -> { Config.instance().getSettingData().plane = (String) o; Config.instance().saveSettings(); return null; }); + plane.addListener(new ChangeListener() { + @Override + public void changed(ChangeEvent changeEvent, Actor actor) { + restartForge(); + } + }); /*newPlane = Controls.newTextButton("Create own plane"); newPlane.addListener(new ClickListener() { @Override @@ -115,9 +119,9 @@ public class SettingsScene extends UIScene { createNewPlane(); } });*/ - addLabel(Forge.getLocalizer().getMessage("lblWorld")); + addLabel(Forge.getLocalizer().getMessage("lblWorld") + " (" + Forge.getLocalizer().getMessage("lblRestartRequired") + ")"); settingGroup.add(plane).align(Align.right).pad(2); - addLabel(Forge.getLocalizer().getMessage("lblCreate") + Forge.getLocalizer().getMessage("lblWorld")); + //addLabel(Forge.getLocalizer().getMessage("lblCreate") + Forge.getLocalizer().getMessage("lblWorld")); settingGroup.add(newPlane).align(Align.right).pad(2); if (!GuiBase.isAndroid()) { @@ -370,6 +374,18 @@ public class SettingsScene extends UIScene { settingGroup.add(label).align(Align.left).pad(2, 2, 2, 5).width(w).expand(); } + private void restartForge() { + if (restartDialog == null) { + restartDialog = createGenericDialog("", + Forge.getLocalizer().getMessage("lblAreYouSureYouWishRestartForge"), + Forge.getLocalizer().getMessage("lblOK"), + Forge.getLocalizer().getMessage("lblAbort"), () -> { + Forge.restart(true); + removeDialog(); + }, this::removeDialog); + } + showDialog(restartDialog); + } private static SettingsScene object;