diff --git a/core/src/com/unciv/civinfo/CityBuildings.java b/core/src/com/unciv/civinfo/CityBuildings.java index 6ecb3eb911..21deb65b28 100644 --- a/core/src/com/unciv/civinfo/CityBuildings.java +++ b/core/src/com/unciv/civinfo/CityBuildings.java @@ -45,10 +45,7 @@ public class CityBuildings public void nextTurn(FullStats cityStats) { - if (currentBuilding == null) return; - if(currentBuilding.equals("Gold")) {cityStats.gold+=cityStats.production/4; return;} - if(currentBuilding.equals("Science")) {cityStats.science+=cityStats.production/4; return;} - + if (getCurrentBuilding()==null) return; Building gameBuilding = getGameBuilding(currentBuilding); @@ -235,4 +232,10 @@ public class CityBuildings result+="\r\n"+turnsToBuilding(currentBuilding)+" turns"; return result; } + + + public String getAmountConstructedText(){ + if(currentBuilding.equals("Science") || currentBuilding.equals("Gold")) return ""; + return " ("+ workDone(currentBuilding) + "/"+getCurrentBuilding().cost+")"; + } } \ No newline at end of file diff --git a/core/src/com/unciv/civinfo/CityInfo.java b/core/src/com/unciv/civinfo/CityInfo.java index 92605053ea..86a5e93e04 100644 --- a/core/src/com/unciv/civinfo/CityInfo.java +++ b/core/src/com/unciv/civinfo/CityInfo.java @@ -134,9 +134,12 @@ public class CityInfo { FullStats statPercentBonuses = cityBuildings.getStatPercentBonuses(); if(isCapital() || isConnectedToCapital(RoadStatus.Railroad)) statPercentBonuses.production += 25; if(CivilizationInfo.current().isGoldenAge()) statPercentBonuses.production+=20; + + stats.production*=1+statPercentBonuses.production/100; // So they get bonuses for production and gold/science + if(cityBuildings.currentBuilding.equals("Gold")) stats.gold+=stats.production/4; + if(cityBuildings.currentBuilding.equals("Science")) stats.science+=stats.production/4; stats.food*=1+statPercentBonuses.food/100; stats.gold*=1+statPercentBonuses.gold/100; - stats.production*=1+statPercentBonuses.production/100; stats.science*=1+statPercentBonuses.science/100; stats.culture*=1+statPercentBonuses.culture/100; @@ -285,4 +288,7 @@ public class CityInfo { }); } + + + } \ No newline at end of file diff --git a/core/src/com/unciv/game/CityScreen.java b/core/src/com/unciv/game/CityScreen.java index 94a8d92447..89743c2c9a 100644 --- a/core/src/com/unciv/game/CityScreen.java +++ b/core/src/com/unciv/game/CityScreen.java @@ -22,7 +22,6 @@ import com.badlogic.gdx.utils.Align; import com.unciv.civinfo.CityInfo; import com.unciv.civinfo.TileInfo; import com.unciv.game.pickerscreens.BuildingPickerScreen; -import com.unciv.game.pickerscreens.PickerScreen; import com.unciv.models.gamebasics.Building; import com.unciv.models.stats.FullStats; @@ -203,8 +202,7 @@ public class CityScreen extends com.unciv.game.utils.CameraStageBaseScreen { HashMap CityStatsValues = new LinkedHashMap(); CityStatsValues.put("Production",Math.round(stats.production) - +" ("+ cityInfo.cityBuildings.workDone(cityInfo.cityBuildings.currentBuilding) - +"/"+cityInfo.cityBuildings.getCurrentBuilding().cost+")"); + +cityInfo.cityBuildings.getAmountConstructedText()); CityStatsValues.put("Food",Math.round(stats.food) +" ("+cityInfo.foodStored+"/"+cityInfo.foodToNextPopulation()+")"); CityStatsValues.put("Gold",Math.round(stats.gold) +""); @@ -239,7 +237,7 @@ public class CityScreen extends com.unciv.game.utils.CameraStageBaseScreen { // https://forums.civfanatics.com/threads/rush-buying-formula.393892/ Building building = cityInfo.cityBuildings.getCurrentBuilding(); - if(!building.isWonder) { + if(building != null && !building.isWonder) { CityStatsTable.row(); int buildingGoldCost = building.getGoldCost(); TextButton buildingBuyButton = new TextButton("Buy for \r\n"+buildingGoldCost+" gold", skin); diff --git a/core/src/com/unciv/game/pickerscreens/BuildingPickerScreen.java b/core/src/com/unciv/game/pickerscreens/BuildingPickerScreen.java index 026ba09b69..0d2f827143 100644 --- a/core/src/com/unciv/game/pickerscreens/BuildingPickerScreen.java +++ b/core/src/com/unciv/game/pickerscreens/BuildingPickerScreen.java @@ -48,6 +48,7 @@ public class BuildingPickerScreen extends PickerScreen { @Override public void clicked(InputEvent event, float x, float y) { game.civInfo.getCurrentCity().cityBuildings.currentBuilding = selectedProduction; + game.civInfo.getCurrentCity().updateCityStats(); // Because maybe we set/removed the science or gold production options. game.setScreen(new CityScreen(game)); dispose(); }