diff --git a/forge-game/src/main/java/forge/game/zone/Zone.java b/forge-game/src/main/java/forge/game/zone/Zone.java index dd046a3f2b4..f201e22f23d 100644 --- a/forge-game/src/main/java/forge/game/zone/Zone.java +++ b/forge-game/src/main/java/forge/game/zone/Zone.java @@ -63,6 +63,11 @@ public class Zone implements java.io.Serializable, Iterable { return null; } + public final void reorder(final Card c, final int index) { + cardList.remove(c); + cardList.add(index, c); + } + public final void add(final Card c) { add(c, null); } diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CHand.java b/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CHand.java index 401b07cfcf1..b2f29190ed3 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CHand.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/controllers/CHand.java @@ -71,6 +71,7 @@ public class CHand implements ICDoc { synchronized (ordering) { ordering.remove(dragPanel.getCard()); ordering.add(index, dragPanel.getCard()); + matchUI.getGameController(p0).reorderHand(dragPanel.getCard(), index); } } }); diff --git a/forge-gui/src/main/java/forge/interfaces/IGameController.java b/forge-gui/src/main/java/forge/interfaces/IGameController.java index a01334a21fc..e2f035df6e9 100644 --- a/forge-gui/src/main/java/forge/interfaces/IGameController.java +++ b/forge-gui/src/main/java/forge/interfaces/IGameController.java @@ -42,4 +42,6 @@ public interface IGameController { void nextGameDecision(NextGameDecision decision); String getActivateDescription(CardView card); + + void reorderHand(CardView card, int index); } diff --git a/forge-gui/src/main/java/forge/match/AbstractGuiGame.java b/forge-gui/src/main/java/forge/match/AbstractGuiGame.java index 4540333a0c2..9a783c65c65 100644 --- a/forge-gui/src/main/java/forge/match/AbstractGuiGame.java +++ b/forge-gui/src/main/java/forge/match/AbstractGuiGame.java @@ -74,6 +74,9 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards { public final IGameController getGameController() { return gameControllers.get(getCurrentPlayer()); } + public final IGameController getGameController(PlayerView p0) { + return gameControllers.get(p0); + } public final Collection getGameControllers() { return gameControllers.values(); } diff --git a/forge-gui/src/main/java/forge/net/NetGameController.java b/forge-gui/src/main/java/forge/net/NetGameController.java index b0ad5abc87f..d067b5032cf 100644 --- a/forge-gui/src/main/java/forge/net/NetGameController.java +++ b/forge-gui/src/main/java/forge/net/NetGameController.java @@ -126,4 +126,8 @@ public class NetGameController implements IGameController { send(methodName()); } + @Override + public void reorderHand(CardView card, int index) { + send(methodName(), card, index); + } } diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 955d6e44fdb..2b5b31ab913 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -80,6 +80,7 @@ import forge.game.spellability.TargetChoices; import forge.game.trigger.Trigger; import forge.game.trigger.WrappedAbility; import forge.game.zone.MagicStack; +import forge.game.zone.PlayerZone; import forge.game.zone.Zone; import forge.game.zone.ZoneType; import forge.interfaces.IDevModeCheats; @@ -1795,4 +1796,11 @@ public class PlayerControllerHuman public String getActivateDescription(final CardView card) { return getInputProxy().getActivateAction(card); } + + @Override + public void reorderHand(CardView card, int index) { + PlayerZone hand = player.getZone(ZoneType.Hand); + hand.reorder(game.getCard(card), index); + player.updateZoneForView(hand); + } }