From bd298d8ca5a0a697840b0de522e1b75571a2bdcd Mon Sep 17 00:00:00 2001 From: Agetian Date: Mon, 28 Sep 2015 10:07:09 +0000 Subject: [PATCH] - A better implementation of random land set choice in CEditorQuest/CEditorConstructed. --- .../controllers/CEditorConstructed.java | 20 ++++--------------- .../deckeditor/controllers/CEditorQuest.java | 16 ++++++--------- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java index 99de837ddd9..1cdbe2e9633 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java @@ -19,7 +19,6 @@ package forge.screens.deckeditor.controllers; import com.google.common.base.Predicates; import com.google.common.base.Supplier; -import forge.StaticData; import forge.UiCommand; import forge.card.CardEdition; @@ -36,14 +35,11 @@ import forge.properties.ForgePreferences.FPref; import forge.screens.deckeditor.AddBasicLandsDialog; import forge.screens.deckeditor.SEditorIO; import forge.screens.match.controllers.CDetailPicture; -import forge.util.Aggregates; import forge.util.ItemPool; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; import java.util.Map.Entry; -import java.util.Set; /** * Child controller for constructed deck editor UI. @@ -340,22 +336,14 @@ public final class CEditorConstructed extends ACEditorBase { Deck deck = editor.getDeckController().getModel(); if (deck == null) { return; } - List landCodes = new ArrayList<>(); - Set availableEditions = new HashSet<>(); + List availableEditions = new ArrayList<>(); for (PaperCard c : deck.getAllCardsInASinglePool().toFlatList()) { - availableEditions.add(c.getEdition()); + availableEditions.add(FModel.getMagicDb().getEditions().get(c.getEdition())); } - for (String edCode : availableEditions) { - CardEdition ed = FModel.getMagicDb().getEditions().get(edCode); - // Sets with only 2 types of lands (e.g. duel decks) are handled by Predicated.hasBasicLands - if (CardEdition.Predicates.hasBasicLands.apply(ed)) { - landCodes.add(edCode); - } - } - - CardEdition defaultLandSet = FModel.getMagicDb().getEditions().get(landCodes.isEmpty() ? "ZEN" : Aggregates.random(landCodes)); + CardEdition randomLandSet = CardEdition.Predicates.getRandomSetWithAllBasicLands(availableEditions); + CardEdition defaultLandSet = randomLandSet == null ? FModel.getMagicDb().getEditions().get("ZEN") : randomLandSet; AddBasicLandsDialog dialog = new AddBasicLandsDialog(deck, defaultLandSet, restrictedCatalog); CardPool landsToAdd = dialog.show(); diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuest.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuest.java index a09a11d8ed2..e112e11b3f3 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuest.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuest.java @@ -51,7 +51,6 @@ import forge.screens.deckeditor.views.VCurrentDeck; import forge.screens.deckeditor.views.VDeckgen; import forge.screens.home.quest.CSubmenuQuestDecks; import forge.screens.match.controllers.CDetailPicture; -import forge.util.Aggregates; import forge.util.ItemPool; /** @@ -313,18 +312,15 @@ public final class CEditorQuest extends ACEditorBase { Deck deck = editor.getDeckController().getModel(); if (deck == null) { return; } - List landCodes = new ArrayList<>(); - List availableEditions = questFormat != null ? questFormat.getAllowedSetCodes() : Lists.newArrayList(FModel.getMagicDb().getEditions().getItemNames()); + List availableEditionCodes = questFormat != null ? questFormat.getAllowedSetCodes() : Lists.newArrayList(FModel.getMagicDb().getEditions().getItemNames()); + List availableEditions = new ArrayList<>(); - for (String edCode : availableEditions) { - CardEdition ed = FModel.getMagicDb().getEditions().get(edCode); - // Sets with only 2 types of lands (e.g. duel decks) are handled by Predicated.hasBasicLands - if (CardEdition.Predicates.hasBasicLands.apply(ed)) { - landCodes.add(edCode); - } + for (String s : availableEditionCodes) { + availableEditions.add(FModel.getMagicDb().getEditions().get(s)); } - CardEdition defaultLandSet = FModel.getMagicDb().getEditions().get(landCodes.isEmpty() ? "ZEN" : Aggregates.random(landCodes)); + CardEdition randomLandSet = CardEdition.Predicates.getRandomSetWithAllBasicLands(availableEditions); + CardEdition defaultLandSet = randomLandSet == null ? FModel.getMagicDb().getEditions().get("ZEN") : randomLandSet; AddBasicLandsDialog dialog = new AddBasicLandsDialog(deck, defaultLandSet, restrictedCatalog); CardPool landsToAdd = dialog.show();