Added percent bonuses

Fixed crash when we ran out of tiles to assign people to in cities
This commit is contained in:
Yair Morgenstern 2017-12-04 19:50:08 +02:00
parent ec5a201853
commit 45a791d186
5 changed files with 33 additions and 11 deletions

View File

@ -133,13 +133,23 @@ public class CityBuildings
public FullStats getStats()
{
FullStats stats = new FullStats();
for (String building : builtBuildings)
{
Building gameBuilding = getGameBuilding(building);
stats.add(gameBuilding);
//if (gameBuilding.GetFlatBonusStats != null) stats.add(gameBuilding.GetFlatBonusStats(cityInfo));
stats.gold -= gameBuilding.maintainance;
for( Building building : getBuiltBuildings()) stats.add(building);
return stats;
}
public int getMaintainanceCosts(){
int maintainanceTotal = 0;
for( Building building : getBuiltBuildings()) maintainanceTotal+=building.maintainance;
return maintainanceTotal;
}
public FullStats getStatPercentBonuses(){
FullStats stats = new FullStats();
for(Building building : getBuiltBuildings())
if(building.percentStatBonus != null)
stats.add(building.percentStatBonus);
return stats;
}

View File

@ -117,6 +117,15 @@ public class CityInfo {
stats.add(cityBuildings.getStats());
FullStats statPercentBonuses = cityBuildings.getStatPercentBonuses();
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;
stats.gold-=cityBuildings.getMaintainanceCosts(); // this is AFTER the bonus calculation!
return stats;
}
@ -192,6 +201,8 @@ public class CityInfo {
toWork = tileInfo;
}
}
if(toWork!=null) // This is when we've run out of tiles!
toWork.workingCity = name;
}

View File

@ -200,12 +200,12 @@ public class CityScreen extends CameraStageBaseScreen {
HashMap<String,String> CityStatsValues = new LinkedHashMap<String, String>();
CityStatsValues.put("production",Math.round(stats.production) +"");
CityStatsValues.put("food",Math.round(stats.food)
+" ("+cityInfo.cityPopulation.FoodStored+"/"+cityInfo.cityPopulation.FoodToNextPopulation()+")");
+" ("+cityInfo.foodStored+"/"+cityInfo.foodToNextPopulation()+")");
CityStatsValues.put("gold",Math.round(stats.gold) +"");
CityStatsValues.put("science",Math.round(stats.science) +"");
CityStatsValues.put("culture",Math.round(stats.culture)
+" ("+cityInfo.cultureStored+"/"+cityInfo.getCultureToNextTile()+")");
CityStatsValues.put("Population",cityInfo.getFreePopulation()+"/"+cityInfo.cityPopulation.Population);
CityStatsValues.put("Population",cityInfo.getFreePopulation()+"/"+cityInfo.population);
for(String key : CityStatsValues.keySet()){
CityStatsTable.add(ImageGetter.getStatIcon(key)).align(Align.right);

View File

@ -60,7 +60,7 @@ public class WorldTileGroup extends TileGroup {
setZIndex(getParent().getChildren().size); // so this tile is rendered over neighboing tiles
}
String cityButtonText = city.name +" ("+city.cityPopulation.Population+")"
String cityButtonText = city.name +" ("+city.population+")"
+ "\r\n" + city.cityBuildings.currentBuilding + " in "
+ city.cityBuildings.turnsToBuilding(city.cityBuildings.currentBuilding);
TextButton button = cityButton.getActor();

View File

@ -40,4 +40,5 @@ public class FullStats extends CivStats // also used for hex stats, since it's b
return valuableParts.toString();
}
}