diff --git a/.gitattributes b/.gitattributes
index 67c2c030a39..6b39f85db5d 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -13796,6 +13796,7 @@ src/main/java/forge/control/Lobby.java -text
src/main/java/forge/control/RestartUtil.java -text
src/main/java/forge/control/bazaar/ControlStall.java -text
src/main/java/forge/control/bazaar/package-info.java svneol=native#text/plain
+src/main/java/forge/control/input/Input.java -text
src/main/java/forge/control/input/InputAttack.java svneol=native#text/plain
src/main/java/forge/control/input/InputBase.java svneol=native#text/plain
src/main/java/forge/control/input/InputBlock.java svneol=native#text/plain
diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java
index f5294e8462f..30c711189aa 100644
--- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java
+++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java
@@ -62,6 +62,7 @@ import forge.card.spellability.Target;
import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler;
import forge.card.trigger.TriggerType;
+import forge.control.input.Input;
import forge.control.input.InputBase;
import forge.control.input.InputSelectManyCards;
import forge.game.GameState;
@@ -2304,8 +2305,8 @@ public class CardFactoryUtil {
* a {@link java.lang.String} object.
* @return a {@link forge.control.input.InputBase} object.
*/
- public static InputBase inputUntapUpToNType(final int n, final String type) {
- final InputBase untap = new InputBase() {
+ public static Input inputUntapUpToNType(final int n, final String type) {
+ final Input untap = new InputBase() {
private static final long serialVersionUID = -2167059918040912025L;
private final int stop = n;
diff --git a/src/main/java/forge/control/input/Input.java b/src/main/java/forge/control/input/Input.java
new file mode 100644
index 00000000000..4d479e66eb8
--- /dev/null
+++ b/src/main/java/forge/control/input/Input.java
@@ -0,0 +1,23 @@
+package forge.control.input;
+
+import forge.Card;
+import forge.game.player.Player;
+
+/**
+ * TODO: Write javadoc for this type.
+ *
+ */
+public interface Input {
+
+ // showMessage() is always the first method called
+ void showMessage();
+
+ void selectCard(Card c);
+
+ void selectPlayer(Player player);
+
+ void selectButtonOK();
+
+ void selectButtonCancel();
+
+}
\ No newline at end of file
diff --git a/src/main/java/forge/control/input/InputBase.java b/src/main/java/forge/control/input/InputBase.java
index 00bbd3d5461..5bf79446e67 100644
--- a/src/main/java/forge/control/input/InputBase.java
+++ b/src/main/java/forge/control/input/InputBase.java
@@ -30,21 +30,21 @@ import forge.gui.match.CMatchUI;
* @author Forge
* @version $Id$
*/
-public abstract class InputBase implements java.io.Serializable {
+public abstract class InputBase implements java.io.Serializable, Input {
/** Constant serialVersionUID=-6539552513871194081L. */
private static final long serialVersionUID = -6539552513871194081L;
// showMessage() is always the first method called
- /**
- *
- * showMessage. - *
- */ + @Override public abstract void showMessage(); + @Override public void selectCard(final Card c) { } + @Override public void selectPlayer(final Player player) { } + @Override public void selectButtonOK() { } + @Override public void selectButtonCancel() { } // to remove need for CMatchUI dependence @@ -52,11 +52,7 @@ public abstract class InputBase implements java.io.Serializable { CMatchUI.SINGLETON_INSTANCE.showMessage(message); } - /** - *- * stop. - *
- */ + // called by input to cleanup. protected final void stop() { // clears a "temp" Input like Input_PayManaCost if there is one Singletons.getModel().getMatch().getInput().resetInput(); diff --git a/src/main/java/forge/control/input/InputControl.java b/src/main/java/forge/control/input/InputControl.java index 40fb534a3f2..f3a80c2f7d1 100644 --- a/src/main/java/forge/control/input/InputControl.java +++ b/src/main/java/forge/control/input/InputControl.java @@ -40,7 +40,7 @@ public class InputControl extends MyObservable implements java.io.Serializable { /** ConstantserialVersionUID=3955194449319994301L. */
private static final long serialVersionUID = 3955194449319994301L;
- private final Stack
@@ -50,7 +50,7 @@ public class InputControl extends MyObservable implements java.io.Serializable {
* @param in
* a {@link forge.control.input.InputBase} object.
*/
- public final void setInput(final InputBase in) {
+ public final void setInput(final Input in) {
//System.out.println(in.getClass().getName());
this.inputStack.push(in);
// System.out.print("Current: " + input + "; Stack = " + inputStack);
@@ -67,7 +67,7 @@ public class InputControl extends MyObservable implements java.io.Serializable {
* @param bAddToResolving
* a boolean.
*/
- public final void setInputInterrupt(final InputBase in) {
+ public final void setInputInterrupt(final Input in) {
// Make this
this.inputStack.push(in);
this.updateObservers();
@@ -80,7 +80,7 @@ public class InputControl extends MyObservable implements java.io.Serializable {
*
* @return a {@link forge.control.input.InputBase} object.
*/
- public final InputBase getInput() {
+ public final Input getInput() {
return this.inputStack.peek();
}
@@ -115,7 +115,7 @@ public class InputControl extends MyObservable implements java.io.Serializable {
*
* @return a {@link forge.control.input.InputBase} object.
*/
- public final InputBase getActualInput(GameState game) {
+ public final Input getActualInput(GameState game) {
if ( !game.hasMulliganned() )
return new InputMulligan();
@@ -197,7 +197,7 @@ public class InputControl extends MyObservable implements java.io.Serializable {
public final void setNewInput(GameState game) {
PhaseHandler ph = game.getPhaseHandler();
- final InputBase tmp = getActualInput(game);
+ 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/player/PlayerController.java b/src/main/java/forge/game/player/PlayerController.java
index 54adcae5c43..2986d93896a 100644
--- a/src/main/java/forge/game/player/PlayerController.java
+++ b/src/main/java/forge/game/player/PlayerController.java
@@ -8,7 +8,7 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
import forge.Card;
import forge.GameEntity;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputBase;
+import forge.control.input.Input;
import forge.deck.Deck;
import forge.game.GameState;
import forge.game.GameType;
@@ -32,9 +32,9 @@ public abstract class PlayerController {
public PlayerController(GameState game0) {
game = game0;
}
- public abstract InputBase getDefaultInput();
- public abstract InputBase getBlockInput();
- public abstract InputBase getCleanupInput();
+ public abstract Input getDefaultInput();
+ public abstract Input getBlockInput();
+ public abstract Input getCleanupInput();
/**
diff --git a/src/main/java/forge/game/player/PlayerControllerAi.java b/src/main/java/forge/game/player/PlayerControllerAi.java
index d27a40f21bb..27907610bb7 100644
--- a/src/main/java/forge/game/player/PlayerControllerAi.java
+++ b/src/main/java/forge/game/player/PlayerControllerAi.java
@@ -11,7 +11,7 @@ import forge.Card;
import forge.GameEntity;
import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputBase;
+import forge.control.input.Input;
import forge.deck.Deck;
import forge.game.GameState;
import forge.game.GameType;
@@ -32,15 +32,15 @@ import forge.gui.GuiChoose;
*/
public class PlayerControllerAi extends PlayerController {
- private InputBase defaultInput;
- private InputBase blockInput;
- private InputBase cleanupInput;
+ private Input defaultInput;
+ private Input blockInput;
+ private Input cleanupInput;
private final AiController brains;
private final AIPlayer player;
- public final InputBase getDefaultInput() {
+ public final Input getDefaultInput() {
return defaultInput;
}
@@ -70,14 +70,14 @@ public class PlayerControllerAi extends PlayerController {
}
/** Input to use when player has to declare blockers */
- public InputBase getBlockInput() {
+ public Input getBlockInput() {
return blockInput;
}
/**
* @return the cleanupInput
*/
- public InputBase getCleanupInput() {
+ public Input getCleanupInput() {
return cleanupInput;
}
diff --git a/src/main/java/forge/game/player/PlayerControllerHuman.java b/src/main/java/forge/game/player/PlayerControllerHuman.java
index 010ee9a122f..c63af118b8c 100644
--- a/src/main/java/forge/game/player/PlayerControllerHuman.java
+++ b/src/main/java/forge/game/player/PlayerControllerHuman.java
@@ -13,7 +13,7 @@ import org.apache.commons.lang3.tuple.ImmutablePair;
import forge.Card;
import forge.GameEntity;
import forge.card.spellability.SpellAbility;
-import forge.control.input.InputBase;
+import forge.control.input.Input;
import forge.control.input.InputBlock;
import forge.control.input.InputCleanup;
import forge.control.input.InputPassPriority;
@@ -38,12 +38,12 @@ import forge.item.CardPrinted;
*/
public class PlayerControllerHuman extends PlayerController {
- private final InputBase defaultInput;
- private final InputBase blockInput;
- private final InputBase cleanupInput;
+ private final Input defaultInput;
+ private final Input blockInput;
+ private final Input cleanupInput;
private final HumanPlayer player;
- public final InputBase getDefaultInput() {
+ public final Input getDefaultInput() {
return defaultInput;
}
@@ -75,14 +75,14 @@ public class PlayerControllerHuman extends PlayerController {
}
/** Input to use when player has to declare blockers */
- public InputBase getBlockInput() {
+ public Input getBlockInput() {
return blockInput;
}
/**
* @return the cleanupInput
*/
- public InputBase getCleanupInput() {
+ public Input getCleanupInput() {
return cleanupInput;
}
diff --git a/src/main/java/forge/game/player/PlayerUtil.java b/src/main/java/forge/game/player/PlayerUtil.java
index 4097a36be18..5f09094af51 100644
--- a/src/main/java/forge/game/player/PlayerUtil.java
+++ b/src/main/java/forge/game/player/PlayerUtil.java
@@ -23,6 +23,7 @@ import forge.Card;
import forge.CardLists;
import forge.Singletons;
import forge.card.spellability.SpellAbility;
+import forge.control.input.Input;
import forge.control.input.InputBase;
import forge.game.zone.Zone;
import forge.game.zone.ZoneType;
@@ -57,9 +58,9 @@ public final class PlayerUtil {
* @return a {@link forge.control.input.InputBase} object.
* @since 1.0.15
*/
- public static InputBase inputDiscardNumUnless(final int nCards, final String uType, final SpellAbility sa) {
+ public static Input inputDiscardNumUnless(final int nCards, final String uType, final SpellAbility sa) {
final SpellAbility sp = sa;
- final InputBase target = new InputBase() {
+ final Input target = new InputBase() {
private static final long serialVersionUID = 8822292413831640944L;
private int n = 0;
@@ -114,9 +115,9 @@ public final class PlayerUtil {
* @return a {@link forge.control.input.InputBase} object.
* @since 1.0.15
*/
- public static InputBase inputDiscard(final int nCards, final SpellAbility sa) {
+ public static Input inputDiscard(final int nCards, final SpellAbility sa) {
final SpellAbility sp = sa;
- final InputBase target = new InputBase() {
+ final Input target = new InputBase() {
private static final long serialVersionUID = -329993322080934435L;
private int n = 0;
@@ -165,7 +166,7 @@ public final class PlayerUtil {
* @return a {@link forge.control.input.InputBase} object.
* @since 1.0.15
*/
- public static InputBase inputSacrificePermanents(final int nCards, final String type) {
+ public static Input inputSacrificePermanents(final int nCards, final String type) {
final List