From c3f7facedf4630ad1b0832f2227c280d5c660265 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Sat, 23 Mar 2013 12:14:18 +0000 Subject: [PATCH] untied dependencies in newGame, made input field in match final --- src/main/java/forge/FThreads.java | 1 + .../forge/control/input/InputControl.java | 19 ++++--------------- src/main/java/forge/game/GameActionPlay.java | 9 +++------ src/main/java/forge/game/GameState.java | 6 ++++-- src/main/java/forge/game/MatchController.java | 6 ++---- src/main/java/forge/model/FModel.java | 6 ++++-- 6 files changed, 18 insertions(+), 29 deletions(-) diff --git a/src/main/java/forge/FThreads.java b/src/main/java/forge/FThreads.java index 4bbc6d32824..e7cffef6876 100644 --- a/src/main/java/forge/FThreads.java +++ b/src/main/java/forge/FThreads.java @@ -106,6 +106,7 @@ public class FThreads { } public static final void setInputAndWait(Input inp, CountDownLatch cdl) { + checkEDT("FThreads.setInputAndWait", false); Singletons.getModel().getMatch().getInput().setInputInterrupt(inp); try { cdl.await(); diff --git a/src/main/java/forge/control/input/InputControl.java b/src/main/java/forge/control/input/InputControl.java index 00499c62e86..00eb7d44063 100644 --- a/src/main/java/forge/control/input/InputControl.java +++ b/src/main/java/forge/control/input/InputControl.java @@ -42,17 +42,6 @@ public class InputControl extends MyObservable implements java.io.Serializable { private final Stack inputStack = new Stack(); - private final transient GameState game; - /** - * TODO Write javadoc for Constructor. - * - * @param fModel - * the f model - */ - public InputControl(final GameState game0) { - this.game = game0; - } - /** *

* Setter for the field input. @@ -126,7 +115,7 @@ public class InputControl extends MyObservable implements java.io.Serializable { * * @return a {@link forge.control.input.Input} object. */ - public final Input getActualInput() { + public final Input getActualInput(GameState game) { if ( !game.hasMulliganned() ) return new InputMulligan(); @@ -146,7 +135,7 @@ public class InputControl extends MyObservable implements java.io.Serializable { if (handler.hasPhaseEffects()) { // Handle begin phase stuff, then start back from the top handler.handleBeginPhase(); - return this.getActualInput(); + return this.getActualInput(game); } // If the Phase we're in doesn't allow for Priority, return null to move @@ -196,7 +185,7 @@ public class InputControl extends MyObservable implements java.io.Serializable { // priority boolean prioritySkip = pc.mayAutoPass(phase) || pc.isUiSetToSkipPhase(playerTurn, phase); - if (this.game.getStack().isEmpty() && prioritySkip) { + if (game.getStack().isEmpty() && prioritySkip) { pc.passPriority(); return null; } else @@ -208,7 +197,7 @@ public class InputControl extends MyObservable implements java.io.Serializable { public final void setNewInput(GameState game) { PhaseHandler ph = game.getPhaseHandler(); - final Input tmp = getActualInput(); + final Input tmp = getActualInput(game); String message = String.format("%s's %s, priority of %s [%sP] input is %s \t stack:%s", ph.getPlayerTurn(), ph.getPhase(), ph.getPriorityPlayer(), ph.isPlayerPriorityAllowed() ? "+" : "-", tmp == null ? "null" : tmp.getClass().getSimpleName(), inputStack); System.out.println(message); diff --git a/src/main/java/forge/game/GameActionPlay.java b/src/main/java/forge/game/GameActionPlay.java index 410612154c6..f86d7f486b1 100644 --- a/src/main/java/forge/game/GameActionPlay.java +++ b/src/main/java/forge/game/GameActionPlay.java @@ -40,15 +40,12 @@ import forge.gui.GuiChoose; public class GameActionPlay { private final GameState game; - private InputControl matchInput; + private final InputControl matchInput; - public GameActionPlay(final GameState game0) { + public GameActionPlay(final GameState game0, InputControl input) { game = game0; - } - - void setMatchInput(InputControl input) { - this.matchInput = input; // TODO: Add 0 to parameter's name. + this.matchInput = input; } public final void playCardWithoutManaCost(final Card c, Player player) { diff --git a/src/main/java/forge/game/GameState.java b/src/main/java/forge/game/GameState.java index c21dafd7941..be39982929c 100644 --- a/src/main/java/forge/game/GameState.java +++ b/src/main/java/forge/game/GameState.java @@ -37,6 +37,7 @@ import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbilityStackInstance; import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerType; +import forge.control.input.InputControl; import forge.game.phase.Cleanup; import forge.game.phase.Combat; import forge.game.phase.EndOfCombat; @@ -95,8 +96,9 @@ public class GameState { * Constructor. * @param players2 * @param match0 + * @param input */ - public GameState(Iterable players2, GameType t, MatchController match0) { /* no more zones to map here */ + public GameState(Iterable players2, GameType t, MatchController match0, InputControl input) { /* no more zones to map here */ type = t; List players = new ArrayList(); for (LobbyPlayer p : players2) { @@ -108,7 +110,7 @@ public class GameState { allPlayers = Collections.unmodifiableList(players); roIngamePlayers = Collections.unmodifiableList(ingamePlayers); action = new GameAction(this); - actionPlay = new GameActionPlay(this); + actionPlay = new GameActionPlay(this, input); stack = new MagicStack(this); phaseHandler = new PhaseHandler(this); diff --git a/src/main/java/forge/game/MatchController.java b/src/main/java/forge/game/MatchController.java index 011bb10f14d..48b913e3e37 100644 --- a/src/main/java/forge/game/MatchController.java +++ b/src/main/java/forge/game/MatchController.java @@ -129,10 +129,8 @@ public class MatchController { public void startRound() { // Deal with circular dependencies here - currentGame = Singletons.getModel().newGame(players.keySet(),gameType, this); - input = new InputControl(currentGame); - currentGame.getActionPlay().setMatchInput(input); - + input = new InputControl(); + currentGame = Singletons.getModel().newGame(players.keySet(),gameType, this, input); Map startConditions = new HashMap(); for (Player p : currentGame.getPlayers()) { diff --git a/src/main/java/forge/model/FModel.java b/src/main/java/forge/model/FModel.java index a90fc986e3c..95699274225 100644 --- a/src/main/java/forge/model/FModel.java +++ b/src/main/java/forge/model/FModel.java @@ -35,6 +35,7 @@ import forge.card.EditionCollection; import forge.card.FatPackData; import forge.card.FormatCollection; import forge.card.cardfactory.CardStorageReader; +import forge.control.input.InputControl; import forge.deck.CardCollections; import forge.error.BugReporter; import forge.error.ExceptionHandler; @@ -401,9 +402,10 @@ public enum FModel { /** * TODO: Write javadoc for this method. * @param players + * @param input */ - public GameState newGame(Iterable players, GameType type, final MatchController match0) { - gameState = new GameState(players,type, match0); + public GameState newGame(Iterable players, GameType type, final MatchController match0, InputControl input) { + gameState = new GameState(players,type, match0, input); return gameState; }