Support retaining selected draft deck and sealed deck

This commit is contained in:
drdev
2014-06-10 02:45:30 +00:00
parent 5821c0f5fc
commit 6f24598c5a
4 changed files with 32 additions and 2 deletions

View File

@@ -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()));
}

View File

@@ -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

View File

@@ -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()));
}

View File

@@ -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<String, DeckPreferences> allPrefs = new HashMap<String, DeckPreferences>();
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<String, DeckPreferences> entry : allPrefs.entrySet()) {