From 89fd88ad1d30d3b42665b227b33d7bbbd717fa76 Mon Sep 17 00:00:00 2001 From: drdev Date: Tue, 30 Sep 2014 18:23:42 +0000 Subject: [PATCH] Allow all overlays to face top human player if needed Allow top human player to concede --- forge-gui-mobile/src/forge/card/CardZoom.java | 5 -- .../src/forge/toolbox/FOverlay.java | 4 ++ .../src/main/java/forge/match/MatchUtil.java | 49 +++++++------------ 3 files changed, 23 insertions(+), 35 deletions(-) diff --git a/forge-gui-mobile/src/forge/card/CardZoom.java b/forge-gui-mobile/src/forge/card/CardZoom.java index b3c24668f52..d65e277c23d 100644 --- a/forge-gui-mobile/src/forge/card/CardZoom.java +++ b/forge-gui-mobile/src/forge/card/CardZoom.java @@ -6,8 +6,6 @@ import forge.Graphics; import forge.assets.FSkinColor; import forge.assets.FSkinFont; import forge.item.IPaperCard; -import forge.match.MatchUtil; -import forge.screens.match.MatchController; import forge.toolbox.FList; import forge.toolbox.FOverlay; import forge.util.Utils; @@ -23,13 +21,10 @@ public class CardZoom extends FOverlay { public static void show(final IPaperCard pc0) { card = ViewUtil.getCardForUi(pc0); - cardZoom.setRotate180(false); cardZoom.show(); } public static void show(final CardView card0) { card = card0; - //rotate card zoom to face top human player if needed - cardZoom.setRotate180(MatchUtil.getGame() != null && MatchController.getView().isTopHumanPlayerActive()); cardZoom.show(); } diff --git a/forge-gui-mobile/src/forge/toolbox/FOverlay.java b/forge-gui-mobile/src/forge/toolbox/FOverlay.java index 9326157a661..c2ccddc47f2 100644 --- a/forge-gui-mobile/src/forge/toolbox/FOverlay.java +++ b/forge-gui-mobile/src/forge/toolbox/FOverlay.java @@ -10,6 +10,8 @@ import forge.Forge; import forge.Graphics; import forge.assets.FSkinColor; import forge.assets.FSkinColor.Colors; +import forge.match.MatchUtil; +import forge.screens.match.MatchController; public abstract class FOverlay extends FContainer { public static final float ALPHA_COMPOSITE = 0.5f; @@ -73,6 +75,8 @@ public abstract class FOverlay extends FContainer { } if (visible0) { + //rotate overlay to face top human player if needed + setRotate180(MatchUtil.getGame() != null && MatchController.getView().isTopHumanPlayerActive()); overlays.push(this); } else if (!hidingAll) { //hiding all handles cleaning up overlay collection diff --git a/forge-gui/src/main/java/forge/match/MatchUtil.java b/forge-gui/src/main/java/forge/match/MatchUtil.java index 8fcde2bc191..14d21a33947 100644 --- a/forge-gui/src/main/java/forge/match/MatchUtil.java +++ b/forge-gui/src/main/java/forge/match/MatchUtil.java @@ -358,40 +358,29 @@ public class MatchUtil { "This will end the current game and you will not be able to resume.\n\n" + "Concede anyway?"; if (SOptionPane.showConfirmDialog(GuiBase.getInterface(), userPrompt, "Concede Game?", "Concede", "Cancel")) { - stopGame(); - } - } - - public static void stopGame() { - List pp = new ArrayList(); - for (Player p : game.getPlayers()) { - if (p.getOriginalLobbyPlayer() == getGuiPlayer()) { - pp.add(p); + if (humanCount == 0) { // no human? then all players surrender! + for (Player p : game.getPlayers()) { + p.concede(); + } + } + else { + getCurrentPlayer().concede(); } - } - boolean hasHuman = !pp.isEmpty(); - if (pp.isEmpty()) { - pp.addAll(game.getPlayers()); // no human? then all players surrender! - } + Player priorityPlayer = game.getPhaseHandler().getPriorityPlayer(); + boolean humanHasPriority = priorityPlayer == null || priorityPlayer.getLobbyPlayer() == getGuiPlayer(); - for (Player p: pp) { - p.concede(); - } + if (humanCount > 0 && humanHasPriority) { + game.getAction().checkGameOverCondition(); + } + else { + game.isGameOver(); // this is synchronized method - it's used to make Game-0 thread see changes made here + getInputQueue().onGameOver(false); //release any waiting input, effectively passing priority + } - Player priorityPlayer = game.getPhaseHandler().getPriorityPlayer(); - boolean humanHasPriority = priorityPlayer == null || priorityPlayer.getLobbyPlayer() == getGuiPlayer(); - - if (hasHuman && humanHasPriority) { - game.getAction().checkGameOverCondition(); - } - else { - game.isGameOver(); // this is synchronized method - it's used to make Game-0 thread see changes made here - getInputQueue().onGameOver(false); //release any waiting input, effectively passing priority - } - - if (playbackControl != null) { - playbackControl.onGameStopRequested(); + if (playbackControl != null) { + playbackControl.onGameStopRequested(); + } } }