diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java index 47807f07e68..562b0828727 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java @@ -115,6 +115,7 @@ public enum CSubmenuPreferences implements ICDoc { lstControls.add(Pair.of(view.getCbCompactPrompt(), FPref.UI_COMPACT_PROMPT)); lstControls.add(Pair.of(view.getCbHideReminderText(), FPref.UI_HIDE_REMINDER_TEXT)); lstControls.add(Pair.of(view.getCbOpenPacksIndiv(), FPref.UI_OPEN_PACKS_INDIV)); + lstControls.add(Pair.of(view.getCbTokensInSeparateRow(), FPref.UI_TOKENS_IN_SEPARATE_ROW)); lstControls.add(Pair.of(view.getCbStackCreatures(), FPref.UI_STACK_CREATURES)); lstControls.add(Pair.of(view.getCbManaLostPrompt(), FPref.UI_MANA_LOST_PROMPT)); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java index 31670e671fd..7510c422380 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java @@ -96,6 +96,7 @@ public enum VSubmenuPreferences implements IVSubmenu { private final JCheckBox cbCompactPrompt = new OptionsCheckBox("Compact Prompt"); private final JCheckBox cbHideReminderText = new OptionsCheckBox("Hide Reminder Text"); private final JCheckBox cbOpenPacksIndiv = new OptionsCheckBox("Open Packs Individually"); + private final JCheckBox cbTokensInSeparateRow = new OptionsCheckBox("Display Tokens on a Separate Row"); private final JCheckBox cbStackCreatures = new OptionsCheckBox("Stack Creatures"); private final Map shortcutFields = new HashMap(); @@ -236,6 +237,9 @@ public enum VSubmenuPreferences implements IVSubmenu { pnlPrefs.add(cbOpenPacksIndiv, regularConstraints); pnlPrefs.add(new NoteLabel("When opening Fat Packs and Booster Boxes, booster packs will be opened and displayed one at a time."), regularConstraints); + pnlPrefs.add(cbTokensInSeparateRow, regularConstraints); + pnlPrefs.add(new NoteLabel("Displays tokens in a separate row on the battlefield below the non-token creatures."), regularConstraints); + pnlPrefs.add(cbStackCreatures, regularConstraints); pnlPrefs.add(new NoteLabel("Stacks identical creatures on the battlefield like lands, artifacts, and enchantments."), regularConstraints); @@ -568,6 +572,10 @@ public enum VSubmenuPreferences implements IVSubmenu { return cbOpenPacksIndiv; } + public final JCheckBox getCbTokensInSeparateRow() { + return cbTokensInSeparateRow; + } + public final JCheckBox getCbStackCreatures() { return cbStackCreatures; } diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java b/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java index 8460b148b19..9e4cc71b141 100644 --- a/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java +++ b/forge-gui-desktop/src/main/java/forge/view/arcane/PlayArea.java @@ -32,6 +32,8 @@ import forge.game.card.CardView; import forge.game.card.CardView.CardStateView; import forge.game.player.PlayerView; import forge.game.zone.ZoneType; +import forge.model.FModel; +import forge.properties.ForgePreferences; import forge.screens.match.CMatchUI; import forge.toolbox.FScrollPane; import forge.toolbox.MouseTriggerEvent; @@ -73,12 +75,15 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen private final PlayerView model; private final ZoneType zone; + private boolean makeTokenRow = true; + public PlayArea(final CMatchUI matchUI, final FScrollPane scrollPane, final boolean mirror, final PlayerView player, final ZoneType zone) { super(matchUI, scrollPane); this.setBackground(Color.white); this.mirror = mirror; this.model = player; this.zone = zone; + this.makeTokenRow = FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_TOKENS_IN_SEPARATE_ROW); } private final CardStackRow collectAllLands() { @@ -249,7 +254,7 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen return placeholder; } - @Override + @Override public final void doLayout() { final Rectangle rect = this.getScrollPane().getVisibleRect(); @@ -263,6 +268,18 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen final CardStackRow creatures = new CardStackRow(this.getCardPanels(), RowType.CreatureNonToken); final CardStackRow others = new CardStackRow(this.getCardPanels(), RowType.Other); + if (!makeTokenRow) { + for (CardStack s : tokens) { + if (!s.isEmpty()) { + if (s.get(0).getCard().getCurrentState().isCreature()) { + creatures.add(s); + } else { + others.add(s); + } + } + } + tokens.clear(); + } /*if (FModel.getPreferences().getPrefBoolean(FPref.UI_STACK_CREATURES) && !collectedCreatures.isEmpty()) { creatures = collectedCreatures; diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java index 7e3ba1086d7..7602436ae85 100644 --- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java @@ -77,6 +77,7 @@ public class ForgePreferences extends PreferencesStore { UI_CLOSE_ACTION ("NONE"), UI_MANA_LOST_PROMPT ("false"), // Prompt on losing mana when passing priority UI_PAUSE_WHILE_MINIMIZED("false"), + UI_TOKENS_IN_SEPARATE_ROW("true"), // Display tokens on their own battlefield row. UI_FOR_TOUCHSCREN("false"),