From 891b1fa2fd8ce24749c3a4fb49ee393dcd82bb5c Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 9 Mar 2014 21:48:18 +0000 Subject: [PATCH] Support selecting cards --- .../src/forge/player/PlayerControllerHuman.java | 2 +- .../src/forge/screens/match/FControl.java | 9 ++++++++- .../src/forge/screens/match/views/VField.java | 1 - .../src/forge/screens/match/views/VPrompt.java | 11 +++-------- .../forge/screens/match/views/VZoneDisplay.java | 15 ++++++++++++++- 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/forge-m-base/src/forge/player/PlayerControllerHuman.java b/forge-m-base/src/forge/player/PlayerControllerHuman.java index 43eef609a1f..8a962f3bcdb 100644 --- a/forge-m-base/src/forge/player/PlayerControllerHuman.java +++ b/forge-m-base/src/forge/player/PlayerControllerHuman.java @@ -109,7 +109,7 @@ public class PlayerControllerHuman extends PlayerController { for (final SpellAbility ab : abilities) { if (ab.canPlay()) { - FControl.getView().getPrompt().getInputProxy().selectAbility(ab); + FControl.getInputProxy().selectAbility(ab); return ab; } } diff --git a/forge-m-base/src/forge/screens/match/FControl.java b/forge-m-base/src/forge/screens/match/FControl.java index c636c2fd938..c5c7ec038c7 100644 --- a/forge-m-base/src/forge/screens/match/FControl.java +++ b/forge-m-base/src/forge/screens/match/FControl.java @@ -30,6 +30,7 @@ import forge.screens.match.events.IUiEventVisitor; import forge.screens.match.events.UiEvent; import forge.screens.match.events.UiEventAttackerDeclared; import forge.screens.match.events.UiEventBlockerAssigned; +import forge.screens.match.input.InputProxy; import forge.screens.match.input.InputQueue; import forge.screens.match.views.VAssignDamage; import forge.screens.match.views.VPhaseIndicator.PhaseLabel; @@ -43,6 +44,7 @@ public class FControl { private static Game game; private static MatchScreen view; private static InputQueue inputQueue; + private static InputProxy inputProxy; private static List sortedPlayers; private static final EventBus uiEvents; private static boolean gameHasHumanPlayer; @@ -69,6 +71,7 @@ public class FControl { }*/ inputQueue = new InputQueue(); + inputProxy = new InputProxy(); //game.subscribeToEvents(Singletons.getControl().getSoundSystem()); @@ -77,7 +80,7 @@ public class FControl { initMatch(game.getRegisteredPlayers(), humanLobbyPlayer); FModel.getPreferences().actuateMatchPreferences(); - view.getPrompt().getInputProxy().setGame(game); + inputProxy.setGame(game); // Listen to DuelOutcome event to show ViewWinLose game.subscribeToEvents(fcVisitor); @@ -117,6 +120,10 @@ public class FControl { return inputQueue; } + public static InputProxy getInputProxy() { + return inputProxy; + } + public static boolean stopAtPhase(final Player turn, final PhaseType phase) { PhaseLabel label = getPlayerPanel(turn).getPhaseIndicator().getLabel(phase); return label == null || label.getStopAtPhase(); diff --git a/forge-m-base/src/forge/screens/match/views/VField.java b/forge-m-base/src/forge/screens/match/views/VField.java index abaaced3212..0f13f5df55e 100644 --- a/forge-m-base/src/forge/screens/match/views/VField.java +++ b/forge-m-base/src/forge/screens/match/views/VField.java @@ -1,6 +1,5 @@ package forge.screens.match.views; -import forge.game.card.Card; import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.toolbox.FCardPanel; diff --git a/forge-m-base/src/forge/screens/match/views/VPrompt.java b/forge-m-base/src/forge/screens/match/views/VPrompt.java index f1ad1c31ae5..cb8603a46c3 100644 --- a/forge-m-base/src/forge/screens/match/views/VPrompt.java +++ b/forge-m-base/src/forge/screens/match/views/VPrompt.java @@ -9,7 +9,7 @@ import forge.assets.FSkinColor; import forge.assets.FSkinFont; import forge.assets.FSkinColor.Colors; import forge.game.Game; -import forge.screens.match.input.InputProxy; +import forge.screens.match.FControl; import forge.toolbox.FButton; import forge.toolbox.FContainer; import forge.utils.Utils; @@ -23,20 +23,19 @@ public class VPrompt extends FContainer { private static final FSkinFont font = FSkinFont.get(11); private final FButton btnOk, btnCancel; - private final InputProxy inputProxy = new InputProxy(); private String message; public VPrompt() { btnOk = add(new FButton("Yes", new Runnable() { @Override public void run() { - inputProxy.selectButtonOK(); + FControl.getInputProxy().selectButtonOK(); } })); btnCancel = add(new FButton("No", new Runnable() { @Override public void run() { - inputProxy.selectButtonCancel(); + FControl.getInputProxy().selectButtonCancel(); } })); btnOk.setSize(BTN_WIDTH, HEIGHT); @@ -58,10 +57,6 @@ public class VPrompt extends FContainer { message = message0; } - public InputProxy getInputProxy() { - return inputProxy; - } - /** Flashes animation on input panel if play is currently waiting on input. */ public void remind() { //SDisplayUtil.remind(view); diff --git a/forge-m-base/src/forge/screens/match/views/VZoneDisplay.java b/forge-m-base/src/forge/screens/match/views/VZoneDisplay.java index bc59fc0bb26..d82ec3da303 100644 --- a/forge-m-base/src/forge/screens/match/views/VZoneDisplay.java +++ b/forge-m-base/src/forge/screens/match/views/VZoneDisplay.java @@ -7,6 +7,7 @@ import forge.FThreads; import forge.game.card.Card; import forge.game.player.Player; import forge.game.zone.ZoneType; +import forge.screens.match.FControl; import forge.toolbox.FCardPanel; import forge.toolbox.FScrollPane; @@ -42,7 +43,7 @@ public class VZoneDisplay extends FScrollPane { clear(); cardPanels.clear(); for (Card card : player.getZone(zoneType).getCards()) { - cardPanels.add(add(new FCardPanel(card))); + cardPanels.add(add(new ZoneCardPanel(card))); } revalidate(); } @@ -64,4 +65,16 @@ public class VZoneDisplay extends FScrollPane { x += cardWidth; } } + + private class ZoneCardPanel extends FCardPanel { + private ZoneCardPanel(Card card0) { + super(card0); + } + + @Override + public boolean tap(float x, float y, int count) { + FControl.getInputProxy().selectCard(getCard()); + return true; + } + } }