mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-29 06:51:30 -04:00
Fix the iusse with Continent
This commit is contained in:
parent
a095c7e223
commit
556937694c
@ -11,6 +11,7 @@ import com.unciv.models.ruleset.tile.ResourceType
|
||||
import com.unciv.models.ruleset.unique.LocalUniqueCache
|
||||
import com.unciv.models.ruleset.unique.GameContext
|
||||
import com.unciv.models.ruleset.unique.UniqueType
|
||||
import com.unciv.ui.screens.worldscreen.unit.actions.UnitActionModifiers
|
||||
|
||||
object CityLocationTileRanker {
|
||||
|
||||
@ -66,8 +67,9 @@ object CityLocationTileRanker {
|
||||
private fun canSettleTile(tile: Tile, unit: MapUnit, nearbyCities: Sequence<City>): Boolean {
|
||||
val civ = unit.civ
|
||||
val unitCanFoundUnique = unit.getMatchingUniques(UniqueType.ConditionalInTiles).firstOrNull()
|
||||
println(unitCanFoundUnique)
|
||||
val modConstants = civ.gameInfo.ruleset.modOptions.constants
|
||||
if ( (!tile.isLand || tile.isImpassible())) return false
|
||||
if (unitCanFoundUnique == null && (!tile.isLand || tile.isImpassible())) return false
|
||||
if (tile.getOwner() != null && tile.getOwner() != civ) return false
|
||||
for (city in nearbyCities) {
|
||||
var addedDistanceBeweenContinents: Int
|
||||
|
@ -638,8 +638,7 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable {
|
||||
var addedDistanceBeweenContinents: Int
|
||||
var canSettleInTileWithUnique = false
|
||||
if (unitCanFoundUnique != null) {
|
||||
canSettleInTileWithUnique = (isWater || isImpassible()) &&
|
||||
unitCanFoundUnique.getModifiers(UniqueType.ConditionalInTiles).none{
|
||||
canSettleInTileWithUnique = !unitCanFoundUnique.getModifiers(UniqueType.ConditionalInTiles).none{
|
||||
matchesFilter(it.params[0])
|
||||
}
|
||||
}
|
||||
@ -647,6 +646,7 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable {
|
||||
Putting the ! to make sure the player/Ai doesn't place cities too near each other.
|
||||
Because when .none return False when one element has a match.
|
||||
*/
|
||||
println(canSettleInTileWithUnique)
|
||||
|
||||
addedDistanceBeweenContinents = if (!canSettleInTileWithUnique) 1 else 0
|
||||
|
||||
@ -658,7 +658,7 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable {
|
||||
Because this can crash the game in automateSettlerActions in SpecificUnitAutomation.kt.
|
||||
*/
|
||||
if (unitCanFoundUnique != null) addedDistanceBeweenContinents else 0)
|
||||
.any { it.isCityCenter() && it.getContinent() != getContinent() } -> false
|
||||
.any { it.isCityCenter() && it.getContinent() != getContinent() && unitCanFoundUnique != null } -> false
|
||||
getTilesInDistance(modConstants.minimalCityDistance)
|
||||
.any { it.isCityCenter() && it.getContinent() == getContinent() } -> false
|
||||
else -> true
|
||||
|
@ -46,7 +46,8 @@ object UnitActionsFromUniques {
|
||||
UnitActionModifiers.getUsableUnitActionUniques(unit,
|
||||
UniqueType.FoundPuppetCity).firstOrNull() ?: return null
|
||||
|
||||
val uniqueModifier = unit.getMatchingUniques(UniqueType.ConditionalInTiles).firstOrNull()
|
||||
val uniqueModifier = unique.getModifiers(UniqueType.ConditionalInTiles).firstOrNull()
|
||||
println(uniqueModifier)
|
||||
|
||||
// do this check like that settler unique that don't have ConditionalInTiles does not show the grayed out button on water/moutain
|
||||
if (!unique.hasModifier(UniqueType.ConditionalInTiles) && (tile.isWater || tile.isImpassible())) return null
|
||||
|
Loading…
x
Reference in New Issue
Block a user