From a169f50861b08388f1c1e203562cb25301e42bdc Mon Sep 17 00:00:00 2001 From: drdev Date: Sat, 9 Aug 2014 02:49:38 +0000 Subject: [PATCH] Fix issue with creating multiple new gauntlets in the same session --- .../screens/gauntlet/GauntletScreen.java | 29 +++++++++++++------ .../java/forge/gauntlet/GauntletUtil.java | 19 +++++++----- .../src/main/java/forge/model/FModel.java | 1 - 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/forge-gui-mobile/src/forge/screens/gauntlet/GauntletScreen.java b/forge-gui-mobile/src/forge/screens/gauntlet/GauntletScreen.java index aabc6d2a080..e3f2d8192a3 100644 --- a/forge-gui-mobile/src/forge/screens/gauntlet/GauntletScreen.java +++ b/forge-gui-mobile/src/forge/screens/gauntlet/GauntletScreen.java @@ -104,15 +104,13 @@ public class GauntletScreen extends LaunchScreen { } lstGauntlets.setGauntlets(data); + } - if (lstGauntlets.isEmpty()) { - btnRenameGauntlet.setEnabled(false); - btnDeleteGauntlet.setEnabled(false); - btnStart.setEnabled(false); - } - else { - lstGauntlets.setSelectedIndex(0); - } + private void updateButtons() { + boolean enabled = !lstGauntlets.isEmpty(); + btnRenameGauntlet.setEnabled(enabled); + btnDeleteGauntlet.setEnabled(enabled); + btnStart.setEnabled(enabled); } @Override @@ -268,7 +266,7 @@ public class GauntletScreen extends LaunchScreen { GauntletIO.getGauntletFile(gauntlet).delete(); - lstGauntlets.removeItem(gauntlet); + lstGauntlets.removeGauntlet(gauntlet); } }); } @@ -340,6 +338,8 @@ public class GauntletScreen extends LaunchScreen { public void setGauntlets(List gauntlets0) { gauntlets = gauntlets0; refresh(); + setSelectedIndex(0); + updateButtons(); } public void addGauntlet(GauntletData gauntlet) { @@ -347,6 +347,17 @@ public class GauntletScreen extends LaunchScreen { gauntlets.add(gauntlet); refresh(); setSelectedGauntlet(gauntlet); + updateButtons(); + } + + public void removeGauntlet(GauntletData gauntlet) { + if (gauntlets == null) { return; } + removeItem(gauntlet); + gauntlets.remove(gauntlet); + if (selectedIndex == gauntlets.size()) { + selectedIndex--; + } + updateButtons(); } public void refresh() { diff --git a/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java b/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java index 24e907d4f9e..dc8dd6c0c42 100644 --- a/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java +++ b/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java @@ -15,11 +15,15 @@ public class GauntletUtil { public static GauntletData createQuickGauntlet(final Deck userDeck, final int numOpponents, final List allowedDeckTypes) { final File[] arrFiles = GauntletIO.getGauntletFilesQuick(); final Set setNames = new HashSet(); - for (File f : arrFiles) { setNames.add(f.getName()); } + for (File f : arrFiles) { + setNames.add(f.getName()); + } int num = 1; while (setNames.contains(GauntletIO.PREFIX_QUICK + num + GauntletIO.SUFFIX_DATA)) { num++; } - FModel.getGauntletData().setName(GauntletIO.PREFIX_QUICK + num); + GauntletData gauntlet = new GauntletData(); + gauntlet.setName(GauntletIO.PREFIX_QUICK + num); + FModel.setGauntletData(gauntlet); // Generate gauntlet decks final List lstEventNames = new ArrayList(); @@ -55,13 +59,12 @@ public class GauntletUtil { lstGauntletDecks.add(tempDeck); } - final GauntletData gd = FModel.getGauntletData(); - gd.setDecks(lstGauntletDecks); - gd.setEventNames(lstEventNames); - gd.setUserDeck(userDeck); + gauntlet.setDecks(lstGauntletDecks); + gauntlet.setEventNames(lstEventNames); + gauntlet.setUserDeck(userDeck); // Reset all variable fields to 0, stamps and saves automatically. - gd.reset(); - return gd; + gauntlet.reset(); + return gauntlet; } } diff --git a/forge-gui/src/main/java/forge/model/FModel.java b/forge-gui/src/main/java/forge/model/FModel.java index 2414a37ffd6..7ccd460bc46 100644 --- a/forge-gui/src/main/java/forge/model/FModel.java +++ b/forge-gui/src/main/java/forge/model/FModel.java @@ -134,7 +134,6 @@ public class FModel { formats = new GameFormat.Collection(new GameFormat.Reader(new File(ForgeConstants.BLOCK_DATA_DIR + "formats.txt"))); blocks = new StorageBase("Block definitions", new CardBlock.Reader(ForgeConstants.BLOCK_DATA_DIR + "blocks.txt", magicDb.getEditions())); questPreferences = new QuestPreferences(); - gauntletData = new GauntletData(); fantasyBlocks = new StorageBase("Custom blocks", new CardBlock.Reader(ForgeConstants.BLOCK_DATA_DIR + "fantasyblocks.txt", magicDb.getEditions())); worlds = new StorageBase("Quest worlds", new QuestWorld.Reader(ForgeConstants.QUEST_WORLD_DIR + "worlds.txt"));