Fixed game load, removed extraneous getBaseUnit() function

This commit is contained in:
Yair Morgenstern
2024-02-26 21:30:29 +02:00
parent 2d49838f13
commit e6a132a9d7
8 changed files with 14 additions and 16 deletions

View File

@ -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) {

View File

@ -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)

View File

@ -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 {

View File

@ -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<Unique>()
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()
}

View File

@ -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

View File

@ -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(

View File

@ -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()) {

View File

@ -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)