mirror of
https://github.com/yairm210/Unciv.git
synced 2025-10-03 00:45:19 -04:00
More changes towards player-based game starts
This commit is contained in:
parent
93634dae31
commit
9de30bfbce
@ -2,7 +2,6 @@ package com.unciv.ui.newgamescreen
|
||||
|
||||
import com.badlogic.gdx.scenes.scene2d.Touchable
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Label
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Skin
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||
import com.unciv.GameParameters
|
||||
import com.unciv.models.gamebasics.GameBasics
|
||||
@ -11,7 +10,8 @@ import com.unciv.models.gamebasics.Translations
|
||||
import com.unciv.models.gamebasics.tr
|
||||
import com.unciv.ui.utils.*
|
||||
|
||||
class NationTable(val nation: Nation, val newGameParameters: GameParameters, skin: Skin, width:Float, onClick:()->Unit): Table(skin){
|
||||
class NationTable(val nation: Nation, val newGameParameters: GameParameters, width:Float, onClick:()->Unit)
|
||||
: Table(CameraStageBaseScreen.skin){
|
||||
val innerTable = Table()
|
||||
init {
|
||||
background = ImageGetter.getBackground(nation.getSecondaryColor())
|
||||
@ -28,13 +28,6 @@ class NationTable(val nation: Nation, val newGameParameters: GameParameters, ski
|
||||
.apply { setWrap(true);setFontColor(nation.getSecondaryColor()) })
|
||||
.width(width)
|
||||
onClick {
|
||||
if (nation.name in newGameParameters.humanNations) {
|
||||
newGameParameters.humanNations.remove(nation.name)
|
||||
} else {
|
||||
newGameParameters.humanNations.add(nation.name)
|
||||
if (newGameParameters.humanNations.size > newGameParameters.numberOfHumanPlayers)
|
||||
newGameParameters.humanNations.removeAt(0)
|
||||
}
|
||||
onClick()
|
||||
}
|
||||
touchable = Touchable.enabled
|
||||
|
@ -1,7 +1,10 @@
|
||||
package com.unciv.ui.newgamescreen
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.*
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Skin
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||
import com.badlogic.gdx.utils.Array
|
||||
import com.unciv.Constants
|
||||
import com.unciv.GameStarter
|
||||
@ -11,7 +14,9 @@ import com.unciv.logic.civilization.PlayerType
|
||||
import com.unciv.models.gamebasics.GameBasics
|
||||
import com.unciv.models.gamebasics.tr
|
||||
import com.unciv.ui.pickerscreens.PickerScreen
|
||||
import com.unciv.ui.utils.*
|
||||
import com.unciv.ui.utils.disable
|
||||
import com.unciv.ui.utils.enable
|
||||
import com.unciv.ui.utils.onClick
|
||||
import com.unciv.ui.worldscreen.WorldScreen
|
||||
import com.unciv.ui.worldscreen.optionstable.PopupTable
|
||||
import kotlin.concurrent.thread
|
||||
@ -34,7 +39,16 @@ class NewGameScreen: PickerScreen(){
|
||||
// mainTable.add(playerPickerTable)
|
||||
|
||||
for(nation in GameBasics.Nations.values.filterNot { it.name == "Barbarians" || it.isCityState() }) {
|
||||
val nationTable = NationTable(nation, newGameParameters, skin, stage.width / 3) { updateNationTables() }
|
||||
val nationTable = NationTable(nation, newGameParameters,stage.width/3) {
|
||||
if (nation.name in newGameParameters.humanNations) {
|
||||
newGameParameters.humanNations.remove(nation.name)
|
||||
} else {
|
||||
newGameParameters.humanNations.add(nation.name)
|
||||
if (newGameParameters.humanNations.size > newGameParameters.numberOfHumanPlayers)
|
||||
newGameParameters.humanNations.removeAt(0)
|
||||
}
|
||||
updateNationTables()
|
||||
}
|
||||
nationTables.add(nationTable)
|
||||
civPickerTable.add(nationTable).row()
|
||||
}
|
||||
@ -104,36 +118,3 @@ class TranslatedSelectBox(values : Collection<String>, default:String, skin: Ski
|
||||
}
|
||||
}
|
||||
|
||||
class Player{
|
||||
var playerType: PlayerType=PlayerType.AI
|
||||
var chosenCiv = Constants.random
|
||||
}
|
||||
|
||||
class PlayerPickerTable:Table(){
|
||||
val playerList = ArrayList<Player>()
|
||||
|
||||
init {
|
||||
update()
|
||||
}
|
||||
|
||||
fun update(){
|
||||
clear()
|
||||
for(player in playerList)
|
||||
add(getPlayerTable(player)).row()
|
||||
add("+".toLabel().setFontSize(24).onClick { playerList.add(Player()); update() })
|
||||
}
|
||||
|
||||
fun getPlayerTable(player:Player): Table {
|
||||
val table = Table()
|
||||
val playerTypeTextbutton = TextButton(player.playerType.name, CameraStageBaseScreen.skin)
|
||||
playerTypeTextbutton.onClick {
|
||||
if (player.playerType == PlayerType.AI)
|
||||
player.playerType = PlayerType.Human
|
||||
else player.playerType = PlayerType.AI
|
||||
update()
|
||||
}
|
||||
table.add(playerTypeTextbutton)
|
||||
table.add(TextButton("Remove".tr(),CameraStageBaseScreen.skin).onClick { playerList.remove(player); update() })
|
||||
return table
|
||||
}
|
||||
}
|
||||
|
64
core/src/com/unciv/ui/newgamescreen/PlayerPickerTable.kt
Normal file
64
core/src/com/unciv/ui/newgamescreen/PlayerPickerTable.kt
Normal file
@ -0,0 +1,64 @@
|
||||
package com.unciv.ui.newgamescreen
|
||||
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
||||
import com.unciv.Constants
|
||||
import com.unciv.GameParameters
|
||||
import com.unciv.logic.civilization.PlayerType
|
||||
import com.unciv.models.gamebasics.GameBasics
|
||||
import com.unciv.models.gamebasics.tr
|
||||
import com.unciv.ui.utils.CameraStageBaseScreen
|
||||
import com.unciv.ui.utils.onClick
|
||||
import com.unciv.ui.utils.setFontSize
|
||||
import com.unciv.ui.utils.toLabel
|
||||
|
||||
class PlayerPickerTable: Table(){
|
||||
val playerList = ArrayList<Player>()
|
||||
val selectedPlayer: Player?=null
|
||||
|
||||
init {
|
||||
update()
|
||||
}
|
||||
|
||||
fun update(){
|
||||
clear()
|
||||
val playerListTable = Table()
|
||||
for(player in playerList)
|
||||
playerListTable.add(getPlayerTable(player)).row()
|
||||
playerListTable.add("+".toLabel().setFontSize(24).onClick { playerList.add(Player()); update() })
|
||||
add(playerListTable)
|
||||
|
||||
if(selectedPlayer!=null){
|
||||
val nationsTable = Table()
|
||||
for(nation in GameBasics.Nations.values){
|
||||
if(selectedPlayer.chosenCiv!=nation.name && playerList.any { it.chosenCiv==nation.name })
|
||||
continue
|
||||
|
||||
nationsTable.add(NationTable(nation, GameParameters(), width / 3) {
|
||||
selectedPlayer.chosenCiv = nation.name
|
||||
update()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getPlayerTable(player: Player): Table {
|
||||
val table = Table()
|
||||
val playerTypeTextbutton = TextButton(player.playerType.name, CameraStageBaseScreen.skin)
|
||||
playerTypeTextbutton.onClick {
|
||||
if (player.playerType == PlayerType.AI)
|
||||
player.playerType = PlayerType.Human
|
||||
else player.playerType = PlayerType.AI
|
||||
update()
|
||||
}
|
||||
table.add(playerTypeTextbutton)
|
||||
table.add(TextButton("Remove".tr(), CameraStageBaseScreen.skin).onClick { playerList.remove(player); update() })
|
||||
return table
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Player{
|
||||
var playerType: PlayerType=PlayerType.AI
|
||||
var chosenCiv = Constants.random
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user