diff --git a/.gitattributes b/.gitattributes index 095a9caa501..f03e2c87e6e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -13881,6 +13881,7 @@ src/main/java/forge/game/PlanarDice.java -text src/main/java/forge/game/PlayerStartConditions.java -text src/main/java/forge/game/ai/AiAttackController.java svneol=native#text/plain src/main/java/forge/game/ai/AiController.java svneol=native#text/plain +src/main/java/forge/game/ai/AiInput.java -text src/main/java/forge/game/ai/AiInputBlock.java -text src/main/java/forge/game/ai/AiInputCommon.java svneol=native#text/plain src/main/java/forge/game/ai/AiProfileUtil.java -text diff --git a/src/main/java/forge/game/ai/AiInput.java b/src/main/java/forge/game/ai/AiInput.java new file mode 100644 index 00000000000..1ab32ba2295 --- /dev/null +++ b/src/main/java/forge/game/ai/AiInput.java @@ -0,0 +1,8 @@ +package forge.game.ai; + +import forge.control.input.Input; + +// This interface indicates that the showMessage has to be invoked in a new pooled thread, not EDT. +public interface AiInput extends Input { + +} diff --git a/src/main/java/forge/game/ai/AiInputCommon.java b/src/main/java/forge/game/ai/AiInputCommon.java index 6af07ce9997..277e1f77e90 100644 --- a/src/main/java/forge/game/ai/AiInputCommon.java +++ b/src/main/java/forge/game/ai/AiInputCommon.java @@ -28,7 +28,7 @@ import forge.control.input.InputBase; * @author Forge * @version $Id$ */ -public class AiInputCommon extends InputBase { +public class AiInputCommon extends InputBase implements AiInput { /** Constant serialVersionUID=-3091338639571662216L. */ private static final long serialVersionUID = -3091338639571662216L; diff --git a/src/main/java/forge/gui/InputProxy.java b/src/main/java/forge/gui/InputProxy.java index 68c6c9a1f0e..17b2e107906 100644 --- a/src/main/java/forge/gui/InputProxy.java +++ b/src/main/java/forge/gui/InputProxy.java @@ -26,6 +26,7 @@ import forge.FThreads; import forge.control.input.Input; import forge.game.GameState; import forge.game.MatchController; +import forge.game.ai.AiInput; import forge.game.phase.PhaseHandler; import forge.game.player.Player; @@ -70,7 +71,11 @@ public class InputProxy implements Observer { if (nextInput != null) { this.input.set(nextInput); - FThreads.invokeInEDT(new Runnable() { @Override public void run() { nextInput.showMessage(); } }); + Runnable showMessage = new Runnable() { @Override public void run() { nextInput.showMessage(); } }; +// if( nextInput instanceof AiInput ) +// FThreads.invokeInNewThread(showMessage, true); +// else + FThreads.invokeInEDT(showMessage); } else if (!ph.isPlayerPriorityAllowed()) { ph.getPriorityPlayer().getController().passPriority(); }