diff --git a/core/src/com/unciv/MainMenuScreen.kt b/core/src/com/unciv/MainMenuScreen.kt index 719ddb425c..2bbf663bbe 100644 --- a/core/src/com/unciv/MainMenuScreen.kt +++ b/core/src/com/unciv/MainMenuScreen.kt @@ -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 }) diff --git a/core/src/com/unciv/ui/mapeditor/LoadMapScreen.kt b/core/src/com/unciv/ui/mapeditor/LoadMapScreen.kt index fc0f95493e..5f2496c5b7 100644 --- a/core/src/com/unciv/ui/mapeditor/LoadMapScreen.kt +++ b/core/src/com/unciv/ui/mapeditor/LoadMapScreen.kt @@ -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() + } + } } } diff --git a/core/src/com/unciv/ui/mapeditor/LoadScenarioScreen.kt b/core/src/com/unciv/ui/mapeditor/LoadScenarioScreen.kt deleted file mode 100644 index 754d2767ef..0000000000 --- a/core/src/com/unciv/ui/mapeditor/LoadScenarioScreen.kt +++ /dev/null @@ -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)) } - } - -} \ No newline at end of file diff --git a/core/src/com/unciv/ui/mapeditor/MapEditorMenuPopup.kt b/core/src/com/unciv/ui/mapeditor/MapEditorMenuPopup.kt index 8f3b9f967f..b12f43378e 100644 --- a/core/src/com/unciv/ui/mapeditor/MapEditorMenuPopup.kt +++ b/core/src/com/unciv/ui/mapeditor/MapEditorMenuPopup.kt @@ -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()