From 2e61023248440206a1e641f6940e0a7ce18975db Mon Sep 17 00:00:00 2001 From: SomeTroglodyte <63000004+SomeTroglodyte@users.noreply.github.com> Date: Thu, 13 Apr 2023 10:52:16 +0200 Subject: [PATCH] Close immediate win loophole (playing alone) (#9176) --- .../unciv/ui/screens/newgamescreen/GameOptionsTable.kt | 9 +++------ .../com/unciv/ui/screens/newgamescreen/NewGameScreen.kt | 2 +- .../unciv/ui/screens/newgamescreen/PlayerPickerTable.kt | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/core/src/com/unciv/ui/screens/newgamescreen/GameOptionsTable.kt b/core/src/com/unciv/ui/screens/newgamescreen/GameOptionsTable.kt index d44443a24e..f20d626c19 100644 --- a/core/src/com/unciv/ui/screens/newgamescreen/GameOptionsTable.kt +++ b/core/src/com/unciv/ui/screens/newgamescreen/GameOptionsTable.kt @@ -221,17 +221,14 @@ class GameOptionsTable( private fun Table.addRandomPlayersCheckbox() = addCheckbox("Random number of Civilizations", gameParameters.randomNumberOfPlayers) - {newRandomNumberOfPlayers -> + { newRandomNumberOfPlayers -> gameParameters.randomNumberOfPlayers = newRandomNumberOfPlayers if (newRandomNumberOfPlayers) { // remove all random AI from player picker - val newPlayers = gameParameters.players.asSequence() + gameParameters.players = gameParameters.players.asSequence() .filterNot { it.playerType == PlayerType.AI && it.chosenCiv == Constants.random } .toCollection(ArrayList(gameParameters.players.size)) - if (newPlayers.size != gameParameters.players.size) { - gameParameters.players = newPlayers - updatePlayerPickerTable("") - } + updatePlayerPickerTable("") } else { // Fill up player picker with random AI until previously active min reached val additionalRandom = gameParameters.minNumberOfPlayers - gameParameters.players.size diff --git a/core/src/com/unciv/ui/screens/newgamescreen/NewGameScreen.kt b/core/src/com/unciv/ui/screens/newgamescreen/NewGameScreen.kt index e95fbbdaf4..32c820ed77 100644 --- a/core/src/com/unciv/ui/screens/newgamescreen/NewGameScreen.kt +++ b/core/src/com/unciv/ui/screens/newgamescreen/NewGameScreen.kt @@ -65,6 +65,7 @@ class NewGameScreen( if (gameSetupInfo.gameParameters.victoryTypes.isEmpty()) gameSetupInfo.gameParameters.victoryTypes.addAll(ruleset.victories.keys) + rightSideButton.enable() // now because PlayerPickerTable init might disable it again playerPickerTable = PlayerPickerTable( this, gameSetupInfo.gameParameters, if (isPortrait) stage.width - 20f else 0f @@ -98,7 +99,6 @@ class NewGameScreen( } } - rightSideButton.enable() rightSideButton.setText("Start game!".tr()) rightSideButton.onClick(this::onStartGameClicked) } diff --git a/core/src/com/unciv/ui/screens/newgamescreen/PlayerPickerTable.kt b/core/src/com/unciv/ui/screens/newgamescreen/PlayerPickerTable.kt index 3638f4bd30..b0bd115030 100644 --- a/core/src/com/unciv/ui/screens/newgamescreen/PlayerPickerTable.kt +++ b/core/src/com/unciv/ui/screens/newgamescreen/PlayerPickerTable.kt @@ -124,7 +124,7 @@ class PlayerPickerTable( // enable start game when at least one human player and they're not alone val humanPlayerCount = gameParameters.players.count { it.playerType == PlayerType.Human } - val isValid = humanPlayerCount >= 1 + val isValid = humanPlayerCount >= 1 && (isRandomNumberOfPlayers || gameParameters.players.size >= 2) (previousScreen as? PickerScreen)?.setRightSideButtonEnabled(isValid) }