From fa8c948c049c8ea9256681bc316fb185317ca335 Mon Sep 17 00:00:00 2001 From: Duan Tao Date: Tue, 22 Jan 2019 15:05:32 +0800 Subject: [PATCH] Allow ai to spend money for building & unit. --- .../src/com/unciv/logic/city/CityConstructions.kt | 15 ++++++++++++++- .../com/unciv/ui/cityscreen/ConstructionsTable.kt | 5 ++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index 46f6d6e39c..36af78cf8d 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -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) { diff --git a/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt b/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt index cb03a85bac..026cb55188 100644 --- a/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt +++ b/core/src/com/unciv/ui/cityscreen/ConstructionsTable.kt @@ -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") {