mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-30 23:41:03 -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.LocalUniqueCache
|
||||||
import com.unciv.models.ruleset.unique.GameContext
|
import com.unciv.models.ruleset.unique.GameContext
|
||||||
import com.unciv.models.ruleset.unique.UniqueType
|
import com.unciv.models.ruleset.unique.UniqueType
|
||||||
|
import com.unciv.ui.screens.worldscreen.unit.actions.UnitActionModifiers
|
||||||
|
|
||||||
object CityLocationTileRanker {
|
object CityLocationTileRanker {
|
||||||
|
|
||||||
@ -66,8 +67,9 @@ object CityLocationTileRanker {
|
|||||||
private fun canSettleTile(tile: Tile, unit: MapUnit, nearbyCities: Sequence<City>): Boolean {
|
private fun canSettleTile(tile: Tile, unit: MapUnit, nearbyCities: Sequence<City>): Boolean {
|
||||||
val civ = unit.civ
|
val civ = unit.civ
|
||||||
val unitCanFoundUnique = unit.getMatchingUniques(UniqueType.ConditionalInTiles).firstOrNull()
|
val unitCanFoundUnique = unit.getMatchingUniques(UniqueType.ConditionalInTiles).firstOrNull()
|
||||||
|
println(unitCanFoundUnique)
|
||||||
val modConstants = civ.gameInfo.ruleset.modOptions.constants
|
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
|
if (tile.getOwner() != null && tile.getOwner() != civ) return false
|
||||||
for (city in nearbyCities) {
|
for (city in nearbyCities) {
|
||||||
var addedDistanceBeweenContinents: Int
|
var addedDistanceBeweenContinents: Int
|
||||||
|
@ -638,8 +638,7 @@ class Tile : IsPartOfGameInfoSerialization, Json.Serializable {
|
|||||||
var addedDistanceBeweenContinents: Int
|
var addedDistanceBeweenContinents: Int
|
||||||
var canSettleInTileWithUnique = false
|
var canSettleInTileWithUnique = false
|
||||||
if (unitCanFoundUnique != null) {
|
if (unitCanFoundUnique != null) {
|
||||||
canSettleInTileWithUnique = (isWater || isImpassible()) &&
|
canSettleInTileWithUnique = !unitCanFoundUnique.getModifiers(UniqueType.ConditionalInTiles).none{
|
||||||
unitCanFoundUnique.getModifiers(UniqueType.ConditionalInTiles).none{
|
|
||||||
matchesFilter(it.params[0])
|
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.
|
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.
|
Because when .none return False when one element has a match.
|
||||||
*/
|
*/
|
||||||
|
println(canSettleInTileWithUnique)
|
||||||
|
|
||||||
addedDistanceBeweenContinents = if (!canSettleInTileWithUnique) 1 else 0
|
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.
|
Because this can crash the game in automateSettlerActions in SpecificUnitAutomation.kt.
|
||||||
*/
|
*/
|
||||||
if (unitCanFoundUnique != null) addedDistanceBeweenContinents else 0)
|
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)
|
getTilesInDistance(modConstants.minimalCityDistance)
|
||||||
.any { it.isCityCenter() && it.getContinent() == getContinent() } -> false
|
.any { it.isCityCenter() && it.getContinent() == getContinent() } -> false
|
||||||
else -> true
|
else -> true
|
||||||
|
@ -46,7 +46,8 @@ object UnitActionsFromUniques {
|
|||||||
UnitActionModifiers.getUsableUnitActionUniques(unit,
|
UnitActionModifiers.getUsableUnitActionUniques(unit,
|
||||||
UniqueType.FoundPuppetCity).firstOrNull() ?: return null
|
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
|
// 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
|
if (!unique.hasModifier(UniqueType.ConditionalInTiles) && (tile.isWater || tile.isImpassible())) return null
|
||||||
|
Loading…
x
Reference in New Issue
Block a user