From 050ecb51bdca5b44ddc5834111e9b612e2d389a8 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 6 Oct 2021 21:28:39 +0800 Subject: [PATCH] [Mobile] refactor netplay phase indicator --- forge-game/src/main/java/forge/game/GameView.java | 13 +++++++++++++ .../java/forge/trackable/TrackableProperty.java | 1 + .../src/forge/screens/match/MatchController.java | 4 ++++ .../src/forge/screens/match/MatchScreen.java | 11 +++++++++++ 4 files changed, 29 insertions(+) diff --git a/forge-game/src/main/java/forge/game/GameView.java b/forge-game/src/main/java/forge/game/GameView.java index b845bce1d31..c77f0303170 100644 --- a/forge-game/src/main/java/forge/game/GameView.java +++ b/forge-game/src/main/java/forge/game/GameView.java @@ -96,6 +96,19 @@ public class GameView extends TrackableObject { void updatePlayerTurn(PhaseHandler phaseHandler) { set(TrackableProperty.PlayerTurn, PlayerView.get(phaseHandler.getPlayerTurn())); } + public void updateNeedsPhaseRedrawn(PlayerView p, PhaseType ph) { + set(TrackableProperty.PlayerTurn, p); + set(TrackableProperty.Phase, ph); + set(TrackableProperty.NeedsPhaseRedrawn, true); + } + public boolean getNeedsPhaseRedrawn() { + if (get(TrackableProperty.NeedsPhaseRedrawn) == null) + return false; + return get(TrackableProperty.NeedsPhaseRedrawn); + } + public void clearNeedsPhaseRedrawn() { + set(TrackableProperty.NeedsPhaseRedrawn, false); + } public void updatePlanarPlayer(PlayerView p) { set(TrackableProperty.PlanarPlayer, p); diff --git a/forge-game/src/main/java/forge/trackable/TrackableProperty.java b/forge-game/src/main/java/forge/trackable/TrackableProperty.java index ac0a6457dd3..676b6a1d940 100644 --- a/forge-game/src/main/java/forge/trackable/TrackableProperty.java +++ b/forge-game/src/main/java/forge/trackable/TrackableProperty.java @@ -256,6 +256,7 @@ public enum TrackableProperty { GameOver(TrackableTypes.BooleanType), PoisonCountersToLose(TrackableTypes.IntegerType), GameLog(TrackableTypes.StringType), + NeedsPhaseRedrawn(TrackableTypes.BooleanType), PlayerTurn(TrackableTypes.PlayerViewType, FreezeMode.IgnoresFreeze), Phase(TrackableTypes.EnumType(PhaseType.class), FreezeMode.IgnoresFreeze); diff --git a/forge-gui-mobile/src/forge/screens/match/MatchController.java b/forge-gui-mobile/src/forge/screens/match/MatchController.java index 83b0844d6ae..a3f2b6651a0 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchController.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchController.java @@ -223,11 +223,15 @@ public class MatchController extends AbstractGuiGame { final VPhaseIndicator.PhaseLabel phaseLabel = view.getPlayerPanel(lastPlayer).getPhaseIndicator().getLabel(ph); if (phaseLabel != null) phaseLabel.setActive(true); + if (GuiBase.isNetworkplay()) + getGameView().updateNeedsPhaseRedrawn(lastPlayer, PhaseType.CLEANUP); } else if (getGameView().getPlayerTurn() != null) { //set phaselabel final VPhaseIndicator.PhaseLabel phaseLabel = view.getPlayerPanel(getGameView().getPlayerTurn()).getPhaseIndicator().getLabel(ph); if (phaseLabel != null) phaseLabel.setActive(true); + if (GuiBase.isNetworkplay()) + getGameView().updateNeedsPhaseRedrawn(getGameView().getPlayerTurn(), ph); } } diff --git a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java index f656d36c504..c45a700d140 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java @@ -442,6 +442,17 @@ public class MatchScreen extends FScreen { if (activeEffect != null) { activeEffect.draw(g, 10, 10, 100, 100); } + + if (game.getNeedsPhaseRedrawn()) { + resetAllPhaseButtons(); + if (game.getPlayerTurn() != null && game.getPhase() != null) { + final PhaseLabel phaseLabel = getPlayerPanel(game.getPlayerTurn()).getPhaseIndicator().getLabel(game.getPhase()); + if (phaseLabel != null) { + phaseLabel.setActive(true); + game.clearNeedsPhaseRedrawn(); + } + } + } } @Override