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() public FullStats getStats()
{ {
FullStats stats = new FullStats(); FullStats stats = new FullStats();
for (String building : builtBuildings) for( Building building : getBuiltBuildings()) stats.add(building);
{ return stats;
Building gameBuilding = getGameBuilding(building);
stats.add(gameBuilding);
//if (gameBuilding.GetFlatBonusStats != null) stats.add(gameBuilding.GetFlatBonusStats(cityInfo));
stats.gold -= gameBuilding.maintainance;
} }
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; return stats;
} }

View File

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

View File

@ -200,12 +200,12 @@ public class CityScreen extends CameraStageBaseScreen {
HashMap<String,String> CityStatsValues = new LinkedHashMap<String, String>(); HashMap<String,String> CityStatsValues = new LinkedHashMap<String, String>();
CityStatsValues.put("production",Math.round(stats.production) +""); CityStatsValues.put("production",Math.round(stats.production) +"");
CityStatsValues.put("food",Math.round(stats.food) 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("gold",Math.round(stats.gold) +"");
CityStatsValues.put("science",Math.round(stats.science) +""); CityStatsValues.put("science",Math.round(stats.science) +"");
CityStatsValues.put("culture",Math.round(stats.culture) CityStatsValues.put("culture",Math.round(stats.culture)
+" ("+cityInfo.cultureStored+"/"+cityInfo.getCultureToNextTile()+")"); +" ("+cityInfo.cultureStored+"/"+cityInfo.getCultureToNextTile()+")");
CityStatsValues.put("Population",cityInfo.getFreePopulation()+"/"+cityInfo.cityPopulation.Population); CityStatsValues.put("Population",cityInfo.getFreePopulation()+"/"+cityInfo.population);
for(String key : CityStatsValues.keySet()){ for(String key : CityStatsValues.keySet()){
CityStatsTable.add(ImageGetter.getStatIcon(key)).align(Align.right); 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 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 " + "\r\n" + city.cityBuildings.currentBuilding + " in "
+ city.cityBuildings.turnsToBuilding(city.cityBuildings.currentBuilding); + city.cityBuildings.turnsToBuilding(city.cityBuildings.currentBuilding);
TextButton button = cityButton.getActor(); 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(); return valuableParts.toString();
} }
} }