From 8b176f062bc0c1d8cc1b4b2484e41a138472280e Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Thu, 5 Apr 2018 11:53:12 +0300 Subject: [PATCH] Added unit maintainance costs to civ --- core/src/com/unciv/logic/GameInfo.kt | 2 +- .../logic/civilization/CivilizationInfo.kt | 22 +++++++++++++++---- .../com/unciv/logic/map/RandomMapGenerator.kt | 4 ++-- .../unciv/ui/utils/CameraStageBaseScreen.kt | 3 ++- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/core/src/com/unciv/logic/GameInfo.kt b/core/src/com/unciv/logic/GameInfo.kt index e2cd0cbf3c..12d87c3c15 100644 --- a/core/src/com/unciv/logic/GameInfo.kt +++ b/core/src/com/unciv/logic/GameInfo.kt @@ -5,9 +5,9 @@ import com.unciv.logic.battle.Battle import com.unciv.logic.battle.MapUnitCombatant import com.unciv.logic.civilization.CivilizationInfo import com.unciv.logic.civilization.Notification -import com.unciv.logic.civilization.getRandom import com.unciv.logic.map.TileMap import com.unciv.logic.map.UnitType +import com.unciv.ui.utils.getRandom class GameInfo { diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 7189981dbd..89824d8b43 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -12,6 +12,9 @@ import com.unciv.models.gamebasics.ResourceType import com.unciv.models.gamebasics.TileResource import com.unciv.models.linq.Counter import com.unciv.models.stats.Stats +import com.unciv.ui.utils.getRandom +import kotlin.math.max +import kotlin.math.pow class CivilizationInfo { @@ -46,7 +49,10 @@ class CivilizationInfo { statsForTurn.happiness = getHappinessForNextTurn().toFloat() val transportationUpkeep = getTransportationUpkeep() - statsForTurn.gold -= transportationUpkeep.toFloat() + statsForTurn.gold -= transportationUpkeep + + val unitUpkeep = getUnitUpkeep() + statsForTurn.gold -= unitUpkeep if (policies.isAdopted("Mandate Of Heaven")) statsForTurn.culture += statsForTurn.happiness / 2 @@ -55,6 +61,16 @@ class CivilizationInfo { return statsForTurn } + private fun getUnitUpkeep(): Int { + val baseUnitCost = 0.5f + val freeUnits = 3 + val totalPaidUnits = max(0,getCivUnits().count()-freeUnits) + val gameProgress = gameInfo.turns/400f // as game progresses maintainance cost rises + val cost = baseUnitCost*totalPaidUnits*(1+gameProgress) + val finalCost = cost.pow(1+gameProgress/3) // Why 3? No reason. + return finalCost.toInt() + } + private fun getTransportationUpkeep(): Int { var transportationUpkeep = 0 for (it in gameInfo.tileMap.values.filterNot { it.isCityCenter }) { @@ -159,6 +175,4 @@ class CivilizationInfo { return viewablePositions } -} - -fun List.getRandom(): E = if (size == 0) throw Exception() else get((Math.random() * size).toInt()) \ No newline at end of file +} \ No newline at end of file diff --git a/core/src/com/unciv/logic/map/RandomMapGenerator.kt b/core/src/com/unciv/logic/map/RandomMapGenerator.kt index 343f0d9076..81636524f6 100644 --- a/core/src/com/unciv/logic/map/RandomMapGenerator.kt +++ b/core/src/com/unciv/logic/map/RandomMapGenerator.kt @@ -1,12 +1,12 @@ package com.unciv.logic.map import com.badlogic.gdx.math.Vector2 -import com.unciv.logic.civilization.getRandom import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.ResourceType import com.unciv.models.gamebasics.TerrainType import com.unciv.models.gamebasics.TileResource import com.unciv.ui.utils.HexMath +import com.unciv.ui.utils.getRandom class SeedRandomMapGenerator : RandomMapGenerator() { @@ -73,7 +73,7 @@ class SeedRandomMapGenerator : RandomMapGenerator() { val mapToReturn = HashMap() for (entry in map){ - mapToReturn.put(entry.key.toString(),entry.value!!) + mapToReturn[entry.key.toString()] = entry.value!! } return mapToReturn diff --git a/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt b/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt index f2e73b10e2..05f854c7c6 100644 --- a/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt +++ b/core/src/com/unciv/ui/utils/CameraStageBaseScreen.kt @@ -104,4 +104,5 @@ fun TextButton.disable(){ fun TextButton.enable() { color = Color.WHITE touchable = Touchable.enabled -} \ No newline at end of file +} +fun List.getRandom(): E = if (size == 0) throw Exception() else get((Math.random() * size).toInt()) \ No newline at end of file