From 561fd417edcebf70e31338b6e33e835586be500e Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Tue, 23 Jan 2018 21:52:25 +0200 Subject: [PATCH] policy picker screen now opens rom boolean --- core/src/com/unciv/logic/civilization/PolicyManager.java | 5 +++-- core/src/com/unciv/logic/map/MapUnit.java | 7 ++++--- core/src/com/unciv/logic/map/TileInfo.java | 4 ++++ core/src/com/unciv/ui/WorldScreen.java | 4 ++++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/PolicyManager.java b/core/src/com/unciv/logic/civilization/PolicyManager.java index a3330dddf4..202ba2bf9c 100644 --- a/core/src/com/unciv/logic/civilization/PolicyManager.java +++ b/core/src/com/unciv/logic/civilization/PolicyManager.java @@ -16,6 +16,7 @@ public class PolicyManager { public int freePolicies=0; public int storedCulture=0; private Linq adoptedPolicies = new Linq(); + public boolean shouldOpenPolicyPicker=false; public Linq getAdoptedPolicies(){return adoptedPolicies.clone();} public boolean isAdopted(String policyName){return adoptedPolicies.contains(policyName);} @@ -85,9 +86,9 @@ public class PolicyManager { } public void nextTurn(float culture) { - storedCulture+=culture; boolean couldAdoptPolicyBefore = canAdoptPolicy(); + storedCulture+=culture; if(!couldAdoptPolicyBefore && canAdoptPolicy()) - UnCivGame.Current.setScreen(new PolicyPickerScreen()); + shouldOpenPolicyPicker=true; } } diff --git a/core/src/com/unciv/logic/map/MapUnit.java b/core/src/com/unciv/logic/map/MapUnit.java index 652feebb7a..22d900864b 100644 --- a/core/src/com/unciv/logic/map/MapUnit.java +++ b/core/src/com/unciv/logic/map/MapUnit.java @@ -62,11 +62,12 @@ public class MapUnit{ public TileInfo findTileToWork(TileInfo currentTile){ TileInfo selectedTile = currentTile; - int tilePriority = getPriority(currentTile); + int tilePriority = currentTile.improvement==null && currentTile.canBuildImprovement(chooseImprovement(currentTile)) + ? getPriority(currentTile) : 1; // min rank to get selected is 2 for (int i = 1; i < 5; i++) for (TileInfo tile : CivilizationInfo.current().tileMap.getTilesAtDistance(currentTile.position,i)) if(tile.unit==null && tile.improvement==null && getPriority(tile)>tilePriority - && tile.canBuildImprovement(GameBasics.TileImprovements.get(chooseImprovement(tile)))){ + && tile.canBuildImprovement(chooseImprovement(tile))){ selectedTile = tile; tilePriority = getPriority(tile); } @@ -83,7 +84,7 @@ public class MapUnit{ } if(tile.improvementInProgress == null){ String improvement =chooseImprovement(tile); - if(tile.canBuildImprovement(GameBasics.TileImprovements.get(improvement))) // What if we're stuck on this tile but can't build there? + if(tile.canBuildImprovement(improvement)) // What if we're stuck on this tile but can't build there? tile.startWorkingOnImprovement(improvement); } } diff --git a/core/src/com/unciv/logic/map/TileInfo.java b/core/src/com/unciv/logic/map/TileInfo.java index 2233f4e3df..987ca41171 100644 --- a/core/src/com/unciv/logic/map/TileInfo.java +++ b/core/src/com/unciv/logic/map/TileInfo.java @@ -106,6 +106,10 @@ public class TileInfo return stats; } + public boolean canBuildImprovement(String improvementName){ + return canBuildImprovement(GameBasics.TileImprovements.get(improvementName)); + } + public boolean canBuildImprovement(TileImprovement improvement) { if(isCityCenter() || improvement.name.equals(this.improvement)) return false; diff --git a/core/src/com/unciv/ui/WorldScreen.java b/core/src/com/unciv/ui/WorldScreen.java index cb0d1d1f6f..4b4f14b6ae 100644 --- a/core/src/com/unciv/ui/WorldScreen.java +++ b/core/src/com/unciv/ui/WorldScreen.java @@ -192,6 +192,10 @@ public class WorldScreen extends CameraStageBaseScreen { if (game.civInfo.tech.freeTechs != 0) { game.setScreen(new TechPickerScreen(true)); } + else if(game.civInfo.policies.shouldOpenPolicyPicker){ + game.setScreen(new PolicyPickerScreen()); + game.civInfo.policies.shouldOpenPolicyPicker=false; + } }