Allow ai to spend money for building & unit.

This commit is contained in:
Duan Tao 2019-01-22 15:05:32 +08:00
parent 53c0bbb0a3
commit fa8c948c04
2 changed files with 16 additions and 4 deletions

View File

@ -2,6 +2,7 @@ package com.unciv.logic.city
import com.badlogic.gdx.graphics.Color
import com.unciv.logic.automation.Automation
import com.unciv.logic.civilization.PlayerType
import com.unciv.models.gamebasics.Building
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.tr
@ -125,6 +126,11 @@ class CityConstructions {
inProgressConstructions[currentConstruction] = inProgressConstructions[currentConstruction]!! + productionToAdd
}
fun canBePruchasedWithGold(construction: IConstruction): Boolean {
return construction !is SpecialConstruction &&
!(construction is Building && construction.isWonder)
}
fun nextTurn(cityStats: Stats) {
var construction = getConstruction(currentConstruction)
if(construction is SpecialConstruction) return
@ -144,8 +150,15 @@ class CityConstructions {
val productionCost = construction.getProductionCost(cityInfo.civInfo.policies.adoptedPolicies)
if (inProgressConstructions[currentConstruction]!! >= productionCost) {
constructionComplete(construction)
}
//allow ai spending money to purchase building & unit. Buying staff has slightly lower priority than buying tech.
while (cityInfo.civInfo.playerType == PlayerType.AI
&& cityInfo.population.population >= 5
&& canBePruchasedWithGold(getConstruction(currentConstruction))
&& cityInfo.civInfo.gold / 5 >= getConstruction(currentConstruction).getGoldCost(cityInfo.civInfo.policies.getAdoptedPolicies()) ) {
purchaseBuilding(currentConstruction)
}
}
}
fun constructionComplete(construction: IConstruction) {

View File

@ -8,6 +8,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.badlogic.gdx.utils.Align
import com.unciv.logic.city.CityInfo
import com.unciv.logic.city.IConstruction
import com.unciv.logic.city.SpecialConstruction
import com.unciv.models.gamebasics.Building
import com.unciv.models.gamebasics.GameBasics
@ -123,9 +124,7 @@ class ConstructionsTable(val cityScreen: CityScreen) : Table(CameraStageBaseScre
row()
val purchaseConstructionButton: TextButton
if (construction !is SpecialConstruction &&
!(construction is Building && construction.isWonder)) {
if (city.cityConstructions.canBePruchasedWithGold(construction)) {
val buildingGoldCost = construction.getGoldCost(city.civInfo.policies.getAdoptedPolicies())
purchaseConstructionButton = TextButton("Buy for [$buildingGoldCost] gold".tr(), CameraStageBaseScreen.skin)
purchaseConstructionButton.onClick("coin") {