From 1c6ccbb20a45398d9abbb99f1595f8970b6454c7 Mon Sep 17 00:00:00 2001 From: drdev Date: Wed, 8 Jan 2014 01:33:02 +0000 Subject: [PATCH] Make end turn button automatically pass priority if possible, and otherwise not end turn --- .../forge/game/player/PlayerController.java | 20 +++++------ .../src/main/java/forge/gui/InputProxy.java | 35 +++++++++++++++---- .../forge/gui/match/controllers/CDock.java | 5 ++- 3 files changed, 41 insertions(+), 19 deletions(-) diff --git a/forge-gui/src/main/java/forge/game/player/PlayerController.java b/forge-gui/src/main/java/forge/game/player/PlayerController.java index b203b8dc969..4958ed5b82f 100644 --- a/forge-gui/src/main/java/forge/game/player/PlayerController.java +++ b/forge-gui/src/main/java/forge/game/player/PlayerController.java @@ -64,7 +64,7 @@ public abstract class PlayerController { protected final Game game; - private PhaseType autoPassUntil = null; + private PhaseType autoPassUntilPhase = null; protected final Player player; protected final LobbyPlayer lobbyPlayer; @@ -75,21 +75,21 @@ public abstract class PlayerController { } /** - * TODO: Write javadoc for this method. - * @param cleanup + * Automatically pass priority until reaching the given phase of the current turn + * @param phase */ - public void autoPassTo(PhaseType cleanup) { - autoPassUntil = cleanup; + public void autoPassUntil(PhaseType phase) { + autoPassUntilPhase = phase; } + public void autoPassCancel() { - autoPassUntil = null; + autoPassUntilPhase = null; } public boolean mayAutoPass(PhaseType phase) { - return phase.isBefore(autoPassUntil); + return phase.isBefore(autoPassUntilPhase); } - // Triggers preliminary choice: ask, decline or play private Map triggersAlwaysAccept = new HashMap(); @@ -214,8 +214,4 @@ public abstract class PlayerController { // These 2 are for AI public List cheatShuffle(List list) { return list; } public Collection complainCardsCantPlayWell(Deck myDeck) { return null; } - - - - } diff --git a/forge-gui/src/main/java/forge/gui/InputProxy.java b/forge-gui/src/main/java/forge/gui/InputProxy.java index b18f735afb6..dabead2b7d0 100644 --- a/forge-gui/src/main/java/forge/gui/InputProxy.java +++ b/forge-gui/src/main/java/forge/gui/InputProxy.java @@ -29,6 +29,8 @@ import forge.game.card.Card; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.gui.input.Input; +import forge.gui.input.InputPassPriority; +import forge.gui.toolbox.FOptionPane; /** *

@@ -50,7 +52,23 @@ public class InputProxy implements Observer { game = game0; Singletons.getControl().getInputQueue().addObserver(this); } - + + public boolean passPriority() { + Input inp = getInput(); + if (inp != null && inp instanceof InputPassPriority) { + inp.selectButtonOK(); + return true; + } + + FThreads.invokeInEdtNowOrLater(new Runnable() { + @Override + public void run() { + FOptionPane.showMessageDialog("Cannot pass priority at this time."); + } + }); + return false; + } + @Override public final void update(final Observable observable, final Object obj) { final Input nextInput = Singletons.getControl().getInputQueue().getActualInput(game); @@ -79,8 +97,9 @@ public class InputProxy implements Observer { */ public final void selectButtonOK() { Input inp = getInput(); - if ( null != inp ) + if (inp != null) { inp.selectButtonOK(); + } } /** @@ -90,8 +109,9 @@ public class InputProxy implements Observer { */ public final void selectButtonCancel() { Input inp = getInput(); - if ( null != inp ) + if (inp != null) { inp.selectButtonCancel(); + } } /** @@ -104,8 +124,9 @@ public class InputProxy implements Observer { */ public final void selectPlayer(final Player player, final MouseEvent triggerEvent) { Input inp = getInput(); - if ( null != inp ) + if (inp != null) { inp.selectPlayer(player, triggerEvent); + } } /** @@ -119,14 +140,16 @@ public class InputProxy implements Observer { */ public final void selectCard(final Card card, final MouseEvent triggerEvent) { Input inp = getInput(); - if ( null != inp ) + if (inp != null) { inp.selectCard(card, triggerEvent); + } } public final void selectAbility(SpellAbility ab) { Input inp = getInput(); - if ( null != inp ) + if (inp != null) { inp.selectAbility(ab); + } } /** {@inheritDoc} */ diff --git a/forge-gui/src/main/java/forge/gui/match/controllers/CDock.java b/forge-gui/src/main/java/forge/gui/match/controllers/CDock.java index c8c63a23e92..ea50180e125 100644 --- a/forge-gui/src/main/java/forge/gui/match/controllers/CDock.java +++ b/forge-gui/src/main/java/forge/gui/match/controllers/CDock.java @@ -80,7 +80,10 @@ public enum CDock implements ICDoc { Player p = findAffectedPlayer(); if (p != null) { - p.getController().autoPassTo(PhaseType.CLEANUP); + p.getController().autoPassUntil(PhaseType.CLEANUP); + if (!CPrompt.SINGLETON_INSTANCE.getInputControl().passPriority()) { + p.getController().autoPassCancel(); + } } }