From 1888d201e3682c6a5100aa030d2402d51dca6828 Mon Sep 17 00:00:00 2001 From: drdev Date: Mon, 8 Dec 2014 03:47:20 +0000 Subject: [PATCH] Add some delays to the end day process and make it so commanders selected in order --- .../planarconquest/CommandCenterScreen.java | 28 ++++++++++++++++--- .../planarconquest/ConquestController.java | 26 +++++++++++++---- .../forge/planarconquest/IVCommandCenter.java | 1 + 3 files changed, 45 insertions(+), 10 deletions(-) diff --git a/forge-gui-mobile/src/forge/screens/planarconquest/CommandCenterScreen.java b/forge-gui-mobile/src/forge/screens/planarconquest/CommandCenterScreen.java index bd0bfdd835e..53727e905f5 100644 --- a/forge-gui-mobile/src/forge/screens/planarconquest/CommandCenterScreen.java +++ b/forge-gui-mobile/src/forge/screens/planarconquest/CommandCenterScreen.java @@ -86,7 +86,27 @@ public class CommandCenterScreen extends FScreen implements IVCommandCenter { public void updateCurrentDay() { lblCurrentPlane.setText("Plane - " + model.getCurrentPlane().getName()); btnEndDay.setText("End Day " + model.getDay()); - regionDisplay.onRegionChanged(); //simulate region change when day changes to ensure everything is updated + + commanderRow.selectedIndex = 0; //select first commander at the beginning of each day + ConquestCommander commander = commanderRow.panels[0].commander; + if (commander != null && commander.getDeployedRegion() != null) { + model.setCurrentRegion(commander.getDeployedRegion()); + } + regionDisplay.onRegionChanged(); //simulate region change when day changes to ensure everything is updated, even if region didn't change + } + + @Override + public boolean setSelectedCommander(ConquestCommander commander) { + int newIndex = model.getCurrentPlaneData().getCommanders().indexOf(commander); + boolean changed = commanderRow.selectedIndex != newIndex; + commanderRow.selectedIndex = newIndex; + if (commander.getDeployedRegion() != null) { + if (model.setCurrentRegion(commander.getDeployedRegion())) { + regionDisplay.onRegionChanged(); + changed = true; //if region changed, always return true + } + } + return changed; } @Override @@ -267,11 +287,11 @@ public class CommandCenterScreen extends FScreen implements IVCommandCenter { if (model.setCurrentRegion(commander.getDeployedRegion())) { regionDisplay.onRegionChanged(); } - else if (commander.getCurrentDayAction() != ConquestAction.Undeploy) { - //if already on commander's region, change action to undeploy + else if (commander.getCurrentDayAction() == null) { + //if already on commander's region, change action to undeploy if no action currently set commander.setCurrentDayAction(ConquestAction.Undeploy); } - else { + else if (commander.getCurrentDayAction() == ConquestAction.Undeploy) { commander.setCurrentDayAction(null); } } diff --git a/forge-gui/src/main/java/forge/planarconquest/ConquestController.java b/forge-gui/src/main/java/forge/planarconquest/ConquestController.java index 2b2f23ec068..55d9693e8c2 100644 --- a/forge-gui/src/main/java/forge/planarconquest/ConquestController.java +++ b/forge-gui/src/main/java/forge/planarconquest/ConquestController.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map.Entry; import com.google.common.base.Predicate; + import forge.FThreads; import forge.LobbyPlayer; import forge.card.CardRarity; @@ -122,6 +123,15 @@ public class ConquestController { } //perform all commander actions for (ConquestCommander commander : commanders) { + if (commandCenter.setSelectedCommander(commander)) { + try { + //sleep if selection changed so user can see it take effect + Thread.sleep(500); + } + catch (InterruptedException e) { + e.printStackTrace(); + } + } switch (commander.getCurrentDayAction()) { case Attack1: playGame(commander, 0, false, commandCenter); @@ -136,10 +146,10 @@ public class ConquestController { playGame(commander, Aggregates.randomInt(0, 2), true, commandCenter); //defend against random opponent break; case Recruit: - if (!recruit(commander)) { return; } + recruit(commander); break; case Study: - if (!study(commander)) { return; } + study(commander); break; case Undeploy: model.getCurrentPlaneData().getRegionData(commander.getDeployedRegion()).setDeployedCommander(null); @@ -147,15 +157,19 @@ public class ConquestController { default: //remaining actions don't need to do anything more break; } + commander.setCurrentDayAction(null); + try { + Thread.sleep(500); + } + catch (InterruptedException e) { + e.printStackTrace(); + } } - //increment day and reset actions, then update UI for new day + //update UI for new day FThreads.invokeInEdtLater(new Runnable() { @Override public void run() { model.incrementDay(); - for (ConquestCommander commander : commanders) { - commander.setCurrentDayAction(null); - } commandCenter.updateCurrentDay(); } }); diff --git a/forge-gui/src/main/java/forge/planarconquest/IVCommandCenter.java b/forge-gui/src/main/java/forge/planarconquest/IVCommandCenter.java index 97739b0001a..fc263c467a9 100644 --- a/forge-gui/src/main/java/forge/planarconquest/IVCommandCenter.java +++ b/forge-gui/src/main/java/forge/planarconquest/IVCommandCenter.java @@ -4,5 +4,6 @@ import forge.planarconquest.ConquestController.GameRunner; public interface IVCommandCenter { void updateCurrentDay(); + boolean setSelectedCommander(ConquestCommander commander); void startGame(final GameRunner gameRunner); }