From 86d837802159d83223b9eed0185cbbbe37ae046c Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 13 Dec 2017 22:06:40 +0200 Subject: [PATCH] Tile stats from inside city now show what they would produce if assigned to this city (important for buildings that improve tiles eg. jungle/university) --- core/src/com/unciv/civinfo/CityInfo.java | 10 ++++------ core/src/com/unciv/civinfo/TileInfo.java | 8 +++++--- core/src/com/unciv/game/CityScreen.java | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/src/com/unciv/civinfo/CityInfo.java b/core/src/com/unciv/civinfo/CityInfo.java index ddf9339a81..92605053ea 100644 --- a/core/src/com/unciv/civinfo/CityInfo.java +++ b/core/src/com/unciv/civinfo/CityInfo.java @@ -114,8 +114,8 @@ public class CityInfo { // Working ppl for (TileInfo cell : getTilesInRange()) - if (name.equals(cell.workingCity) || cell.isCityCenter()) - stats.add(cell.getTileStats()); + if (name.equals(cell.workingCity)) + stats.add(cell.getTileStats(this)); //idle ppl stats.production += getFreePopulation(); @@ -218,9 +218,7 @@ public class CityInfo { TileInfo toWork = null; for (TileInfo tileInfo : getTilesInRange()) { if (tileInfo.workingCity !=null) continue; - FullStats stats = tileInfo.getTileStats(); - - double value = stats.food + stats.production * 0.5; + double value = rankTile(tileInfo); if (value > maxValue) { maxValue = value; toWork = tileInfo; @@ -232,7 +230,7 @@ public class CityInfo { } private double rankTile(TileInfo tile){ - FullStats stats = tile.getTileStats(); + FullStats stats = tile.getTileStats(this); double rank=0; if(stats.food <2) rank+=stats.food; else rank += 2 + (stats.food -2)/2; // 1 point for each food up to 2, from there on half a point diff --git a/core/src/com/unciv/civinfo/TileInfo.java b/core/src/com/unciv/civinfo/TileInfo.java index 8e08f47df7..ff15220f84 100644 --- a/core/src/com/unciv/civinfo/TileInfo.java +++ b/core/src/com/unciv/civinfo/TileInfo.java @@ -51,7 +51,9 @@ public class TileInfo private boolean isResearched(String techName) { return UnCivGame.Current.civInfo.tech.isResearched(techName); } - public FullStats getTileStats() + public FullStats getTileStats(){return getTileStats(getCity());} + + public FullStats getTileStats(CityInfo city) { FullStats stats = new FullStats(getBaseTerrain()); @@ -61,7 +63,6 @@ public class TileInfo else stats.add(terrainFeature); } - CityInfo city = getCity(); TileResource resource = getTileResource(); if (hasViewableResource()) { @@ -89,7 +90,8 @@ public class TileInfo if (stats.production < 0) stats.production = 0; - if("Jungle".equals(terrainFeature) && city.getBuildingUniques().contains("JunglesProvideScience")) stats.science+=2; + if("Jungle".equals(terrainFeature) && city!=null + && city.getBuildingUniques().contains("JunglesProvideScience")) stats.science+=2; if(stats.gold!=0 && CivilizationInfo.current().isGoldenAge()) stats.gold++; diff --git a/core/src/com/unciv/game/CityScreen.java b/core/src/com/unciv/game/CityScreen.java index 2156d9ff1b..94a8d92447 100644 --- a/core/src/com/unciv/game/CityScreen.java +++ b/core/src/com/unciv/game/CityScreen.java @@ -267,8 +267,8 @@ public class CityScreen extends com.unciv.game.utils.CameraStageBaseScreen { if(selectedTile == null) return; TileTable.clearChildren(); - CityInfo City =game.civInfo.getCurrentCity(); - FullStats stats = selectedTile.getTileStats(); + CityInfo city =game.civInfo.getCurrentCity(); + FullStats stats = selectedTile.getTileStats(city); TileTable.pad(20); TileTable.columnDefaults(0).padRight(10);