From aa838085f5cec03a75c706cdd5825f13ce135d63 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 5 Apr 2023 21:20:15 +0800 Subject: [PATCH] fix loading Arena, update remaining dialog --- .../src/forge/adventure/scene/ArenaScene.java | 26 ++++--- .../adventure/scene/DeckSelectScene.java | 23 ++++-- .../forge/adventure/scene/InventoryScene.java | 27 +++++-- .../forge/adventure/scene/SaveLoadScene.java | 33 ++++---- .../forge/adventure/scene/SettingsScene.java | 76 ++++++++++--------- .../src/forge/adventure/scene/StartScene.java | 12 ++- .../src/forge/adventure/scene/UIScene.java | 43 ++--------- .../src/forge/adventure/util/Controls.java | 3 +- .../res/adventure/Shandalar/world/red.json | 7 +- 9 files changed, 131 insertions(+), 119 deletions(-) diff --git a/forge-gui-mobile/src/forge/adventure/scene/ArenaScene.java b/forge-gui-mobile/src/forge/adventure/scene/ArenaScene.java index 13faeabd61e..a63e6422ab8 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/ArenaScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/ArenaScene.java @@ -100,10 +100,13 @@ public class ArenaScene extends UIScene implements IAfterMatch { private void showAreYouSure() { if (concedeDialog == null) { - concedeDialog = createGenericDialog(Forge.getLocalizer().getMessage("lblConcedeTitle"), "\n" + Forge.getLocalizer().getMessage("lblConcedeCurrentGame"), () -> { - loose(); - removeDialog(); - }, this::removeDialog); + concedeDialog = createGenericDialog(Forge.getLocalizer().getMessage("lblConcedeTitle"), + "\n" + Forge.getLocalizer().getMessage("lblConcedeCurrentGame"), + Forge.getLocalizer().getMessage("lblYes"), + Forge.getLocalizer().getMessage("lblNo"), () -> { + this.loose(); + removeDialog(); + }, this::removeDialog); } showDialog(concedeDialog); } @@ -117,10 +120,12 @@ public class ArenaScene extends UIScene implements IAfterMatch { private void startDialog() { if (startDialog == null) { - startDialog = createGenericDialog(Forge.getLocalizer().getMessage("lblStart"), Forge.getLocalizer().getMessage("lblStartArena"), () -> { - startArena(); - removeDialog(); - }, this::removeDialog); + startDialog = createGenericDialog(Forge.getLocalizer().getMessage("lblStart"), + Forge.getLocalizer().getMessage("lblStartArena"), Forge.getLocalizer().getMessage("lblYes"), + Forge.getLocalizer().getMessage("lblNo"), () -> { + this.startArena(); + removeDialog(); + }, this::removeDialog); } showDialog(startDialog); } @@ -287,7 +292,9 @@ public class ArenaScene extends UIScene implements IAfterMatch { for (int i = 0; i < numberOfEnemies; i++) { - EnemyData enemyData = WorldData.getEnemy(data.enemyPool[rand.nextInt(data.enemyPool.length)]); + EnemyData enemyData = null; + while (enemyData == null) + enemyData = WorldData.getEnemy(data.enemyPool[rand.nextInt(data.enemyPool.length)]); EnemySprite enemy = new EnemySprite(enemyData); enemies.add(enemy); fighters.add(new ArenaRecord(new Image(enemy.getAvatar()), enemyData.name)); @@ -295,7 +302,6 @@ public class ArenaScene extends UIScene implements IAfterMatch { fighters.add(new ArenaRecord(new Image(Current.player().avatar()), Current.player().getName())); player = fighters.get(fighters.size - 1).actor; - goldLabel.setText(data.entryFee + " [+Gold]"); goldLabel.layout(); goldLabel.setVisible(true); diff --git a/forge-gui-mobile/src/forge/adventure/scene/DeckSelectScene.java b/forge-gui-mobile/src/forge/adventure/scene/DeckSelectScene.java index 2c4e02d566d..bb71bd02e4d 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DeckSelectScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DeckSelectScene.java @@ -26,6 +26,7 @@ public class DeckSelectScene extends UIScene { TextraButton back, edit, rename; int currentSlot = 0; ScrollPane scrollPane; + Dialog renameDialog; private static DeckSelectScene object; @@ -65,14 +66,20 @@ public class DeckSelectScene extends UIScene { } private void showRenameDialog() { - - Dialog dialog = prepareDialog(Forge.getLocalizer().getMessage("lblRenameDeck"), ButtonOk | ButtonAbort, () -> DeckSelectScene.this.rename()); - dialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblNameYourSaveFile"))).colspan(2); - dialog.getContentTable().row(); - dialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblName") + ": ")).align(Align.left); - dialog.getContentTable().add(textInput).fillX().expandX(); - dialog.getContentTable().row(); - showDialog(dialog); + if (renameDialog == null) { + renameDialog = createGenericDialog(Forge.getLocalizer().getMessage("lblRenameDeck"), null, + Forge.getLocalizer().getMessage("lblOk"), + Forge.getLocalizer().getMessage("lblAbort"), () -> { + this.rename(); + removeDialog(); + }, this::removeDialog); + renameDialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblNewNameDeck"))).colspan(2); + renameDialog.getContentTable().row(); + renameDialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblName") + ": ")).align(Align.left); + renameDialog.getContentTable().add(textInput).fillX().expandX(); + renameDialog.getContentTable().row(); + } + showDialog(renameDialog); } private TextraButton addDeckSlot(String name, int i) { diff --git a/forge-gui-mobile/src/forge/adventure/scene/InventoryScene.java b/forge-gui-mobile/src/forge/adventure/scene/InventoryScene.java index af7c74d07c7..3cf00da2618 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/InventoryScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/InventoryScene.java @@ -33,6 +33,7 @@ public class InventoryScene extends UIScene { Button selected; Button deleteButton; Texture equipOverlay; + Dialog useDialog, deleteDialog; int columns = 0; public InventoryScene() { @@ -102,9 +103,15 @@ public class InventoryScene extends UIScene { } private void showConfirm() { - Dialog confirm = prepareDialog("", ButtonYes | ButtonNo, () -> delete()); - confirm.text(Controls.newLabel(Forge.getLocalizer().getMessage("lblDelete"))); - showDialog(confirm); + if (deleteDialog == null) { + deleteDialog = createGenericDialog("", Forge.getLocalizer().getMessage("lblDelete"), + Forge.getLocalizer().getMessage("lblYes"), + Forge.getLocalizer().getMessage("lblNo"), () -> { + this.delete(); + removeDialog(); + }, this::removeDialog); + } + showDialog(deleteDialog); } private static InventoryScene object; @@ -122,7 +129,6 @@ public class InventoryScene extends UIScene { } public void delete() { - ItemData data = ItemData.getItem(itemLocation.get(selected)); if (data != null) { Current.player().removeItem(data.name); @@ -156,9 +162,16 @@ public class InventoryScene extends UIScene { private void use() { ItemData data = ItemData.getItem(itemLocation.get(selected)); - if (data == null) return; - Dialog useDialog = prepareDialog("", ButtonYes | ButtonNo, () -> triggerUse()); - useDialog.getContentTable().add(Controls.newTextraLabel("Use " + data.name + "?\n" + data.getDescription())); + if (data == null) + return; + if (useDialog == null) { + useDialog = createGenericDialog("", null, Forge.getLocalizer().getMessage("lblYes"), + Forge.getLocalizer().getMessage("lblNo"), () -> { + this.triggerUse(); + removeDialog(); + }, this::removeDialog); + useDialog.getContentTable().add(Controls.newTextraLabel("Use " + data.name + "?\n" + data.getDescription())); + } showDialog(useDialog); } diff --git a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java index 751058629f9..450a08e7490 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SaveLoadScene.java @@ -2,7 +2,6 @@ package forge.adventure.scene; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Texture; -import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; @@ -45,14 +44,13 @@ public class SaveLoadScene extends UIScene { int currentSlot = 0, lastSelectedSlot = 0; Image previewImage; TextraLabel previewDate, playerLocation; - Image previewBorder; TextraButton saveLoadButton, back; Selectable quickSave; Selectable autoSave; - Actor lastHighlightedSave; SelectBox difficulty; ScrollPane scrollPane; char ASCII_179 = '│'; + Dialog saveDialog; private SaveLoadScene() { super(Forge.isLandscapeMode() ? "ui/save_load.json" : "ui/save_load_portrait.json"); @@ -94,9 +92,9 @@ public class SaveLoadScene extends UIScene { saveLoadButton = ui.findActor("save"); saveLoadButton.setText(Forge.getLocalizer().getMessage("lblSave")); - ui.onButtonPress("save", () -> SaveLoadScene.this.loadSave()); + ui.onButtonPress("save", SaveLoadScene.this::loadSave); back = ui.findActor("return"); - ui.onButtonPress("return", () -> SaveLoadScene.this.back()); + ui.onButtonPress("return", SaveLoadScene.this::back); difficulty.setSelectedIndex(1); difficulty.setAlignment(Align.center); difficulty.getStyle().fontColor = Color.GOLD; @@ -201,16 +199,21 @@ public class SaveLoadScene extends UIScene { case Save: if (currentSlot > 0) { //prevent NPE, allowed saveslot is 1 to 10.. - textInput.setText(buttons.get(currentSlot).actor.getText().toString()); - - Dialog dialog = prepareDialog(Forge.getLocalizer().getMessage("lblSave"), ButtonOk | ButtonAbort, () -> SaveLoadScene.this.save()); - - dialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblNameYourSaveFile"))).colspan(2).pad(2, 15, 2, 15); - dialog.getContentTable().row(); - dialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblName") + ": ")).align(Align.left).pad(2, 15, 2, 2); - dialog.getContentTable().add(textInput).fillX().expandX().padRight(15); - dialog.getContentTable().row(); - showDialog(dialog); + textInput.setText(buttons.get(currentSlot).actor.getText()); + if (saveDialog == null) { + saveDialog = createGenericDialog(Forge.getLocalizer().getMessage("lblSave"), null, + Forge.getLocalizer().getMessage("lblOk"), + Forge.getLocalizer().getMessage("lblAbort"), () -> { + this.save(); + removeDialog(); + }, this::removeDialog); + saveDialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblNameYourSaveFile"))).colspan(2).pad(2, 15, 2, 15); + saveDialog.getContentTable().row(); + saveDialog.getContentTable().add(Controls.newLabel(Forge.getLocalizer().getMessage("lblName") + ": ")).align(Align.left).pad(2, 15, 2, 2); + saveDialog.getContentTable().add(textInput).fillX().expandX().padRight(15); + saveDialog.getContentTable().row(); + } + showDialog(saveDialog); stage.setKeyboardFocus(textInput); } break; diff --git a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java index 7be5f2f6895..02c404b73c4 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java @@ -1,11 +1,8 @@ package forge.adventure.scene; -import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.scenes.scene2d.Actor; -import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; -import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.utils.Align; import com.github.tommyettinger.textra.TextraButton; import com.github.tommyettinger.textra.TextraLabel; @@ -31,17 +28,17 @@ import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; */ public class SettingsScene extends UIScene { static public ForgePreferences Preference; - Texture Background; private final Table settingGroup; TextraButton backButton; - TextraButton newPlane; + //TextraButton newPlane; ScrollPane scrollPane; - SelectBox selectSourcePlane; + SelectBox selectSourcePlane; TextField newPlaneName; + Dialog createNewPlane, copyPlane, errorDialog; private void copyNewPlane() { - String plane = (String) selectSourcePlane.getSelected(); + String plane = selectSourcePlane.getSelected(); Path source = Paths.get(Config.instance().getPlanePath(plane)); Path destination = Paths.get(Config.instance().getPlanePath("" + newPlaneName.getText())); AtomicBoolean somethingWentWrong = new AtomicBoolean(false); @@ -58,43 +55,54 @@ public class SettingsScene extends UIScene { somethingWentWrong.set(true); } if (somethingWentWrong.get()) { - Dialog dialog = prepareDialog("Something went wrong", ButtonOk | ButtonAbort, null); - dialog.text("Copy was not successful check your access right\n and if the folder is in use"); - showDialog(dialog); + if (errorDialog == null) { + errorDialog = createGenericDialog("Something went wrong", "Copy was not successful check your access right\n and if the folder is in use", + Forge.getLocalizer().getMessage("lblOk"), Forge.getLocalizer().getMessage("lblAbort"), this::removeDialog, this::removeDialog); + } + showDialog(errorDialog); } else { - Dialog dialog = prepareDialog("Copied plane", ButtonOk | ButtonAbort, null); - dialog.text("New plane " + newPlaneName.getText() + " was created\nYou can now start the editor to change the plane\n" + - "or edit it manually from the folder\n" + - Config.instance().getPlanePath("" + newPlaneName.getText())); + if (copyPlane == null) { + copyPlane = createGenericDialog("Copied plane", "New plane " + newPlaneName.getText() + + " was created\nYou can now start the editor to change the plane\n" + + "or edit it manually from the folder\n" + Config.instance().getPlanePath("" + newPlaneName.getText()), + Forge.getLocalizer().getMessage("lblOk"), Forge.getLocalizer().getMessage("lblAbort"), this::removeDialog, this::removeDialog); + } Config.instance().getSettingData().plane = "" + newPlaneName.getText(); Config.instance().saveSettings(); - showDialog(dialog); + showDialog(copyPlane); } - } private void createNewPlane() { - Dialog dialog = prepareDialog("Create your own Plane", ButtonOk | ButtonAbort, () -> copyNewPlane()); - dialog.text("Select a plane to copy"); - dialog.getContentTable().row(); - dialog.getContentTable().add(selectSourcePlane); - dialog.getContentTable().row(); - dialog.text("Set new plane name"); - dialog.getContentTable().row(); - dialog.getContentTable().add(newPlaneName); - newPlaneName.setText(selectSourcePlane.getSelected().toString() + "_copy"); - dialog.show(stage); + if (createNewPlane == null) { + createNewPlane = createGenericDialog("Create your own Plane", "Select a plane to copy", + Forge.getLocalizer().getMessage("lblOk"), + Forge.getLocalizer().getMessage("lblAbort"), () -> { + this.copyNewPlane(); + removeDialog(); + }, this::removeDialog); + createNewPlane.getContentTable().row(); + createNewPlane.getContentTable().add(selectSourcePlane); + createNewPlane.getContentTable().row(); + createNewPlane.text("Set new plane name"); + createNewPlane.getContentTable().row(); + createNewPlane.getContentTable().add(newPlaneName); + newPlaneName.setText(selectSourcePlane.getSelected() + "_copy"); + } + showDialog(createNewPlane); } private SettingsScene() { super(Forge.isLandscapeMode() ? "ui/settings.json" : "ui/settings_portrait.json"); - selectSourcePlane = Controls.newComboBox(); - newPlaneName = Controls.newTextField(""); settingGroup = new Table(); if (Preference == null) { Preference = new ForgePreferences(); } + //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; @@ -111,10 +119,10 @@ public class SettingsScene extends UIScene { addLabel(Forge.getLocalizer().getMessage("lblWorld")); settingGroup.add(plane).align(Align.right).pad(2); addLabel(Forge.getLocalizer().getMessage("lblCreate") + Forge.getLocalizer().getMessage("lblWorld")); - settingGroup.add(newPlane).align(Align.right).pad(2); + settingGroup.add(newPlane).align(Align.right).pad(2);*/ if (!GuiBase.isAndroid()) { - SelectBox videomode = Controls.newComboBox(new String[]{"720p", "768p", "900p", "1080p"}, Config.instance().getSettingData().videomode, o -> { + SelectBox videomode = Controls.newComboBox(new String[]{"720p", "768p", "900p", "1080p"}, Config.instance().getSettingData().videomode, o -> { String mode = (String) o; if (mode == null) mode = "720p"; @@ -145,7 +153,7 @@ public class SettingsScene extends UIScene { } if (Forge.isLandscapeMode()) { //different adjustment to landscape - SelectBox rewardCardAdjLandscape = Controls.newComboBox(new Float[]{0.6f, 0.65f, 0.7f, 0.75f, 0.8f, 0.85f, 0.9f, 0.95f, 1f, 1.05f, 1.1f, 1.15f, 1.2f, 1.25f, 1.3f, 1.35f, 1.4f, 1.45f, 1.5f, 1.55f, 1.6f}, Config.instance().getSettingData().rewardCardAdjLandscape, o -> { + SelectBox rewardCardAdjLandscape = Controls.newComboBox(new Float[]{0.6f, 0.65f, 0.7f, 0.75f, 0.8f, 0.85f, 0.9f, 0.95f, 1f, 1.05f, 1.1f, 1.15f, 1.2f, 1.25f, 1.3f, 1.35f, 1.4f, 1.45f, 1.5f, 1.55f, 1.6f}, Config.instance().getSettingData().rewardCardAdjLandscape, o -> { Float val = (Float) o; if (val == null || val == 0f) val = 1f; @@ -155,7 +163,7 @@ public class SettingsScene extends UIScene { }); addLabel("Reward/Shop Card Display Ratio"); settingGroup.add(rewardCardAdjLandscape).align(Align.right).pad(2); - SelectBox tooltipAdjLandscape = Controls.newComboBox(new Float[]{0.6f, 0.65f, 0.7f, 0.75f, 0.8f, 0.85f, 0.9f, 0.95f, 1f, 1.05f, 1.1f, 1.15f, 1.2f, 1.25f, 1.3f, 1.35f, 1.4f, 1.45f, 1.5f, 1.55f, 1.6f}, Config.instance().getSettingData().cardTooltipAdjLandscape, o -> { + SelectBox tooltipAdjLandscape = Controls.newComboBox(new Float[]{0.6f, 0.65f, 0.7f, 0.75f, 0.8f, 0.85f, 0.9f, 0.95f, 1f, 1.05f, 1.1f, 1.15f, 1.2f, 1.25f, 1.3f, 1.35f, 1.4f, 1.45f, 1.5f, 1.55f, 1.6f}, Config.instance().getSettingData().cardTooltipAdjLandscape, o -> { Float val = (Float) o; if (val == null || val == 0f) val = 1f; @@ -167,7 +175,7 @@ public class SettingsScene extends UIScene { settingGroup.add(tooltipAdjLandscape).align(Align.right).pad(2); } else { //portrait adjustment - SelectBox rewardCardAdj = Controls.newComboBox(new Float[]{0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f, 1.6f, 1.8f, 1.9f, 2f}, Config.instance().getSettingData().rewardCardAdj, o -> { + SelectBox rewardCardAdj = Controls.newComboBox(new Float[]{0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f, 1.6f, 1.8f, 1.9f, 2f}, Config.instance().getSettingData().rewardCardAdj, o -> { Float val = (Float) o; if (val == null || val == 0f) val = 1f; @@ -177,7 +185,7 @@ public class SettingsScene extends UIScene { }); addLabel("Reward/Shop Card Display Ratio"); settingGroup.add(rewardCardAdj).align(Align.right).pad(2); - SelectBox tooltipAdj = Controls.newComboBox(new Float[]{0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f, 1.6f, 1.8f, 1.9f, 2f}, Config.instance().getSettingData().cardTooltipAdj, o -> { + SelectBox tooltipAdj = Controls.newComboBox(new Float[]{0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f, 1.6f, 1.8f, 1.9f, 2f}, Config.instance().getSettingData().cardTooltipAdj, o -> { Float val = (Float) o; if (val == null || val == 0f) val = 1f; diff --git a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java index cbbb9e845f7..e1409f2d99e 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/StartScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/StartScene.java @@ -101,9 +101,15 @@ public class StartScene extends UIScene { } public boolean Exit() { - Dialog dialog = prepareDialog(Forge.getLocalizer().getMessage("lblExitForge"), ButtonOk | ButtonAbort, () -> Forge.exit(true)); - dialog.text(Controls.newLabel(Forge.getLocalizer().getMessage("lblAreYouSureYouWishExitForge"))); - showDialog(dialog); + if (exitDialog == null) { + exitDialog = createGenericDialog(Forge.getLocalizer().getMessage("lblExitForge"), + Forge.getLocalizer().getMessage("lblAreYouSureYouWishExitForge"), Forge.getLocalizer().getMessage("lblOk"), + Forge.getLocalizer().getMessage("lblAbort"), () -> { + Forge.exit(true); + removeDialog(); + }, this::removeDialog); + } + showDialog(exitDialog); return true; } diff --git a/forge-gui-mobile/src/forge/adventure/scene/UIScene.java b/forge-gui-mobile/src/forge/adventure/scene/UIScene.java index f7869de4a11..f353ef13ddf 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/UIScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/UIScene.java @@ -20,8 +20,6 @@ import com.github.tommyettinger.textra.TextraLabel; import forge.Forge; import forge.adventure.stage.GameHUD; import forge.adventure.util.*; -import forge.sound.SoundEffectType; -import forge.sound.SoundSystem; import java.time.LocalTime; @@ -87,36 +85,6 @@ public class UIScene extends Scene { } } - static final public int ButtonYes = 0x1; - static final public int ButtonNo = 0x2; - static final public int ButtonOk = 0x4; - static final public int ButtonAbort = 0x8; - - public Dialog prepareDialog(String header, int buttons, Runnable onOkOrYes) { - Dialog dialog = new Dialog(header, Controls.getSkin()) { - protected void result(Object object) { - SoundSystem.instance.play(SoundEffectType.ButtonPress, false); - if (onOkOrYes != null && object != null && object.equals(true)) - onOkOrYes.run(); - this.hide(); - removeDialog(); - } - }; - if ((buttons & ButtonYes) != 0) - dialog.button(Forge.getLocalizer().getMessage("lblYes"), true); - if ((buttons & ButtonNo) != 0) - dialog.button(Forge.getLocalizer().getMessage("lblNo"), false); - if ((buttons & ButtonOk) != 0) - dialog.button(Forge.getLocalizer().getMessage("lblOk"), true); - if ((buttons & ButtonAbort) != 0) - dialog.button(Forge.getLocalizer().getMessage("lblAbort"), false); - - dialog.setMovable(false); - dialog.setKeepWithinStage(true); - dialog.setResizable(false); - return dialog; - } - public void showDialog(Dialog dialog) { stage.addActor(dialog); possibleSelectionStack.add(new Array<>()); @@ -271,11 +239,12 @@ public class UIScene extends Scene { } } - public Dialog createGenericDialog(String title, String label, Runnable runnableYes, Runnable runnableNo) { - Dialog dialog = new Dialog(title, Controls.getSkin()); - dialog.text(label); - TextraButton yes = Controls.newTextButton(Forge.getLocalizer().getMessage("lblYes"), runnableYes); - TextraButton no = Controls.newTextButton(Forge.getLocalizer().getMessage("lblNo"), runnableNo); + public Dialog createGenericDialog(String title, String label, String stringYes, String stringNo, Runnable runnableYes, Runnable runnableNo) { + Dialog dialog = new Dialog(title == null ? "" : title, Controls.getSkin()); + if (label != null) + dialog.text(label); + TextraButton yes = Controls.newTextButton(stringYes, runnableYes); + TextraButton no = Controls.newTextButton(stringNo, runnableNo); dialog.button(yes).button(no); return dialog; } diff --git a/forge-gui-mobile/src/forge/adventure/util/Controls.java b/forge-gui-mobile/src/forge/adventure/util/Controls.java index ebc99cd67b2..d7939c53b81 100644 --- a/forge-gui-mobile/src/forge/adventure/util/Controls.java +++ b/forge-gui-mobile/src/forge/adventure/util/Controls.java @@ -218,7 +218,8 @@ public class Controls { @Override public void clicked(InputEvent event, float x, float y) { try { - func.run(); + if (func != null) + func.run(); } catch (Exception e) { e.printStackTrace(); } diff --git a/forge-gui/res/adventure/Shandalar/world/red.json b/forge-gui/res/adventure/Shandalar/world/red.json index 2bfd3fb7fb7..1c67d82d96e 100644 --- a/forge-gui/res/adventure/Shandalar/world/red.json +++ b/forge-gui/res/adventure/Shandalar/world/red.json @@ -36,10 +36,9 @@ "Boar", "Boggart", "Bull", - "Challenger 1", - "Challenger 2", - "Challenger 3", - "Challenger 4", + "Challenger 20", + "Challenger 21", + "Challenger 22", "Cyclops", "Devil", "Dinosaur",