Merged "load map" and "load scenario map" to the same screen - they're basically the same thing anyway

This commit is contained in:
Yair Morgenstern 2020-08-14 10:07:15 +03:00
parent 6ebc4ebf6f
commit 795599207f
4 changed files with 68 additions and 137 deletions

View File

@ -146,22 +146,6 @@ class MainMenuScreen: CameraStageBaseScreen() {
loadMapButton.background = tableBackground
add(loadMapButton).row()
if (UncivGame.Current.settings.extendedMapEditor) {
val loadScenarioButton = screen.getTableBlock("Load scenario map", "OtherIcons/Scenario") {
val loadScenarioScreen = LoadScenarioScreen(null)
loadScenarioScreen.closeButton.isVisible = true
loadScenarioScreen.closeButton.onClick {
screen.game.setScreen(MainMenuScreen())
loadScenarioScreen.dispose()
}
screen.game.setScreen(loadScenarioScreen)
screen.dispose()
}
loadScenarioButton.background = tableBackground
add(loadScenarioButton).row()
}
add(screen.getTableBlock("Close", "OtherIcons/Close") { close() }
.apply { background=tableBackground })

View File

@ -4,6 +4,7 @@ import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.badlogic.gdx.utils.Align
import com.unciv.UncivGame
import com.unciv.logic.MapSaver
import com.unciv.logic.map.TileMap
@ -15,28 +16,32 @@ import com.unciv.ui.utils.AutoScrollPane as ScrollPane
class LoadMapScreen(previousMap: TileMap?) : PickerScreen(){
var chosenMap = ""
val deleteMapButton = "Delete map".toTextButton()
val deleteButton = "Delete map".toTextButton()
var scenarioMap = false
val mapsTable = Table().apply { defaults().pad(10f) }
init {
if(UncivGame.Current.settings.extendedMapEditor) {
val toggleButton = "Toggle Scenario Map".toTextButton()
toggleButton.onClick {
scenarioMap = !scenarioMap
update()
}
toggleButton.centerX(stage)
toggleButton.setY(stage.height - 10f, Align.top)
stage.addActor(toggleButton)
}
rightSideButton.setText("Load map".tr())
rightSideButton.onClick {
UncivGame.Current.setScreen(MapEditorScreen(chosenMap))
val mapEditorScreen = if (scenarioMap) MapEditorScreen(MapSaver.loadScenario(chosenMap), chosenMap)
else MapEditorScreen(chosenMap)
UncivGame.Current.setScreen(mapEditorScreen)
dispose()
}
val mapsTable = Table().apply { defaults().pad(10f) }
for (map in MapSaver.getMaps()) {
val loadMapButton = TextButton(map, skin)
loadMapButton.onClick {
rightSideButton.enable()
chosenMap = map
deleteMapButton.enable()
deleteMapButton.color = Color.RED
}
mapsTable.add(loadMapButton).row()
}
topTable.add(ScrollPane(mapsTable)).height(stage.height * 2 / 3)
.maxWidth(stage.width/2)
.maxWidth(stage.width / 2)
val rightSideTable = Table().apply { defaults().pad(10f) }
@ -50,33 +55,72 @@ class LoadMapScreen(previousMap: TileMap?) : PickerScreen(){
val loadFromClipboardButton = "Load copied data".toTextButton()
val couldNotLoadMapLabel = "Could not load map!".toLabel(Color.RED).apply { isVisible=false }
val couldNotLoadMapLabel = "Could not load map!".toLabel(Color.RED).apply { isVisible = false }
loadFromClipboardButton.onClick {
try {
val clipboardContentsString = Gdx.app.clipboard.contents.trim()
val decoded = Gzip.unzip(clipboardContentsString)
val loadedMap = MapSaver.mapFromJson(decoded)
UncivGame.Current.setScreen(MapEditorScreen(loadedMap))
}
catch (ex:Exception){
couldNotLoadMapLabel.isVisible=true
} catch (ex: Exception) {
couldNotLoadMapLabel.isVisible = true
}
}
rightSideTable.add(loadFromClipboardButton).row()
rightSideTable.add(couldNotLoadMapLabel).row()
deleteMapButton.onClick {
deleteButton.onClick {
YesNoPopup("Are you sure you want to delete this map?", {
MapSaver.deleteMap(chosenMap)
if (scenarioMap) MapSaver.deleteScenario(chosenMap)
else MapSaver.deleteMap(chosenMap)
UncivGame.Current.setScreen(LoadMapScreen(previousMap))
}, this).open()
}
deleteMapButton.disable()
deleteMapButton.color = Color.RED
rightSideTable.add(deleteMapButton).row()
rightSideTable.add(deleteButton).row()
topTable.add(rightSideTable)
if(previousMap!=null) closeButton.onClick { UncivGame.Current.setScreen(MapEditorScreen(previousMap)) }
if (previousMap != null)
closeButton.onClick { UncivGame.Current.setScreen(MapEditorScreen(previousMap)) }
update()
}
fun update() {
chosenMap = ""
deleteButton.disable()
deleteButton.color = Color.RED
if (scenarioMap) {
deleteButton.setText("Delete Scenario Map")
rightSideButton.setText("Load Scenario Map")
mapsTable.clear()
for (scenario in MapSaver.getScenarios()) {
val loadScenarioButton = TextButton(scenario, skin)
loadScenarioButton.onClick {
rightSideButton.enable()
chosenMap = scenario
deleteButton.enable()
deleteButton.color = Color.RED
}
mapsTable.add(loadScenarioButton).row()
}
} else {
deleteButton.setText("Delete map")
rightSideButton.setText("Load map")
mapsTable.clear()
for (map in MapSaver.getMaps()) {
val loadMapButton = TextButton(map, skin)
loadMapButton.onClick {
rightSideButton.enable()
chosenMap = map
deleteButton.enable()
deleteButton.color = Color.RED
}
mapsTable.add(loadMapButton).row()
}
}
}
}

View File

@ -1,88 +0,0 @@
package com.unciv.ui.mapeditor
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.unciv.UncivGame
import com.unciv.logic.MapSaver
import com.unciv.logic.map.Scenario
import com.unciv.logic.map.TileMap
import com.unciv.models.translations.tr
import com.unciv.ui.pickerscreens.PickerScreen
import com.unciv.ui.saves.Gzip
import com.unciv.ui.utils.*
/**
* [PickerScreen] used for simple load/delete scenario. Called from [MapEditorScreen]
* and returns to that [Screen] type.
* @param previousMap [TileMap] to return when no scenario chosen
*/
class LoadScenarioScreen(previousMap: TileMap?): PickerScreen(){
var chosenScenario = ""
val deleteScenarioButton = "Delete scenario".toTextButton()
init {
rightSideButton.setText("Load scenario map".tr())
rightSideButton.onClick {
val mapEditorScreen = MapEditorScreen(MapSaver.loadScenario(chosenScenario), chosenScenario)
UncivGame.Current.setScreen(mapEditorScreen)
dispose()
}
val scenariosTable = Table().apply { defaults().pad(10f) }
for (scenario in MapSaver.getScenarios()) {
val loadScenarioButton = TextButton(scenario, skin)
loadScenarioButton.onClick {
rightSideButton.enable()
chosenScenario = scenario
deleteScenarioButton.enable()
deleteScenarioButton.color = Color.RED
}
scenariosTable.add(loadScenarioButton).row()
}
topTable.add(AutoScrollPane(scenariosTable)).height(stage.height * 2 / 3)
.maxWidth(stage.width/2)
val rightSideTable = Table().apply { defaults().pad(10f) }
// val downloadMapButton = "Download map".toTextButton()
// downloadMapButton.onClick {
// MapDownloadPopup(this).open()
// }
// rightSideTable.add(downloadMapButton).row()
//
// rightSideTable.addSeparator()
// val loadFromClipboardButton = "Load copied data".toTextButton()
// val couldNotLoadMapLabel = "Could not load map!".toLabel(Color.RED).apply { isVisible=false }
// loadFromClipboardButton.onClick {
// try {
// val clipboardContentsString = Gdx.app.clipboard.contents.trim()
// val decoded = Gzip.unzip(clipboardContentsString)
// val loadedMap = MapSaver.mapFromJson(decoded)
// UncivGame.Current.setScreen(MapEditorScreen(loadedMap))
// }
// catch (ex:Exception){
// couldNotLoadMapLabel.isVisible=true
// }
// }
// rightSideTable.add(loadFromClipboardButton).row()
// rightSideTable.add(couldNotLoadMapLabel).row()
deleteScenarioButton.onClick {
YesNoPopup("Are you sure you want to delete this scenario?", {
MapSaver.deleteScenario(chosenScenario)
UncivGame.Current.setScreen(LoadScenarioScreen(previousMap))
}, this).open()
}
deleteScenarioButton.disable()
deleteScenarioButton.color = Color.RED
rightSideTable.add(deleteScenarioButton).row()
topTable.add(rightSideTable)
if(previousMap!=null) closeButton.onClick { UncivGame.Current.setScreen(MapEditorScreen(previousMap)) }
}
}

View File

@ -36,7 +36,6 @@ class MapEditorMenuPopup(var mapEditorScreen: MapEditorScreen): Popup(mapEditorS
if (UncivGame.Current.settings.extendedMapEditor) {
addScenarioButton()
addSaveScenarioButton()
addLoadScenarioButton()
}
addExitMapEditorButton()
addCloseOptionsButton()
@ -207,14 +206,6 @@ class MapEditorMenuPopup(var mapEditorScreen: MapEditorScreen): Popup(mapEditorS
}
}
private fun Popup.addLoadScenarioButton() {
val loadScenarioButton = "Load scenario map".toTextButton()
loadScenarioButton.onClick {
UncivGame.Current.setScreen(LoadScenarioScreen(mapEditorScreen.tileMap))
}
add(loadScenarioButton).row()
}
private fun Popup.addExitMapEditorButton() {
val exitMapEditorButton = "Exit map editor".toTextButton()