Support selecting cards

This commit is contained in:
drdev
2014-03-09 21:48:18 +00:00
parent e9b007db19
commit 891b1fa2fd
5 changed files with 26 additions and 12 deletions

View File

@@ -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;
}
}

View File

@@ -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<Player> 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();

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;
}
}
}