mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-26 21:35:14 -04:00
Proper separation between "Scenario Map" and "Scenario"
This commit is contained in:
parent
a27aecda09
commit
d090b0567c
@ -147,7 +147,7 @@ class MainMenuScreen: CameraStageBaseScreen() {
|
|||||||
add(loadMapButton).row()
|
add(loadMapButton).row()
|
||||||
|
|
||||||
if (UncivGame.Current.settings.extendedMapEditor) {
|
if (UncivGame.Current.settings.extendedMapEditor) {
|
||||||
val loadScenarioButton = screen.getTableBlock("Load scenario", "OtherIcons/Scenario") {
|
val loadScenarioButton = screen.getTableBlock("Load scenario map", "OtherIcons/Scenario") {
|
||||||
val loadScenarioScreen = LoadScenarioScreen(null)
|
val loadScenarioScreen = LoadScenarioScreen(null)
|
||||||
loadScenarioScreen.closeButton.isVisible = true
|
loadScenarioScreen.closeButton.isVisible = true
|
||||||
loadScenarioScreen.closeButton.onClick {
|
loadScenarioScreen.closeButton.onClick {
|
||||||
|
@ -21,7 +21,7 @@ object GameStarter {
|
|||||||
gameInfo.gameParameters = gameSetupInfo.gameParameters
|
gameInfo.gameParameters = gameSetupInfo.gameParameters
|
||||||
val ruleset = RulesetCache.getComplexRuleset(gameInfo.gameParameters)
|
val ruleset = RulesetCache.getComplexRuleset(gameInfo.gameParameters)
|
||||||
|
|
||||||
if (gameSetupInfo.mapParameters.type == MapType.scenario)
|
if (gameSetupInfo.mapParameters.type == MapType.scenarioMap)
|
||||||
gameInfo.tileMap = MapSaver.loadScenario(gameSetupInfo.mapParameters.name).tileMap
|
gameInfo.tileMap = MapSaver.loadScenario(gameSetupInfo.mapParameters.name).tileMap
|
||||||
else if (gameSetupInfo.mapParameters.name != "")
|
else if (gameSetupInfo.mapParameters.name != "")
|
||||||
gameInfo.tileMap = MapSaver.loadMap(gameSetupInfo.mapParameters.name)
|
gameInfo.tileMap = MapSaver.loadMap(gameSetupInfo.mapParameters.name)
|
||||||
@ -68,7 +68,7 @@ object GameStarter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// and only now do we add units for everyone, because otherwise both the gameInfo.setTransients() and the placeUnit will both add the unit to the civ's unit list!
|
// and only now do we add units for everyone, because otherwise both the gameInfo.setTransients() and the placeUnit will both add the unit to the civ's unit list!
|
||||||
if (gameSetupInfo.mapParameters.type != MapType.scenario)
|
if (gameSetupInfo.mapParameters.type != MapType.scenarioMap)
|
||||||
addCivStartingUnits(gameInfo)
|
addCivStartingUnits(gameInfo)
|
||||||
|
|
||||||
return gameInfo
|
return gameInfo
|
||||||
|
@ -26,9 +26,9 @@ object MapType {
|
|||||||
const val custom = "Custom"
|
const val custom = "Custom"
|
||||||
|
|
||||||
// Loaded scenario
|
// Loaded scenario
|
||||||
const val scenario = "Scenario"
|
const val scenarioMap = "Scenario Map"
|
||||||
|
|
||||||
const val scenarioFromSavedGame = "ScenarioFromSavedGame"
|
const val scenario = "Scenario"
|
||||||
|
|
||||||
// All ocean tiles
|
// All ocean tiles
|
||||||
const val empty = "Empty"
|
const val empty = "Empty"
|
||||||
|
@ -23,7 +23,7 @@ class LoadScenarioScreen(previousMap: TileMap?): PickerScreen(){
|
|||||||
val deleteScenarioButton = "Delete scenario".toTextButton()
|
val deleteScenarioButton = "Delete scenario".toTextButton()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
rightSideButton.setText("Load scenario".tr())
|
rightSideButton.setText("Load scenario map".tr())
|
||||||
rightSideButton.onClick {
|
rightSideButton.onClick {
|
||||||
val mapEditorScreen = MapEditorScreen(MapSaver.loadScenario(chosenScenario), chosenScenario)
|
val mapEditorScreen = MapEditorScreen(MapSaver.loadScenario(chosenScenario), chosenScenario)
|
||||||
UncivGame.Current.setScreen(mapEditorScreen)
|
UncivGame.Current.setScreen(mapEditorScreen)
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package com.unciv.ui.mapeditor
|
package com.unciv.ui.mapeditor
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx
|
import com.badlogic.gdx.Gdx
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.TextField
|
import com.badlogic.gdx.scenes.scene2d.ui.TextField
|
||||||
import com.badlogic.gdx.utils.Json
|
import com.badlogic.gdx.utils.Json
|
||||||
import com.unciv.Constants
|
import com.unciv.Constants
|
||||||
@ -13,8 +12,6 @@ import com.unciv.logic.map.RoadStatus
|
|||||||
import com.unciv.logic.map.Scenario
|
import com.unciv.logic.map.Scenario
|
||||||
import com.unciv.logic.map.TileMap
|
import com.unciv.logic.map.TileMap
|
||||||
import com.unciv.models.metadata.Player
|
import com.unciv.models.metadata.Player
|
||||||
import com.unciv.ui.newgamescreen.GameOptionsTable
|
|
||||||
import com.unciv.ui.newgamescreen.PlayerPickerTable
|
|
||||||
import com.unciv.ui.saves.Gzip
|
import com.unciv.ui.saves.Gzip
|
||||||
import com.unciv.ui.utils.*
|
import com.unciv.ui.utils.*
|
||||||
import com.unciv.ui.worldscreen.mainmenu.DropBox
|
import com.unciv.ui.worldscreen.mainmenu.DropBox
|
||||||
@ -159,9 +156,9 @@ class MapEditorMenuPopup(var mapEditorScreen: MapEditorScreen): Popup(mapEditorS
|
|||||||
private fun Popup.addScenarioButton() {
|
private fun Popup.addScenarioButton() {
|
||||||
var scenarioButton = "".toTextButton()
|
var scenarioButton = "".toTextButton()
|
||||||
if (mapEditorScreen.hasScenario()) {
|
if (mapEditorScreen.hasScenario()) {
|
||||||
scenarioButton.setText("Edit scenario")
|
scenarioButton.setText("Edit scenario parameters")
|
||||||
} else {
|
} else {
|
||||||
scenarioButton.setText("Create scenario")
|
scenarioButton.setText("Create scenario map")
|
||||||
// for newly created scenarios read players from tileMap
|
// for newly created scenarios read players from tileMap
|
||||||
val players = getPlayersFromMap(mapEditorScreen.tileMap)
|
val players = getPlayersFromMap(mapEditorScreen.tileMap)
|
||||||
mapEditorScreen.gameSetupInfo.gameParameters.players = players
|
mapEditorScreen.gameSetupInfo.gameParameters.players = players
|
||||||
@ -176,19 +173,20 @@ class MapEditorMenuPopup(var mapEditorScreen: MapEditorScreen): Popup(mapEditorS
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun Popup.addSaveScenarioButton() {
|
private fun Popup.addSaveScenarioButton() {
|
||||||
val saveScenarioButton = "Save scenario".toTextButton()
|
val saveScenarioButton = "Save scenario map".toTextButton()
|
||||||
add(saveScenarioButton).row()
|
add(saveScenarioButton).row()
|
||||||
saveScenarioButton.onClick {
|
saveScenarioButton.onClick {
|
||||||
thread(name = "SaveScenario") {
|
thread(name = "SaveScenarioMap") {
|
||||||
try {
|
try {
|
||||||
mapEditorScreen.tileMap.mapParameters.type = MapType.scenario
|
mapEditorScreen.tileMap.mapParameters.type = MapType.scenarioMap
|
||||||
mapEditorScreen.scenario = Scenario(mapEditorScreen.tileMap, mapEditorScreen.gameSetupInfo.gameParameters)
|
mapEditorScreen.scenario = Scenario(mapEditorScreen.tileMap, mapEditorScreen.gameSetupInfo.gameParameters)
|
||||||
|
mapEditorScreen.scenario!!.gameParameters.godMode = true // so we can edit this scenario when loading from the map
|
||||||
mapEditorScreen.scenarioName = mapNameEditor.text
|
mapEditorScreen.scenarioName = mapNameEditor.text
|
||||||
MapSaver.saveScenario(mapNameEditor.text, mapEditorScreen.scenario!!)
|
MapSaver.saveScenario(mapNameEditor.text, mapEditorScreen.scenario!!)
|
||||||
|
|
||||||
close()
|
close()
|
||||||
Gdx.app.postRunnable {
|
Gdx.app.postRunnable {
|
||||||
ResponsePopup("Scenario saved", mapEditorScreen) // todo - add this text to translations
|
ResponsePopup("Scenario Map saved", mapEditorScreen) // todo - add this text to translations
|
||||||
}
|
}
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
ex.printStackTrace()
|
ex.printStackTrace()
|
||||||
@ -210,7 +208,7 @@ class MapEditorMenuPopup(var mapEditorScreen: MapEditorScreen): Popup(mapEditorS
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun Popup.addLoadScenarioButton() {
|
private fun Popup.addLoadScenarioButton() {
|
||||||
val loadScenarioButton = "Load scenario".toTextButton()
|
val loadScenarioButton = "Load scenario map".toTextButton()
|
||||||
loadScenarioButton.onClick {
|
loadScenarioButton.onClick {
|
||||||
UncivGame.Current.setScreen(LoadScenarioScreen(mapEditorScreen.tileMap))
|
UncivGame.Current.setScreen(LoadScenarioScreen(mapEditorScreen.tileMap))
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,8 @@ class MapOptionsTable(val newGameScreen: NewGameScreen): Table() {
|
|||||||
private var mapTypeSpecificTable = Table()
|
private var mapTypeSpecificTable = Table()
|
||||||
private val generatedMapOptionsTable = MapParametersTable(mapParameters)
|
private val generatedMapOptionsTable = MapParametersTable(mapParameters)
|
||||||
private val savedMapOptionsTable = Table()
|
private val savedMapOptionsTable = Table()
|
||||||
private val savedScenarioOptionsTable = Table()
|
private val scenarioMapOptionsTable = Table()
|
||||||
private val scenarioFromSavedGameOptionsTable = Table()
|
private val scenarioOptionsTable = Table()
|
||||||
var selectedScenarioSaveGame: GameInfo? = null
|
var selectedScenarioSaveGame: GameInfo? = null
|
||||||
lateinit var mapTypeSelectBox: TranslatedSelectBox
|
lateinit var mapTypeSelectBox: TranslatedSelectBox
|
||||||
|
|
||||||
@ -31,11 +31,12 @@ class MapOptionsTable(val newGameScreen: NewGameScreen): Table() {
|
|||||||
|
|
||||||
fun selectSavedGameAsScenario(gameName: String){
|
fun selectSavedGameAsScenario(gameName: String){
|
||||||
val savedGame = GameSaver.loadGameByName(gameName)
|
val savedGame = GameSaver.loadGameByName(gameName)
|
||||||
mapParameters.type = MapType.scenarioFromSavedGame
|
mapParameters.type = MapType.scenario
|
||||||
mapParameters.name = gameName
|
mapParameters.name = gameName
|
||||||
newGameScreen.updateTables()
|
|
||||||
newGameScreen.gameSetupInfo.gameParameters = savedGame.gameParameters
|
newGameScreen.gameSetupInfo.gameParameters = savedGame.gameParameters
|
||||||
newGameScreen.gameSetupInfo.mapParameters = savedGame.tileMap.mapParameters
|
newGameScreen.gameSetupInfo.mapParameters = savedGame.tileMap.mapParameters
|
||||||
|
newGameScreen.updateRuleset()
|
||||||
|
newGameScreen.updateTables()
|
||||||
selectedScenarioSaveGame = savedGame
|
selectedScenarioSaveGame = savedGame
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,9 +45,9 @@ class MapOptionsTable(val newGameScreen: NewGameScreen): Table() {
|
|||||||
val mapTypes = arrayListOf("Generated")
|
val mapTypes = arrayListOf("Generated")
|
||||||
if (MapSaver.getMaps().isNotEmpty()) mapTypes.add(MapType.custom)
|
if (MapSaver.getMaps().isNotEmpty()) mapTypes.add(MapType.custom)
|
||||||
if (MapSaver.getScenarios().isNotEmpty() && UncivGame.Current.settings.extendedMapEditor)
|
if (MapSaver.getScenarios().isNotEmpty() && UncivGame.Current.settings.extendedMapEditor)
|
||||||
|
mapTypes.add(MapType.scenarioMap)
|
||||||
|
if (GameSaver.getSaves().any { it.toLowerCase().endsWith("scenario") })
|
||||||
mapTypes.add(MapType.scenario)
|
mapTypes.add(MapType.scenario)
|
||||||
if (UncivGame.Current.settings.extendedMapEditor && GameSaver.getSaves().any { it.endsWith("Scenario") })
|
|
||||||
mapTypes.add(MapType.scenarioFromSavedGame)
|
|
||||||
mapTypeSelectBox = TranslatedSelectBox(mapTypes, "Generated", CameraStageBaseScreen.skin)
|
mapTypeSelectBox = TranslatedSelectBox(mapTypes, "Generated", CameraStageBaseScreen.skin)
|
||||||
|
|
||||||
val mapFileSelectBox = getMapFileSelectBox()
|
val mapFileSelectBox = getMapFileSelectBox()
|
||||||
@ -57,23 +58,24 @@ class MapOptionsTable(val newGameScreen: NewGameScreen): Table() {
|
|||||||
.right().row()
|
.right().row()
|
||||||
|
|
||||||
|
|
||||||
val scenarioFileSelectBox = getScenarioFileSelectBox()
|
val scenarioMapSelectBox = getScenarioFileSelectBox()
|
||||||
savedScenarioOptionsTable.defaults().pad(5f)
|
scenarioMapOptionsTable.defaults().pad(5f)
|
||||||
savedScenarioOptionsTable.add("{Scenario file}:".toLabel()).left()
|
scenarioMapOptionsTable.add("{Scenario file}:".toLabel()).left()
|
||||||
// because SOME people gotta give the hugest names to their maps
|
// because SOME people gotta give the hugest names to their maps
|
||||||
savedScenarioOptionsTable.add(scenarioFileSelectBox).maxWidth(newGameScreen.stage.width / 2)
|
scenarioMapOptionsTable.add(scenarioMapSelectBox).maxWidth(newGameScreen.stage.width / 2)
|
||||||
.right().row()
|
.right().row()
|
||||||
|
|
||||||
|
|
||||||
val scenarioFromSavedGameSelectBox = SelectBox<String>(CameraStageBaseScreen.skin)
|
val scenarioSelectBox = SelectBox<String>(CameraStageBaseScreen.skin)
|
||||||
for (savedGame in GameSaver.getSaves()) {
|
for (savedGame in GameSaver.getSaves()) {
|
||||||
if (savedGame.endsWith("Scenario"))
|
if (savedGame.toLowerCase().endsWith("scenario"))
|
||||||
scenarioFromSavedGameSelectBox.items.add(savedGame)
|
scenarioSelectBox.items.add(savedGame)
|
||||||
}
|
}
|
||||||
scenarioFromSavedGameSelectBox.onChange { selectSavedGameAsScenario(scenarioFromSavedGameSelectBox.selected) }
|
scenarioSelectBox.onChange { selectSavedGameAsScenario(scenarioSelectBox.selected) }
|
||||||
scenarioFromSavedGameSelectBox.selected = scenarioFileSelectBox.items.first()
|
scenarioSelectBox.items = scenarioSelectBox.items // it doesn't register them until you do this.
|
||||||
scenarioFromSavedGameOptionsTable.add("{Scenario file}:".toLabel()).left()
|
scenarioSelectBox.selected = scenarioMapSelectBox.items.first()
|
||||||
scenarioFromSavedGameOptionsTable.add(scenarioFromSavedGameSelectBox)
|
scenarioOptionsTable.add("{Scenario file}:".toLabel()).left()
|
||||||
|
scenarioOptionsTable.add(scenarioSelectBox)
|
||||||
|
|
||||||
fun updateOnMapTypeChange() {
|
fun updateOnMapTypeChange() {
|
||||||
mapTypeSpecificTable.clear()
|
mapTypeSpecificTable.clear()
|
||||||
@ -83,10 +85,10 @@ class MapOptionsTable(val newGameScreen: NewGameScreen): Table() {
|
|||||||
mapTypeSpecificTable.add(savedMapOptionsTable)
|
mapTypeSpecificTable.add(savedMapOptionsTable)
|
||||||
newGameScreen.unlockTables()
|
newGameScreen.unlockTables()
|
||||||
newGameScreen.updateTables()
|
newGameScreen.updateTables()
|
||||||
} else if (mapTypeSelectBox.selected.value == MapType.scenario) {
|
} else if (mapTypeSelectBox.selected.value == MapType.scenarioMap) {
|
||||||
mapParameters.type = MapType.scenario
|
mapParameters.type = MapType.scenarioMap
|
||||||
mapParameters.name = scenarioFileSelectBox.selected
|
mapParameters.name = scenarioMapSelectBox.selected
|
||||||
mapTypeSpecificTable.add(savedScenarioOptionsTable)
|
mapTypeSpecificTable.add(scenarioMapOptionsTable)
|
||||||
val scenario = MapSaver.loadScenario(mapParameters.name)
|
val scenario = MapSaver.loadScenario(mapParameters.name)
|
||||||
newGameScreen.gameSetupInfo.gameParameters = scenario.gameParameters
|
newGameScreen.gameSetupInfo.gameParameters = scenario.gameParameters
|
||||||
newGameScreen.gameSetupInfo.mapParameters = mapParameters
|
newGameScreen.gameSetupInfo.mapParameters = mapParameters
|
||||||
@ -94,12 +96,10 @@ class MapOptionsTable(val newGameScreen: NewGameScreen): Table() {
|
|||||||
// update PlayerTable and GameOptionsTable
|
// update PlayerTable and GameOptionsTable
|
||||||
newGameScreen.lockTables()
|
newGameScreen.lockTables()
|
||||||
newGameScreen.updateTables()
|
newGameScreen.updateTables()
|
||||||
} else if(mapTypeSelectBox.selected.value == MapType.scenarioFromSavedGame){
|
} else if(mapTypeSelectBox.selected.value == MapType.scenario){
|
||||||
selectSavedGameAsScenario(scenarioFromSavedGameSelectBox.selected)
|
selectSavedGameAsScenario(scenarioSelectBox.selected)
|
||||||
mapTypeSpecificTable.add(scenarioFromSavedGameOptionsTable)
|
mapTypeSpecificTable.add(scenarioOptionsTable)
|
||||||
newGameScreen.updateRuleset()
|
|
||||||
newGameScreen.lockTables()
|
newGameScreen.lockTables()
|
||||||
newGameScreen.updateTables()
|
|
||||||
} else { // generated map
|
} else { // generated map
|
||||||
mapParameters.name = ""
|
mapParameters.name = ""
|
||||||
mapParameters.type = generatedMapOptionsTable.mapTypeSelectBox.selected.value
|
mapParameters.type = generatedMapOptionsTable.mapTypeSelectBox.selected.value
|
||||||
|
@ -11,7 +11,6 @@ import com.unciv.logic.civilization.PlayerType
|
|||||||
import com.unciv.logic.map.MapParameters
|
import com.unciv.logic.map.MapParameters
|
||||||
import com.unciv.logic.map.MapType
|
import com.unciv.logic.map.MapType
|
||||||
import com.unciv.models.metadata.GameParameters
|
import com.unciv.models.metadata.GameParameters
|
||||||
import com.unciv.models.ruleset.Ruleset
|
|
||||||
import com.unciv.models.ruleset.RulesetCache
|
import com.unciv.models.ruleset.RulesetCache
|
||||||
import com.unciv.models.translations.tr
|
import com.unciv.models.translations.tr
|
||||||
import com.unciv.ui.pickerscreens.PickerScreen
|
import com.unciv.ui.pickerscreens.PickerScreen
|
||||||
@ -99,7 +98,7 @@ class NewGameScreen(previousScreen:CameraStageBaseScreen, _gameSetupInfo: GameSe
|
|||||||
|
|
||||||
private fun newGameThread() {
|
private fun newGameThread() {
|
||||||
try {
|
try {
|
||||||
if (mapOptionsTable.mapTypeSelectBox.selected.value == MapType.scenarioFromSavedGame) {
|
if (mapOptionsTable.mapTypeSelectBox.selected.value == MapType.scenario) {
|
||||||
newGame = mapOptionsTable.selectedScenarioSaveGame
|
newGame = mapOptionsTable.selectedScenarioSaveGame
|
||||||
// to take the definition of which players are human and which are AI
|
// to take the definition of which players are human and which are AI
|
||||||
for (player in gameSetupInfo.gameParameters.players) {
|
for (player in gameSetupInfo.gameParameters.players) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user