From d5c1582029cf0b959d75e8d4ddc1f1fbc091cbc7 Mon Sep 17 00:00:00 2001 From: Agetian Date: Tue, 7 Mar 2017 15:37:45 +0000 Subject: [PATCH] - Added a way to show the current storm count in the prompt pane (in desktop Forge) or prompt panel (in mobile Forge), it is optional and disabled by default (probably only useful for decks that rely on Storm and might clutter the prompt panel a bit in mobile Forge and thus make the text smaller). Can be enabled in Forge preferences via the "Show Storm Count in Prompt Pane/Panel" option. --- .../main/java/forge/gui/framework/SDisplayUtil.java | 8 +------- .../screens/home/settings/CSubmenuPreferences.java | 1 + .../screens/home/settings/VSubmenuPreferences.java | 8 ++++++++ .../src/forge/screens/settings/SettingsPage.java | 4 ++++ .../src/main/java/forge/match/input/InputBase.java | 12 ++++++++++-- .../main/java/forge/properties/ForgePreferences.java | 1 + 6 files changed, 25 insertions(+), 9 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/gui/framework/SDisplayUtil.java b/forge-gui-desktop/src/main/java/forge/gui/framework/SDisplayUtil.java index 726ff7a84d3..7d78b5eeeaa 100644 --- a/forge-gui-desktop/src/main/java/forge/gui/framework/SDisplayUtil.java +++ b/forge-gui-desktop/src/main/java/forge/gui/framework/SDisplayUtil.java @@ -18,7 +18,6 @@ import javax.swing.JPanel; import javax.swing.SwingUtilities; import forge.FThreads; -import forge.toolbox.FButton; import forge.view.FFrame; /** @@ -109,17 +108,12 @@ public class SDisplayUtil { dc.setSelected(tab0); } // set focus back to previous owner, if any - // if (null != c && c instanceof FButton) { //pfps UGLY but maybe necessary (probably not) if (null != c) { c.requestFocusInWindow(); } } }; - if ( FThreads.isGuiThread() ) { //pfps run this now whether in EDT or not so that it doesn't clobber later stuff - FThreads.invokeInEdtNowOrLater(showTabRoutine); - } else { - FThreads.invokeInEdtAndWait(showTabRoutine); - } + FThreads.invokeInEdtLater(showTabRoutine); } public static GraphicsDevice getGraphicsDevice(final Point point) { 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 9f23081db88..5dc54998981 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 @@ -118,6 +118,7 @@ public enum CSubmenuPreferences implements ICDoc { lstControls.add(Pair.of(view.getCbEscapeEndsTurn(), FPref.UI_ALLOW_ESC_TO_END_TURN)); lstControls.add(Pair.of(view.getCbDetailedPaymentDesc(), FPref.UI_DETAILED_SPELLDESC_IN_PROMPT)); lstControls.add(Pair.of(view.getCbPreselectPrevAbOrder(), FPref.UI_PRESELECT_PREVIOUS_ABILITY_ORDER)); + lstControls.add(Pair.of(view.getCbShowStormCount(), FPref.UI_SHOW_STORM_COUNT_IN_PROMPT)); lstControls.add(Pair.of(view.getCbFilterLandsByColorId(), FPref.UI_FILTER_LANDS_BY_COLOR_IDENTITY)); 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 7f7d06edf0d..7a0c886d159 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 @@ -89,6 +89,7 @@ public enum VSubmenuPreferences implements IVSubmenu { private final JCheckBox cbTokensInSeparateRow = new OptionsCheckBox("Display Tokens in a Separate Row"); private final JCheckBox cbStackCreatures = new OptionsCheckBox("Stack Creatures"); private final JCheckBox cbFilterLandsByColorId = new OptionsCheckBox("Filter Lands by Color in Activated Abilities"); + private final JCheckBox cbShowStormCount = new OptionsCheckBox("Show Storm Count in Prompt Pane"); private final Map shortcutFields = new HashMap<>(); @@ -173,6 +174,9 @@ public enum VSubmenuPreferences implements IVSubmenu { pnlPrefs.add(cbDetailedPaymentDesc, regularConstraints); pnlPrefs.add(new NoteLabel("When enabled, detailed spell/ability descriptions are shown when choosing targets and paying costs."), regularConstraints); + pnlPrefs.add(cbShowStormCount, regularConstraints); + pnlPrefs.add(new NoteLabel("When enabled, displays the current storm count in the prompt pane."), regularConstraints); + pnlPrefs.add(cbPreselectPrevAbOrder, regularConstraints); pnlPrefs.add(new NoteLabel("When enabled, preselects the last defined simultaneous ability order in the ordering dialog."), regularConstraints); @@ -635,6 +639,10 @@ public enum VSubmenuPreferences implements IVSubmenu { return cbDetailedPaymentDesc; } + public final JCheckBox getCbShowStormCount() { + return cbShowStormCount; + } + public final JCheckBox getCbPreselectPrevAbOrder() { return cbPreselectPrevAbOrder; } diff --git a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java index cd98802218d..c112bcaea9b 100644 --- a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java @@ -122,6 +122,10 @@ public class SettingsPage extends TabPage { "Spell Description in Payment Prompt", "When enabled, detailed spell/ability descriptions are shown when choosing targets and paying costs."), 1); + lstSettings.addItem(new BooleanSetting(FPref.UI_SHOW_STORM_COUNT_IN_PROMPT, + "Show Storm Count in Prompt Panel", + "When enabled, displays the current storm count in the prompt panel."), + 1); lstSettings.addItem(new BooleanSetting(FPref.UI_PRESELECT_PREVIOUS_ABILITY_ORDER, "Preselect Last Order of Abilities", "When enabled, preselects the last defined simultaneous ability order in the ordering dialog."), diff --git a/forge-gui/src/main/java/forge/match/input/InputBase.java b/forge-gui/src/main/java/forge/match/input/InputBase.java index 4a46f79e7c5..fb412ac3979 100644 --- a/forge-gui/src/main/java/forge/match/input/InputBase.java +++ b/forge-gui/src/main/java/forge/match/input/InputBase.java @@ -27,7 +27,9 @@ import forge.game.player.Player; import forge.game.player.PlayerView; import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbilityView; +import forge.model.FModel; import forge.player.PlayerControllerHuman; +import forge.properties.ForgePreferences; import forge.util.ITriggerEvent; /** @@ -135,9 +137,15 @@ public abstract class InputBase implements java.io.Serializable, Input { sb.append("Phase: ").append(ph.getPhase().nameForUi).append("\n"); sb.append("Stack: "); if (!game.getStack().isEmpty()) { - sb.append(game.getStack().size()).append(" to Resolve."); + sb.append(game.getStack().size()).append(" to Resolve.\n"); } else { - sb.append("Empty"); + sb.append("Empty\n"); + } + if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_SHOW_STORM_COUNT_IN_PROMPT)) { + int stormCount = game.getView().getStormCount(); + if (stormCount > 0) { + sb.append("Storm Count: ").append(stormCount).append("\n"); + } } return sb.toString(); } diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java index 3d0fb8e3854..e51bec3e366 100644 --- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java @@ -87,6 +87,7 @@ public class ForgePreferences extends PreferencesStore { UI_ALLOW_ESC_TO_END_TURN ("false"), UI_PRESELECT_PREVIOUS_ABILITY_ORDER ("false"), UI_AUTO_YIELD_MODE (ForgeConstants.AUTO_YIELD_PER_ABILITY), + UI_SHOW_STORM_COUNT_IN_PROMPT ("false"), UI_FOR_TOUCHSCREN("false"),