bugfix: players can no longer get citystate nations when selecting mod

This commit is contained in:
Yair Morgenstern
2022-12-16 14:32:05 +02:00
parent a8df3ea242
commit 5aba4cb6a0
4 changed files with 21 additions and 19 deletions

View File

@ -2,8 +2,10 @@ package com.unciv.logic
import com.unciv.Constants
import com.unciv.UncivGame
import com.unciv.utils.debug
import com.unciv.logic.civilization.*
import com.unciv.logic.civilization.AlertType
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.civilization.PlayerType
import com.unciv.logic.civilization.PopupAlert
import com.unciv.logic.map.TileInfo
import com.unciv.logic.map.TileMap
import com.unciv.logic.map.mapgenerator.MapGenerator
@ -15,9 +17,8 @@ import com.unciv.models.ruleset.RulesetCache
import com.unciv.models.ruleset.unique.UniqueType
import com.unciv.models.translations.equalsPlaceholderText
import com.unciv.models.translations.getPlaceholderParameters
import com.unciv.utils.debug
import java.util.*
import kotlin.collections.HashMap
import kotlin.collections.HashSet
object GameStarter {
// temporary instrumentation while tuning/debugging
@ -220,7 +221,6 @@ object GameStarter {
// CityState or Spectator civs are not available for Random pick
availableCivNames.addAll(ruleset.nations.filter { it.value.isMajorCiv() }.keys.shuffled())
availableCivNames.removeAll(newGameParameters.players.map { it.chosenCiv }.toSet())
availableCivNames.remove(Constants.barbarians)
val startingTechs = ruleset.technologies.values.filter { it.hasUnique(UniqueType.StartingTech) }

View File

@ -292,7 +292,8 @@ class GameOptionsTable(
var desiredCiv = ""
if (gameParameters.mods.contains(mod)) {
val modNations = RulesetCache[mod]?.nations
if (modNations != null && modNations.size > 0) desiredCiv = modNations.keys.first()
if (modNations != null && modNations.size > 0)
desiredCiv = modNations.values.filter { it.isMajorCiv() }.random().name
val music = UncivGame.Current.musicController
if (!music.chooseTrack(mod, MusicMood.Theme, MusicTrackChooserFlags.setSelectNation) && desiredCiv.isNotEmpty())

View File

@ -83,20 +83,21 @@ class PlayerPickerTable(
playerListTable.add(getPlayerTable(player)).width(civBlocksWidth).padBottom(20f).row()
}
if (!locked && gameParameters.players.size < gameBasics.nations.values.count { it.isMajorCiv() }) {
val addPlayerButton = "+".toLabel(Color.BLACK, 30).apply { this.setAlignment(Align.center) }
.surroundWithCircle(50f)
.onClick {
var player = Player()
// no random mode - add first not spectator civ if still available
if (noRandom) {
val availableCiv = getAvailablePlayerCivs().firstOrNull()
if (availableCiv != null) player = Player(availableCiv.name)
// Spectators only Humans
else player = Player(Constants.spectator).apply { playerType = PlayerType.Human }
}
gameParameters.players.add(player)
update()
val addPlayerButton = "+".toLabel(Color.BLACK, 30)
.apply { this.setAlignment(Align.center) }
.surroundWithCircle(50f)
.onClick {
var player = Player()
// no random mode - add first not spectator civ if still available
if (noRandom) {
val availableCiv = getAvailablePlayerCivs().firstOrNull()
if (availableCiv != null) player = Player(availableCiv.name)
// Spectators only Humans
else player = Player(Constants.spectator).apply { playerType = PlayerType.Human }
}
gameParameters.players.add(player)
update()
}
playerListTable.add(addPlayerButton).pad(10f)
}
// enable start game when more than 1 active player

Binary file not shown.

Before

Width:  |  Height:  |  Size: 357 KiB

After

Width:  |  Height:  |  Size: 363 KiB