diff --git a/forge-gui-desktop/src/main/java/forge/gui/framework/FScreen.java b/forge-gui-desktop/src/main/java/forge/gui/framework/FScreen.java index e88829015e6..cf38feddbda 100644 --- a/forge-gui-desktop/src/main/java/forge/gui/framework/FScreen.java +++ b/forge-gui-desktop/src/main/java/forge/gui/framework/FScreen.java @@ -70,6 +70,15 @@ public class FScreen { "Close Editor", ForgeConstants.EDITOR_LAYOUT_FILE, false); + public static final FScreen DECK_EDITOR_TINY_LEADERS = new FScreen( + VDeckEditorUI.SINGLETON_INSTANCE, + CDeckEditorUI.SINGLETON_INSTANCE, + "Tiny Leaders Deck Editor", + FSkin.getImage(FSkinProp.IMG_PACK), + true, + "Close Editor", + ForgeConstants.EDITOR_LAYOUT_FILE, + false); public static final FScreen DECK_EDITOR_PLANECHASE = new FScreen( VDeckEditorUI.SINGLETON_INSTANCE, CDeckEditorUI.SINGLETON_INSTANCE, diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCurrentDeck.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCurrentDeck.java index 5608876df91..07495e153f1 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCurrentDeck.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCurrentDeck.java @@ -167,7 +167,7 @@ public enum CCurrentDeck implements ICDoc { } catch (final Exception ex) { //BugReporter.reportException(ex); - throw new RuntimeException("Error importing deck." + ex); + throw new RuntimeException("Error importing deck.", ex); } } } diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorCommander.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorCommander.java index 3e5aaf25565..88c4f0fc461 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorCommander.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorCommander.java @@ -66,8 +66,8 @@ public final class CEditorCommander extends ACEditorBase { * all cards are available. */ @SuppressWarnings("serial") - public CEditorCommander(final CDetailPicture cDetailPicture) { - super(FScreen.DECK_EDITOR_COMMANDER, cDetailPicture); + public CEditorCommander(final CDetailPicture cDetailPicture, boolean tinyLeaders) { + super(tinyLeaders ? FScreen.DECK_EDITOR_TINY_LEADERS : FScreen.DECK_EDITOR_COMMANDER, cDetailPicture); allSections.add(DeckSection.Main); allSections.add(DeckSection.Sideboard); allSections.add(DeckSection.Commander); @@ -89,7 +89,7 @@ public final class CEditorCommander extends ACEditorBase { return new Deck(); } }; - this.controller = new DeckController(FModel.getDecks().getCommander(), this, newCreator); + this.controller = new DeckController(tinyLeaders ? FModel.getDecks().getTinyLeaders() :FModel.getDecks().getCommander(), this, newCreator); getBtnAddBasicLands().setCommand(new UiCommand() { @Override diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/CLobby.java b/forge-gui-desktop/src/main/java/forge/screens/home/CLobby.java index 813a1e70fe3..20b8b04390d 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/CLobby.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/CLobby.java @@ -25,99 +25,43 @@ public class CLobby { this.view = view; } + private void addDecks(final Iterable commanderDecks, FList deckList, String... initialItems) { + Vector listData = new Vector(); + for (String item : initialItems) { + listData.add(item); + } + listData.add("Generate"); + if (!Iterables.isEmpty(commanderDecks)) { + listData.add("Random"); + for (DeckProxy comDeck : commanderDecks) { + listData.add(comDeck.getDeck()); + } + } + Object val = deckList.getSelectedValue(); + deckList.setListData(listData); + if (null != val) { + deckList.setSelectedValue(val, true); + } + if (-1 == deckList.getSelectedIndex()) { + deckList.setSelectedIndex(0); + } + } + public void update() { SwingUtilities.invokeLater(new Runnable() { @Override public final void run() { final Iterable commanderDecks = DeckProxy.getAllCommanderDecks(); final Iterable tinyLeadersDecks = DeckProxy.getAllTinyLeadersDecks(); - final Iterable planarDecks = DeckProxy.getAllPlanarDecks(); final Iterable schemeDecks = DeckProxy.getAllSchemeDecks(); - FList deckList; - Vector listData; - Object val; + final Iterable planarDecks = DeckProxy.getAllPlanarDecks(); for (int i = 0; i < VLobby.MAX_PLAYERS; i++) { - // Commander: reinit deck list and restore last selections (if any) - deckList = view.getCommanderDeckLists().get(i); - listData = new Vector(); - listData.add("Generate"); - if (!Iterables.isEmpty(commanderDecks)) { - listData.add("Random"); - for (DeckProxy comDeck : commanderDecks) { - listData.add(comDeck.getDeck()); - } - } - val = deckList.getSelectedValue(); - deckList.setListData(listData); - if (null != val) { - deckList.setSelectedValue(val, true); - } - if (-1 == deckList.getSelectedIndex()) { - deckList.setSelectedIndex(0); - } // End Commander - - // Tiny Leaders: reinit deck list and restore last selections (if any) - deckList = view.getTinyLeadersDeckLists().get(i); - listData = new Vector(); - listData.add("Generate"); - if (!Iterables.isEmpty(tinyLeadersDecks)) { - listData.add("Random"); - for (DeckProxy tlDeck : tinyLeadersDecks) { - listData.add(tlDeck.getDeck()); - } - } - val = deckList.getSelectedValue(); - deckList.setListData(listData); - if (null != val) { - deckList.setSelectedValue(val, true); - } - if (-1 == deckList.getSelectedIndex()) { - deckList.setSelectedIndex(0); - } // Tiny Leaders - - // Archenemy: reinit deck list and restore last selections (if any) - deckList = view.getSchemeDeckLists().get(i); - listData = new Vector(); - listData.add("Use deck's scheme section (random if unavailable)"); - listData.add("Generate"); - if (!Iterables.isEmpty(schemeDecks)) { - listData.add("Random"); - for (DeckProxy schemeDeck : schemeDecks) { - listData.add(schemeDeck.getDeck()); - } - } - val = deckList.getSelectedValue(); - deckList.setListData(listData); - if (null != val) { - deckList.setSelectedValue(val, true); - } - if (-1 == deckList.getSelectedIndex()) { - deckList.setSelectedIndex(0); - } // End Archenemy - - // Planechase: reinit deck lists and restore last selections (if any) - deckList = view.getPlanarDeckLists().get(i); - listData = new Vector(); - - listData.add("Use deck's planes section (random if unavailable)"); - listData.add("Generate"); - if (!Iterables.isEmpty(planarDecks)) { - listData.add("Random"); - for (DeckProxy planarDeck : planarDecks) { - listData.add(planarDeck.getDeck()); - } - } - - val = deckList.getSelectedValue(); - deckList.setListData(listData); - if (null != val) { - deckList.setSelectedValue(val, true); - } - - if (-1 == deckList.getSelectedIndex()) { - deckList.setSelectedIndex(0); - } // End Planechase - + addDecks(commanderDecks, view.getCommanderDeckLists().get(i)); + addDecks(tinyLeadersDecks, view.getTinyLeadersDeckLists().get(i)); + addDecks(schemeDecks, view.getSchemeDeckLists().get(i), + "Use deck's scheme section (random if unavailable)"); + addDecks(planarDecks, view.getPlanarDeckLists().get(i), + "Use deck's planes section (random if unavailable)"); view.updateVanguardList(i); } diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java b/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java index a6410ee7668..b8001d13634 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java @@ -492,9 +492,15 @@ public class PlayerPanel extends FPanel { cmdDeckEditor.setCommand(new UiCommand() { @Override public void run() { - lobby.setCurrentGameMode(lobby.hasVariant(GameType.TinyLeaders) ? GameType.TinyLeaders : GameType.Commander); - Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER); - CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorCommander(CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture())); + if (lobby.hasVariant(GameType.TinyLeaders)) { + lobby.setCurrentGameMode(GameType.TinyLeaders); + Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_TINY_LEADERS); + CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorCommander(CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture(), true)); + } else { + lobby.setCurrentGameMode(GameType.Commander); + Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER); + CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorCommander(CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture(), false)); + } } }); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java b/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java index 6467bc619c6..69d34552561 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java @@ -533,7 +533,7 @@ public class VLobby implements ILobbyView { return; } - final Object selected = getCommanderDeckLists().get(playerIndex).getSelectedValue(); + final Object selected = getTinyLeadersDeckLists().get(playerIndex).getSelectedValue(); Deck deck = null; if (selected instanceof String) { if (selected.equals("Random")) { diff --git a/forge-gui/src/main/java/forge/deck/DeckProxy.java b/forge-gui/src/main/java/forge/deck/DeckProxy.java index d4728ed6979..89df206d80a 100644 --- a/forge-gui/src/main/java/forge/deck/DeckProxy.java +++ b/forge-gui/src/main/java/forge/deck/DeckProxy.java @@ -366,7 +366,7 @@ public class DeckProxy implements InventoryItem { else { filter = Predicates.and(DeckFormat.TinyLeaders.hasLegalCardsPredicate(), filter); } - addDecksRecursivelly("Tiny Leaders", GameType.TinyLeaders, result, "", FModel.getDecks().getCommander(), filter); + addDecksRecursivelly("Tiny Leaders", GameType.TinyLeaders, result, "", FModel.getDecks().getTinyLeaders(), filter); return result; } diff --git a/forge-gui/src/main/java/forge/model/CardCollections.java b/forge-gui/src/main/java/forge/model/CardCollections.java index 20e34cbbf0c..957ea88add5 100644 --- a/forge-gui/src/main/java/forge/model/CardCollections.java +++ b/forge-gui/src/main/java/forge/model/CardCollections.java @@ -42,6 +42,7 @@ public class CardCollections { private final IStorage scheme; private final IStorage plane; private final IStorage commander; + private final IStorage tinyLeaders; public CardCollections() { final StopWatch sw = new StopWatch(); @@ -54,6 +55,7 @@ public class CardCollections { scheme = new StorageImmediatelySerialized ("Archenemy decks", new DeckStorage(new File(ForgeConstants.DECK_SCHEME_DIR), ForgeConstants.DECK_BASE_DIR)); plane = new StorageImmediatelySerialized ("Planechase decks", new DeckStorage(new File(ForgeConstants.DECK_PLANE_DIR), ForgeConstants.DECK_BASE_DIR)); commander = new StorageImmediatelySerialized ("Commander decks", new DeckStorage(new File(ForgeConstants.DECK_COMMANDER_DIR), ForgeConstants.DECK_BASE_DIR)); + tinyLeaders = new StorageImmediatelySerialized ("Tiny Leaders decks", new DeckStorage(new File(ForgeConstants.DECK_TINY_LEADERS_DIR), ForgeConstants.DECK_BASE_DIR)); sw.stop(); System.out.printf("Read decks (%d ms): %d constructed, %d sealed, %d draft, %d cubes, %d scheme, %d planar, %d commander.%n", sw.getTime(), constructed.size(), sealed.size(), draft.size(), cube.size(), scheme.size(), plane.size(), commander.size()); } @@ -89,4 +91,8 @@ public class CardCollections { public IStorage getCommander() { return commander; } + + public IStorage getTinyLeaders() { + return tinyLeaders; + } } diff --git a/forge-gui/src/main/java/forge/properties/ForgeConstants.java b/forge-gui/src/main/java/forge/properties/ForgeConstants.java index 5a93832820c..22dbae0c3c3 100644 --- a/forge-gui/src/main/java/forge/properties/ForgeConstants.java +++ b/forge-gui/src/main/java/forge/properties/ForgeConstants.java @@ -122,6 +122,7 @@ public final class ForgeConstants { public static final String DECK_NET_DIR = DECK_BASE_DIR + "net" + PATH_SEPARATOR; public static final String QUEST_SAVE_DIR = USER_QUEST_DIR + "saves" + PATH_SEPARATOR; public static final String CONQUEST_SAVE_DIR = USER_CONQUEST_DIR + "saves" + PATH_SEPARATOR; + public static final String DECK_TINY_LEADERS_DIR= DECK_BASE_DIR + "tiny_leaders" + PATH_SEPARATOR; public static final String MAIN_PREFS_FILE = USER_PREFS_DIR + "forge.preferences"; public static final String CARD_PREFS_FILE = USER_PREFS_DIR + "card.preferences"; public static final String DECK_PREFS_FILE = USER_PREFS_DIR + "deck.preferences";