From 6f24598c5afb14deb76d8863cd52cbd3bf07c750 Mon Sep 17 00:00:00 2001 From: drdev Date: Tue, 10 Jun 2014 02:45:30 +0000 Subject: [PATCH] Support retaining selected draft deck and sealed deck --- .../src/forge/screens/draft/DraftScreen.java | 3 +++ .../screens/draft/DraftingProcessScreen.java | 2 ++ .../forge/screens/sealed/SealedScreen.java | 4 +++ .../java/forge/deck/io/DeckPreferences.java | 25 +++++++++++++++++-- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/forge-gui-mobile/src/forge/screens/draft/DraftScreen.java b/forge-gui-mobile/src/forge/screens/draft/DraftScreen.java index ff813e13e58..d2dba79e0f8 100644 --- a/forge-gui-mobile/src/forge/screens/draft/DraftScreen.java +++ b/forge-gui-mobile/src/forge/screens/draft/DraftScreen.java @@ -18,6 +18,7 @@ import forge.deck.DeckProxy; import forge.deck.FDeckChooser; import forge.deck.FDeckEditor; import forge.deck.FDeckEditor.EditorType; +import forge.deck.io.DeckPreferences; import forge.game.GameType; import forge.game.player.RegisteredPlayer; import forge.itemmanager.DeckManager; @@ -84,12 +85,14 @@ public class DraftScreen extends LaunchScreen { @Override public void onActivate() { lstDecks.setPool(DeckProxy.getDraftDecks(FModel.getDecks().getDraft())); + lstDecks.setSelectedString(DeckPreferences.getDraftDeck()); } private void editSelectedDeck() { final DeckProxy deck = lstDecks.getSelectedItem(); if (deck == null) { return; } + DeckPreferences.setDraftDeck(deck.getName()); Forge.openScreen(new FDeckEditor(EditorType.Draft, deck.getDeck())); } diff --git a/forge-gui-mobile/src/forge/screens/draft/DraftingProcessScreen.java b/forge-gui-mobile/src/forge/screens/draft/DraftingProcessScreen.java index 8106cc7b9da..73667441148 100644 --- a/forge-gui-mobile/src/forge/screens/draft/DraftingProcessScreen.java +++ b/forge-gui-mobile/src/forge/screens/draft/DraftingProcessScreen.java @@ -5,6 +5,7 @@ import org.apache.commons.lang3.StringUtils; import forge.deck.Deck; import forge.deck.DeckGroup; import forge.deck.FDeckEditor; +import forge.deck.io.DeckPreferences; import forge.limited.BoosterDraft; import forge.model.FModel; import forge.toolbox.FOptionPane; @@ -83,6 +84,7 @@ public class DraftingProcessScreen extends FDeckEditor { FModel.getDecks().getDraft().add(finishedDraft); this.getEditorType().getController().setDeckBase(finishedDraft); + DeckPreferences.setDraftDeck(name); } @Override diff --git a/forge-gui-mobile/src/forge/screens/sealed/SealedScreen.java b/forge-gui-mobile/src/forge/screens/sealed/SealedScreen.java index 241dde98147..05273622053 100644 --- a/forge-gui-mobile/src/forge/screens/sealed/SealedScreen.java +++ b/forge-gui-mobile/src/forge/screens/sealed/SealedScreen.java @@ -8,6 +8,7 @@ import forge.deck.DeckProxy; import forge.deck.FDeckChooser; import forge.deck.FDeckEditor; import forge.deck.FDeckEditor.EditorType; +import forge.deck.io.DeckPreferences; import forge.game.GameType; import forge.itemmanager.DeckManager; import forge.itemmanager.ItemManagerConfig; @@ -51,6 +52,7 @@ public class SealedScreen extends LaunchScreen { FThreads.invokeInEdtLater(new Runnable() { @Override public void run() { + DeckPreferences.setSealedDeck(sealed.getName()); Forge.openScreen(new FDeckEditor(EditorType.Sealed, sealed.getHumanDeck())); } }); @@ -70,12 +72,14 @@ public class SealedScreen extends LaunchScreen { @Override public void onActivate() { lstDecks.setPool(DeckProxy.getAllSealedDecks(FModel.getDecks().getSealed())); + lstDecks.setSelectedString(DeckPreferences.getSealedDeck()); } private void editSelectedDeck() { final DeckProxy deck = lstDecks.getSelectedItem(); if (deck == null) { return; } + DeckPreferences.setSealedDeck(deck.getName()); Forge.openScreen(new FDeckEditor(EditorType.Sealed, deck.getDeck())); } diff --git a/forge-gui/src/main/java/forge/deck/io/DeckPreferences.java b/forge-gui/src/main/java/forge/deck/io/DeckPreferences.java index b6eeb7c3fbb..9e3f9b1e527 100644 --- a/forge-gui/src/main/java/forge/deck/io/DeckPreferences.java +++ b/forge-gui/src/main/java/forge/deck/io/DeckPreferences.java @@ -21,19 +21,36 @@ import org.w3c.dom.NodeList; * */ public class DeckPreferences { - private static String currentDeck; + private static String currentDeck, draftDeck, sealedDeck; private static Map allPrefs = new HashMap(); public static String getCurrentDeck() { return currentDeck; } - public static void setCurrentDeck(String currentDeck0) { if (currentDeck != null && currentDeck.equals(currentDeck0)) { return; } currentDeck = currentDeck0; save(); } + public static String getDraftDeck() { + return draftDeck; + } + public static void setDraftDeck(String draftDeck0) { + if (draftDeck != null && draftDeck.equals(draftDeck0)) { return; } + draftDeck = draftDeck0; + save(); + } + + public static String getSealedDeck() { + return sealedDeck; + } + public static void setSealedDeck(String sealedDeck0) { + if (sealedDeck != null && sealedDeck.equals(sealedDeck0)) { return; } + sealedDeck = sealedDeck0; + save(); + } + public static DeckPreferences getPrefs(DeckProxy deck) { String key = deck.getUniqueKey(); DeckPreferences prefs = allPrefs.get(key); @@ -53,6 +70,8 @@ public class DeckPreferences { final Element root = (Element)document.getElementsByTagName("preferences").item(0); currentDeck = root.getAttribute("currentDeck"); + draftDeck = root.getAttribute("draftDeck"); + sealedDeck = root.getAttribute("sealedDeck"); final NodeList cards = document.getElementsByTagName("deck"); for (int i = 0; i < cards.getLength(); i++) { @@ -80,6 +99,8 @@ public class DeckPreferences { Element root = document.createElement("preferences"); root.setAttribute("type", "decks"); root.setAttribute("currentDeck", currentDeck); + root.setAttribute("draftDeck", draftDeck); + root.setAttribute("sealedDeck", sealedDeck); document.appendChild(root); for (Map.Entry entry : allPrefs.entrySet()) {