From 63e67b0aa5e4114430b3e559f6434cc28288a4d5 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Thu, 22 Oct 2020 20:36:59 +0800 Subject: [PATCH] [Mobile] Prevent Conceding while on Mulligan closes issue #1376 --- forge-game/src/main/java/forge/game/GameView.java | 8 ++++++++ .../src/main/java/forge/trackable/TrackableProperty.java | 1 + forge-gui-mobile/src/forge/screens/match/MatchScreen.java | 8 ++++---- .../main/java/forge/match/input/InputLondonMulligan.java | 2 ++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/forge-game/src/main/java/forge/game/GameView.java b/forge-game/src/main/java/forge/game/GameView.java index eda68175be6..39c50ea2171 100644 --- a/forge-game/src/main/java/forge/game/GameView.java +++ b/forge-game/src/main/java/forge/game/GameView.java @@ -116,6 +116,14 @@ public class GameView extends TrackableObject { public boolean isMatchOver() { return get(TrackableProperty.MatchOver); } + public boolean isMulligan() { + if (get(TrackableProperty.Mulligan) == null) + return false; + return get(TrackableProperty.Mulligan); + } + public void updateIsMulligan(boolean value) { + set(TrackableProperty.Mulligan, value); + } public String getWinningPlayerName() { return get(TrackableProperty.WinningPlayerName); } diff --git a/forge-game/src/main/java/forge/trackable/TrackableProperty.java b/forge-game/src/main/java/forge/trackable/TrackableProperty.java index 1f0ad806d57..223e48c22a2 100644 --- a/forge-game/src/main/java/forge/trackable/TrackableProperty.java +++ b/forge-game/src/main/java/forge/trackable/TrackableProperty.java @@ -206,6 +206,7 @@ public enum TrackableProperty { WinningPlayerName(TrackableTypes.StringType), WinningTeam(TrackableTypes.IntegerType), MatchOver(TrackableTypes.BooleanType), + Mulligan(TrackableTypes.BooleanType), NumGamesInMatch(TrackableTypes.IntegerType), NumPlayedGamesInMatch(TrackableTypes.IntegerType), Stack(TrackableTypes.StackItemViewListType), diff --git a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java index 1bbc9435e0a..903b796ed80 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java @@ -358,10 +358,10 @@ public class MatchScreen extends FScreen { if(gameMenu!=null) { if(gameMenu.getChildCount()>3){ if(viewWinLose == null) { - gameMenu.getChildAt(0).setEnabled(true); - gameMenu.getChildAt(1).setEnabled(true); - gameMenu.getChildAt(2).setEnabled(true); - gameMenu.getChildAt(3).setEnabled(true); + gameMenu.getChildAt(0).setEnabled(!game.isMulligan()); + gameMenu.getChildAt(1).setEnabled(!game.isMulligan()); + gameMenu.getChildAt(2).setEnabled(!game.isMulligan()); + gameMenu.getChildAt(3).setEnabled(!game.isMulligan()); gameMenu.getChildAt(4).setEnabled(false); } else { gameMenu.getChildAt(0).setEnabled(false); diff --git a/forge-gui/src/main/java/forge/match/input/InputLondonMulligan.java b/forge-gui/src/main/java/forge/match/input/InputLondonMulligan.java index d227c20fce2..4cfdb546e99 100644 --- a/forge-gui/src/main/java/forge/match/input/InputLondonMulligan.java +++ b/forge-gui/src/main/java/forge/match/input/InputLondonMulligan.java @@ -54,6 +54,7 @@ public class InputLondonMulligan extends InputSyncronizedBase { public final void showMessage() { final Localizer localizer = Localizer.getInstance(); final Game game = player.getGame(); + game.getView().updateIsMulligan(true); int cardsLeft = toReturn - selected.size(); StringBuilder sb = new StringBuilder(); @@ -79,6 +80,7 @@ public class InputLondonMulligan extends InputSyncronizedBase { private void done() { resetCardHighlights(); + getController().getGame().getView().updateIsMulligan(false); stop(); }