diff --git a/src/main/java/forge/control/input/InputControl.java b/src/main/java/forge/control/input/InputControl.java index 01cccb60cbf..2d45e142391 100644 --- a/src/main/java/forge/control/input/InputControl.java +++ b/src/main/java/forge/control/input/InputControl.java @@ -148,6 +148,9 @@ public class InputControl extends MyObservable implements java.io.Serializable { * @return a {@link forge.control.input.Input} object. */ public final Input getActualInput() { + if ( !game.hasMulliganned() ) + return new InputMulligan(); + final PhaseHandler handler = game.getPhaseHandler(); final PhaseType phase = handler.getPhase(); final Player playerTurn = handler.getPlayerTurn(); diff --git a/src/main/java/forge/control/input/InputMulligan.java b/src/main/java/forge/control/input/InputMulligan.java index 6939ff93c8c..65989ff448f 100644 --- a/src/main/java/forge/control/input/InputMulligan.java +++ b/src/main/java/forge/control/input/InputMulligan.java @@ -174,7 +174,6 @@ public class InputMulligan extends Input { } ga.checkStateEffects(); - Singletons.getModel().getMatch().getInput().clearInput(); Player next = game.getPhaseHandler().getPlayerTurn(); @@ -187,7 +186,9 @@ public class InputMulligan extends Input { VField nextField = CMatchUI.SINGLETON_INSTANCE.getFieldViewFor(next); SDisplayUtil.showTab(nextField); - game.getPhaseHandler().nextPhase(); + game.setMulliganComplete(); + Singletons.getModel().getMatch().getInput().clearInput(); + Singletons.getModel().getMatch().getInput().resetInput(); } @Override diff --git a/src/main/java/forge/game/GameNew.java b/src/main/java/forge/game/GameNew.java index e80a1fa73c2..45ed843e9b5 100644 --- a/src/main/java/forge/game/GameNew.java +++ b/src/main/java/forge/game/GameNew.java @@ -23,16 +23,12 @@ import forge.CardUtil; import forge.Singletons; import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerType; -import forge.control.input.Input; -import forge.control.input.InputControl; -import forge.control.input.InputMulligan; import forge.deck.Deck; import forge.deck.CardPool; import forge.deck.DeckSection; import forge.error.BugReporter; import forge.game.event.FlipCoinEvent; import forge.game.phase.PhaseHandler; -import forge.game.phase.PhaseType; import forge.game.player.AIPlayer; import forge.game.player.LobbyPlayer; import forge.game.player.Player; @@ -389,18 +385,7 @@ public class GameNew { p.drawCards(p.getMaxHandSize()); } - - - game.getPhaseHandler().setPhaseState(PhaseType.MULLIGAN); - - InputControl control = match.getInput(); - Input tmp = new InputMulligan(); - control.setInput(tmp); - - Thread thGame = new GameInputUpdatesThread(match, game); - - match.getInput().getInput().showMessage(); thGame.setName("Game input updater"); thGame.start(); } // newGame() diff --git a/src/main/java/forge/game/GameState.java b/src/main/java/forge/game/GameState.java index ebe30d10398..5f84a1640c2 100644 --- a/src/main/java/forge/game/GameState.java +++ b/src/main/java/forge/game/GameState.java @@ -666,4 +666,8 @@ public class GameState { // TODO Auto-generated method stub return actionPlay; } + + public boolean mulliganned = false; + public boolean hasMulliganned(){ return mulliganned; } + public void setMulliganComplete() { mulliganned = true; } } diff --git a/src/main/java/forge/game/phase/PhaseHandler.java b/src/main/java/forge/game/phase/PhaseHandler.java index 97281b57b7a..17422cbf546 100644 --- a/src/main/java/forge/game/phase/PhaseHandler.java +++ b/src/main/java/forge/game/phase/PhaseHandler.java @@ -52,7 +52,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable { /** Constant serialVersionUID=5207222278370963197L. */ private static final long serialVersionUID = 5207222278370963197L; - private PhaseType phase = PhaseType.MULLIGAN; + private PhaseType phase = PhaseType.UNTAP; private int turn = 0; // Start turn at 0, so first untap step will turn it to 1 diff --git a/src/main/java/forge/game/phase/PhaseType.java b/src/main/java/forge/game/phase/PhaseType.java index 75616ee2b62..a75cc138b06 100644 --- a/src/main/java/forge/game/phase/PhaseType.java +++ b/src/main/java/forge/game/phase/PhaseType.java @@ -9,8 +9,6 @@ import org.apache.commons.lang3.StringUtils; public enum PhaseType { - MULLIGAN("Mulligan"), - // Note: Mulligan is not part of "All Phases" which are strictly ingame phases UNTAP("Untap"), UPKEEP("Upkeep"), DRAW("Draw"), diff --git a/src/main/java/forge/gui/InputProxy.java b/src/main/java/forge/gui/InputProxy.java index d767040375b..8219cd50199 100644 --- a/src/main/java/forge/gui/InputProxy.java +++ b/src/main/java/forge/gui/InputProxy.java @@ -52,7 +52,7 @@ public class InputProxy extends MyObservable implements Observer { * @param in * a {@link forge.control.input.Input} object. */ - public void setInput(final Input in) { + public final void setInput(final Input in) { valid = true; this.input = in; this.input.showMessage(); // this call may invalidate the input by the time it returns