From 2a74eb266c05918baac93cc011823a26a4167d9e Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 10 Sep 2015 07:04:11 +0000 Subject: [PATCH] - Added keyboard shortcuts to auto yield the current ability on the stack and, if applicable, respond "Always Yes" or "Always No" at the same time. - By default set to Y (which enables auto yield for the item on stack and sets "Always Yes" if applicable) and N (which enables auto yield for the item on stack and sets "Always No" if applicable). --- .../java/forge/control/KeyboardShortcuts.java | 40 +++++++++++++++++++ .../forge/properties/ForgePreferences.java | 4 +- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/forge-gui-desktop/src/main/java/forge/control/KeyboardShortcuts.java b/forge-gui-desktop/src/main/java/forge/control/KeyboardShortcuts.java index 1b099bd415a..990d0b4af54 100644 --- a/forge-gui-desktop/src/main/java/forge/control/KeyboardShortcuts.java +++ b/forge-gui-desktop/src/main/java/forge/control/KeyboardShortcuts.java @@ -17,6 +17,7 @@ import javax.swing.KeyStroke; import org.apache.commons.lang3.StringUtils; import forge.Singletons; +import forge.game.spellability.StackItemView; import forge.gui.framework.EDocID; import forge.gui.framework.SDisplayUtil; import forge.model.FModel; @@ -131,6 +132,43 @@ public class KeyboardShortcuts { } }; + /** Auto-yield current item on stack (and respond Always Yes if applicable). */ + final Action actAutoYieldAndYes = new AbstractAction() { + @Override + public void actionPerformed(final ActionEvent e) { + if (!Singletons.getControl().getCurrentScreen().isMatchScreen()) { return; } + if (matchUI == null) { return; } + StackItemView si = matchUI.getGameView().peekStack(); + if (si != null && si.isAbility()) { + matchUI.setShouldAutoYield(si.getKey(), true); + int triggerID = Integer.valueOf(si.getSourceTrigger()); + if (si.isOptionalTrigger() && matchUI.isLocalPlayer(si.getActivatingPlayer())) { + matchUI.setShouldAlwaysAcceptTrigger(triggerID); + } + matchUI.getGameController().passPriority(); + } + } + }; + + /** Auto-yield current item on stack (and respond Always No if applicable). */ + final Action actAutoYieldAndNo = new AbstractAction() { + @Override + public void actionPerformed(final ActionEvent e) { + if (!Singletons.getControl().getCurrentScreen().isMatchScreen()) { return; } + if (matchUI == null) { return; } + StackItemView si = matchUI.getGameView().peekStack(); + if (si != null && si.isAbility()) { + matchUI.setShouldAutoYield(si.getKey(), true); + int triggerID = Integer.valueOf(si.getSourceTrigger()); + if (si.isOptionalTrigger() && matchUI.isLocalPlayer(si.getActivatingPlayer())) { + matchUI.setShouldAlwaysDeclineTrigger(triggerID); + } + matchUI.getGameController().passPriority(); + } + } + }; + + //========== Instantiate shortcut objects and add to list. list.add(new Shortcut(FPref.SHORTCUT_SHOWSTACK, "Match: show stack panel", actShowStack, am, im)); list.add(new Shortcut(FPref.SHORTCUT_SHOWCOMBAT, "Match: show combat panel", actShowCombat, am, im)); @@ -140,6 +178,8 @@ public class KeyboardShortcuts { list.add(new Shortcut(FPref.SHORTCUT_ENDTURN, "Match: pass priority until EOT or next stack event", actEndTurn, am, im)); list.add(new Shortcut(FPref.SHORTCUT_ALPHASTRIKE, "Match: Alpha Strike (attack with all available)", actAllAttack, am, im)); list.add(new Shortcut(FPref.SHORTCUT_SHOWTARGETING, "Match: toggle targeting visual overlay", actTgtOverlay, am, im)); + list.add(new Shortcut(FPref.SHORTCUT_AUTOYIELD_ALWAYS_YES, "Match: auto-yield ability on stack (Always Yes)", actAutoYieldAndYes, am, im)); + list.add(new Shortcut(FPref.SHORTCUT_AUTOYIELD_ALWAYS_NO, "Match: auto-yield ability on stack (Always No)", actAutoYieldAndNo, am, im)); return list; } // End initMatchShortcuts() diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java index 994659f2d31..711f3806234 100644 --- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java @@ -161,7 +161,9 @@ public class ForgePreferences extends PreferencesStore { SHORTCUT_CONCEDE ("17"), SHORTCUT_ENDTURN ("69"), SHORTCUT_ALPHASTRIKE ("65"), - SHORTCUT_SHOWTARGETING ("84"); + SHORTCUT_SHOWTARGETING ("84"), + SHORTCUT_AUTOYIELD_ALWAYS_YES ("89"), + SHORTCUT_AUTOYIELD_ALWAYS_NO ("78"); private final String strDefaultVal;