From 7cf186952e197d17a493380ee81c54b7f1a156cf Mon Sep 17 00:00:00 2001 From: Agetian Date: Tue, 21 Jan 2014 14:17:01 +0000 Subject: [PATCH] - Added an option "Randomize card art in generated card pools" (enabled by default). When enabled, generates cards with different art in generated limited mode pools (sealed, booster draft, quest). When disabled, generates a certain predefined amount (30 for draft/sealed, 10 for quest shop) of lands, all with the same art. However, the art index will be randomized at every generation, thus still leaving some room for art randomization. - Tweaked case of letters in some option names for consistency. --- .../controllers/CEditorDraftingProcess.java | 10 ++++++++-- .../forge/gui/home/sanctioned/CSubmenuSealed.java | 9 +++++++-- .../gui/home/settings/CSubmenuPreferences.java | 1 + .../gui/home/settings/VSubmenuPreferences.java | 13 +++++++++++-- .../java/forge/properties/ForgePreferences.java | 1 + .../src/main/java/forge/quest/QuestUtilCards.java | 12 +++++++++--- 6 files changed, 37 insertions(+), 9 deletions(-) diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java index 45060740d56..bd6aae92378 100644 --- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java +++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java @@ -37,7 +37,9 @@ import forge.gui.toolbox.itemmanager.views.SColumnUtil; import forge.item.PaperCard; import forge.limited.BoosterDraft; import forge.limited.IBoosterDraft; +import forge.properties.ForgePreferences.FPref; import forge.util.ItemPool; +import forge.util.MyRandom; /** * Updates the deck editor UI as necessary draft selection mode. @@ -159,8 +161,12 @@ public class CEditorDraftingProcess extends ACEditorBase { for(String landName : MagicColor.Constant.BASIC_LANDS) { final int numArt = Singletons.getMagicDb().getCommonCards().getArtCount(landName, landSet); - for (int i = 0; i < numArt; i++) { - deck.get(DeckSection.Sideboard).add(landName, landSet, i, numArt > 1 ? landsCount : 30); + if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_ART_POOLS)) { + for (int i = 0; i < numArt; i++) { + deck.get(DeckSection.Sideboard).add(landName, landSet, i, numArt > 1 ? landsCount : 30); + } + } else { + deck.get(DeckSection.Sideboard).add(landName, landSet, numArt > 1 ? MyRandom.getRandom().nextInt(numArt) : 0, 30); } } diff --git a/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java b/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java index 6bd8241e1d6..a81966e4dfe 100644 --- a/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java +++ b/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java @@ -37,6 +37,7 @@ import forge.limited.SealedCardPoolGenerator; import forge.limited.SealedDeckBuilder; import forge.properties.ForgePreferences.FPref; import forge.util.ItemPool; +import forge.util.MyRandom; import forge.util.storage.IStorage; /** @@ -176,8 +177,12 @@ public enum CSubmenuSealed implements ICDoc { for (final String element : MagicColor.Constant.BASIC_LANDS) { final int numArt = Singletons.getMagicDb().getCommonCards().getArtCount(element, sd.getLandSetCode()); - for (int i = 0; i < numArt; i++) { - deck.get(DeckSection.Sideboard).add(element, sd.getLandSetCode(), i, numArt > 1 ? landsCount : 30); + if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_ART_POOLS)) { + for (int i = 0; i < numArt; i++) { + deck.get(DeckSection.Sideboard).add(element, sd.getLandSetCode(), i, numArt > 1 ? landsCount : 30); + } + } else { + deck.get(DeckSection.Sideboard).add(element, sd.getLandSetCode(), numArt > 1 ? MyRandom.getRandom().nextInt(numArt) : 0, 30); } } diff --git a/forge-gui/src/main/java/forge/gui/home/settings/CSubmenuPreferences.java b/forge-gui/src/main/java/forge/gui/home/settings/CSubmenuPreferences.java index 00f1e2bf95c..153348e2641 100644 --- a/forge-gui/src/main/java/forge/gui/home/settings/CSubmenuPreferences.java +++ b/forge-gui/src/main/java/forge/gui/home/settings/CSubmenuPreferences.java @@ -67,6 +67,7 @@ public enum CSubmenuPreferences implements ICDoc { lstControls.add(Pair.of(view.getCbAnte(), FPref.UI_ANTE)); lstControls.add(Pair.of(view.getCbManaBurn(), FPref.UI_MANABURN)); lstControls.add(Pair.of(view.getCbScaleLarger(), FPref.UI_SCALE_LARGER)); + lstControls.add(Pair.of(view.getCbRandomArtPools(), FPref.UI_RANDOM_ART_POOLS)); lstControls.add(Pair.of(view.getCbEnforceDeckLegality(), FPref.ENFORCE_DECK_LEGALITY)); lstControls.add(Pair.of(view.getCbCloneImgSource(), FPref.UI_CLONE_MODE_SOURCE)); lstControls.add(Pair.of(view.getCbRemoveSmall(), FPref.DECKGEN_NOSMALL)); diff --git a/forge-gui/src/main/java/forge/gui/home/settings/VSubmenuPreferences.java b/forge-gui/src/main/java/forge/gui/home/settings/VSubmenuPreferences.java index 778388d4869..f7cc08ac841 100644 --- a/forge-gui/src/main/java/forge/gui/home/settings/VSubmenuPreferences.java +++ b/forge-gui/src/main/java/forge/gui/home/settings/VSubmenuPreferences.java @@ -76,12 +76,13 @@ public enum VSubmenuPreferences implements IVSubmenu { private final JCheckBox cbManaBurn = new OptionsCheckBox("Mana Burn"); private final JCheckBox cbDevMode = new OptionsCheckBox("Developer Mode"); private final JCheckBox cbEnforceDeckLegality = new OptionsCheckBox("Deck Conformance"); - private final JCheckBox cbCloneImgSource = new OptionsCheckBox("Clones use original card art"); + private final JCheckBox cbCloneImgSource = new OptionsCheckBox("Clones Use Original Card Art"); private final JCheckBox cbScaleLarger = new OptionsCheckBox("Scale Image Larger"); private final JCheckBox cbRandomFoil = new OptionsCheckBox("Random Foil"); + private final JCheckBox cbRandomArtPools = new OptionsCheckBox("Randomize Card Art in Generated Card Pools"); private final JCheckBox cbEnableSounds = new OptionsCheckBox("Enable Sounds"); private final JCheckBox cbAltSoundSystem = new OptionsCheckBox("Use Alternate Sound System"); - private final JCheckBox cbUiForTouchScreen = new OptionsCheckBox("Enchance UI for touchscreens"); + private final JCheckBox cbUiForTouchScreen = new OptionsCheckBox("Enchance UI for Touchscreens"); private final JCheckBox cbCompactMainMenu = new OptionsCheckBox("Use Compact Main Sidebar Menu"); private final JCheckBox cbUseThemes = new OptionsCheckBox("Enable Themes"); private final JCheckBox cbPromptFreeBlocks = new OptionsCheckBox("Free Block Handling"); @@ -192,6 +193,9 @@ public enum VSubmenuPreferences implements IVSubmenu { pnlPrefs.add(cbScaleLarger, regularConstraints); pnlPrefs.add(new NoteLabel("Allows card pictures to be expanded larger than their original size."), regularConstraints); + pnlPrefs.add(cbRandomArtPools, regularConstraints); + pnlPrefs.add(new NoteLabel("Generates cards with random art in generated limited mode card pools."), regularConstraints); + pnlPrefs.add(cbUiForTouchScreen, regularConstraints); pnlPrefs.add(new NoteLabel("Increases some UI elements to provide a better experience on touchscreen devices. (Needs restart)"), regularConstraints); @@ -441,6 +445,11 @@ public enum VSubmenuPreferences implements IVSubmenu { return cbScaleLarger; } + /** @return {@link javax.swing.JCheckBox} */ + public JCheckBox getCbRandomArtPools() { + return cbScaleLarger; + } + /** @return {@link javax.swing.JCheckBox} */ public JCheckBox getCbDevMode() { return cbDevMode; diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java index cb6ebc9e95f..ac5b4bd5ac5 100644 --- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java @@ -57,6 +57,7 @@ public class ForgePreferences extends PreferencesStore { UI_HIDE_REMINDER_TEXT ("false"), UI_UPLOAD_DRAFT ("false"), UI_SCALE_LARGER ("true"), + UI_RANDOM_ART_POOLS ("true"), UI_COMPACT_PROMPT ("false"), UI_STACK_CARD_VIEW ("false"), UI_CARD_SIZE ("small"), diff --git a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java index 8c3fb0a8f10..acb45ebd680 100644 --- a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java +++ b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java @@ -47,6 +47,7 @@ import forge.item.InventoryItem; import forge.item.SealedProduct; import forge.item.PreconDeck; import forge.item.TournamentPack; +import forge.properties.ForgePreferences.FPref; import forge.quest.bazaar.QuestItemType; import forge.quest.data.GameFormatQuest; import forge.quest.data.QuestAssets; @@ -125,10 +126,15 @@ public final class QuestUtilCards { for (String landName : MagicColor.Constant.BASIC_LANDS) { int artCount = db.getArtCount(landName, landCode); - int[] artGroups = MyRandom.splitIntoRandomGroups(nBasic, artCount); - for (int i=0; i 1 ? MyRandom.getRandom().nextInt(artCount) : 0), nBasic); } }