From e6a132a9d77252f546b37b1805267d25001f8282 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 26 Feb 2024 21:30:29 +0200 Subject: [PATCH] Fixed game load, removed extraneous getBaseUnit() function --- .../logic/automation/civilization/NextTurnAutomation.kt | 3 +-- core/src/com/unciv/logic/battle/CityCombatant.kt | 2 +- core/src/com/unciv/logic/battle/MapUnitCombatant.kt | 8 ++++---- core/src/com/unciv/logic/map/mapunit/MapUnit.kt | 6 +++--- .../models/ruleset/unique/UniqueTriggerActivation.kt | 1 - .../unciv/ui/screens/overviewscreen/UnitOverviewTab.kt | 2 +- .../com/unciv/ui/screens/worldscreen/unit/UnitTable.kt | 6 +++--- .../worldscreen/unit/actions/UnitActionsUpgrade.kt | 2 +- 8 files changed, 14 insertions(+), 16 deletions(-) diff --git a/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt b/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt index 252853d827..4bd79fe0db 100644 --- a/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt +++ b/core/src/com/unciv/logic/automation/civilization/NextTurnAutomation.kt @@ -14,7 +14,6 @@ import com.unciv.logic.civilization.diplomacy.DiplomacyFlags import com.unciv.logic.civilization.diplomacy.DiplomaticModifiers import com.unciv.logic.civilization.diplomacy.DiplomaticStatus import com.unciv.logic.civilization.diplomacy.RelationshipLevel -import com.unciv.logic.civilization.managers.EspionageManager import com.unciv.logic.map.mapunit.MapUnit import com.unciv.models.ruleset.MilestoneType import com.unciv.models.ruleset.Policy @@ -365,7 +364,7 @@ object NextTurnAutomation { civInfo.greatPeople.mayaLimitedFreeGP-- } } - + /** If we are able to build a spaceship but have already spent our resources, try disbanding * a unit and selling a building to make room. Can happen due to trades etc */ private fun freeUpSpaceResources(civInfo: Civilization) { diff --git a/core/src/com/unciv/logic/battle/CityCombatant.kt b/core/src/com/unciv/logic/battle/CityCombatant.kt index 66d37f5467..255fde7b4b 100644 --- a/core/src/com/unciv/logic/battle/CityCombatant.kt +++ b/core/src/com/unciv/logic/battle/CityCombatant.kt @@ -59,7 +59,7 @@ class CityCombatant(val city: City) : ICombatant { // Garrisoned unit gives up to 20% of strength to city, health-dependant if (cityTile.militaryUnit != null) - strength += cityTile.militaryUnit!!.baseUnit().strength * (cityTile.militaryUnit!!.health / 100f) * modConstants.cityStrengthFromGarrison + strength += cityTile.militaryUnit!!.baseUnit.strength * (cityTile.militaryUnit!!.health / 100f) * modConstants.cityStrengthFromGarrison var buildingsStrength = city.cityConstructions.getBuiltBuildings().sumOf { it.cityStrength }.toFloat() val stateForConditionals = StateForConditionals(getCivInfo(), city, ourCombatant = this, combatAction = combatAction) diff --git a/core/src/com/unciv/logic/battle/MapUnitCombatant.kt b/core/src/com/unciv/logic/battle/MapUnitCombatant.kt index e5a9f979a5..8a37c6d294 100644 --- a/core/src/com/unciv/logic/battle/MapUnitCombatant.kt +++ b/core/src/com/unciv/logic/battle/MapUnitCombatant.kt @@ -26,16 +26,16 @@ class MapUnitCombatant(val unit: MapUnit) : ICombatant { override fun takeDamage(damage: Int) = unit.takeDamage(damage) override fun getAttackingStrength(): Int { - return if (isRanged()) unit.baseUnit().rangedStrength - else unit.baseUnit().strength + return if (isRanged()) unit.baseUnit.rangedStrength + else unit.baseUnit.strength } override fun getDefendingStrength(attackedByRanged: Boolean): Int { return if (unit.isEmbarked() && !isCivilian()) unit.civ.getEra().embarkDefense else if (isRanged() && attackedByRanged) - unit.baseUnit().rangedStrength - else unit.baseUnit().strength + unit.baseUnit.rangedStrength + else unit.baseUnit.strength } override fun getUnitType(): UnitType { diff --git a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt index d90d371d70..a0c2d98de8 100644 --- a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt +++ b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt @@ -101,6 +101,7 @@ class MapUnit : IsPartOfGameInfoSerialization { @Transient lateinit var currentTile: Tile + fun hasTile() = ::currentTile.isInitialized @Transient @@ -198,7 +199,6 @@ class MapUnit : IsPartOfGameInfoSerialization { val type: UnitType get() = baseUnit.type - fun baseUnit(): BaseUnit = baseUnit fun getMovementString(): String = DecimalFormat("0.#").format(currentMovement.toDouble()) + "/" + getMaxMovement() @@ -358,7 +358,7 @@ class MapUnit : IsPartOfGameInfoSerialization { fun getRange(): Int { if (baseUnit.isMelee()) return 1 - var range = baseUnit().range + var range = baseUnit.range range += getMatchingUniques(UniqueType.Range, checkCivInfoUniques = true) .sumOf { it.params[0].toInt() } return range @@ -613,7 +613,6 @@ class MapUnit : IsPartOfGameInfoSerialization { fun updateUniques() { val uniques = ArrayList() - val baseUnit = baseUnit() uniques.addAll(baseUnit.uniqueObjects) uniques.addAll(type.uniqueObjects) @@ -960,6 +959,7 @@ class MapUnit : IsPartOfGameInfoSerialization { owner = civInfo.civName this.civ = civInfo civInfo.units.addUnit(this, updateCivInfo) + if (::baseUnit.isInitialized) cache.updateUniques() } diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt b/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt index 9fd9331c0f..e842817ece 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt @@ -4,7 +4,6 @@ import com.badlogic.gdx.math.Vector2 import com.unciv.Constants import com.unciv.UncivGame import com.unciv.logic.automation.civilization.NextTurnAutomation -import com.unciv.logic.battle.MapUnitCombatant import com.unciv.logic.city.City import com.unciv.logic.civilization.CivFlags import com.unciv.logic.civilization.Civilization diff --git a/core/src/com/unciv/ui/screens/overviewscreen/UnitOverviewTab.kt b/core/src/com/unciv/ui/screens/overviewscreen/UnitOverviewTab.kt index 5adbfa487c..2817ff0b47 100644 --- a/core/src/com/unciv/ui/screens/overviewscreen/UnitOverviewTab.kt +++ b/core/src/com/unciv/ui/screens/overviewscreen/UnitOverviewTab.kt @@ -181,7 +181,7 @@ class UnitOverviewTab( { it.currentMovement <= Constants.minimumMovementEpsilon }, { abs(it.currentTile.position.x) + abs(it.currentTile.position.y) }) )) { - val baseUnit = unit.baseUnit() + val baseUnit = unit.baseUnit // Unit button column - name, health, fortified, sleeping, embarked are visible here val button = IconTextButton( diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt index 19491d5021..b81f278bdc 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt @@ -168,12 +168,12 @@ class UnitTable(val worldScreen: WorldScreen) : Table() { if (!unit.isCivilian()) { unitDescriptionTable.add(ImageGetter.getStatIcon("Strength")).size(20f) - unitDescriptionTable.add(unit.baseUnit().strength.toString()).padRight(10f) + unitDescriptionTable.add(unit.baseUnit.strength.toString()).padRight(10f) } - if (unit.baseUnit().rangedStrength != 0) { + if (unit.baseUnit.rangedStrength != 0) { unitDescriptionTable.add(ImageGetter.getStatIcon("RangedStrength")).size(20f) - unitDescriptionTable.add(unit.baseUnit().rangedStrength.toString()).padRight(10f) + unitDescriptionTable.add(unit.baseUnit.rangedStrength.toString()).padRight(10f) } if (unit.baseUnit.isRanged()) { diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsUpgrade.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsUpgrade.kt index cd8ddd62ad..8b21422ff6 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsUpgrade.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsUpgrade.kt @@ -20,7 +20,7 @@ object UnitActionsUpgrade { val unitTile = unit.getTile() val civInfo = unit.civ val specialUpgradesTo = if (isSpecial) - unit.baseUnit().getMatchingUniques(UniqueType.RuinsUpgrade, StateForConditionals(civInfo, unit = unit)) + unit.baseUnit.getMatchingUniques(UniqueType.RuinsUpgrade, StateForConditionals(civInfo, unit = unit)) .map { it.params[0] }.firstOrNull() else null val upgradeUnits = if (specialUpgradesTo != null) sequenceOf(specialUpgradesTo)