Resolved #3533 - Added confirmation popup when saving over existing save

This commit is contained in:
Yair Morgenstern
2021-01-15 13:28:29 +02:00
parent 13e79ac37c
commit 0800dbba51
2 changed files with 19 additions and 12 deletions

View File

@ -324,6 +324,7 @@ Upload map =
Could not upload map! = Could not upload map! =
Map uploaded successfully! = Map uploaded successfully! =
Saving... = Saving... =
Overwrite existing file? =
It looks like your saved game can't be loaded! = It looks like your saved game can't be loaded! =
If you could copy your game data ("Copy saved game to clipboard" - = If you could copy your game data ("Copy saved game to clipboard" - =
paste into an email to yairm210@hotmail.com) = paste into an email to yairm210@hotmail.com) =

View File

@ -17,23 +17,23 @@ import com.unciv.ui.utils.AutoScrollPane as ScrollPane
class SaveGameScreen : PickerScreen() { class SaveGameScreen : PickerScreen() {
val textField = TextField("", skin) val gameNameTextField = TextField("", skin)
val currentSaves = Table() val currentSaves = Table()
init { init {
setDefaultCloseAction() setDefaultCloseAction()
textField.textFieldFilter = TextField.TextFieldFilter { _, char -> char != '\\' && char != '/' } gameNameTextField.textFieldFilter = TextField.TextFieldFilter { _, char -> char != '\\' && char != '/' }
currentSaves.add("Current saves".toLabel()).row() currentSaves.add("Current saves".toLabel()).row()
updateShownSaves(false) updateShownSaves(false)
topTable.add(ScrollPane(currentSaves)).height(stage.height * 2 / 3) topTable.add(ScrollPane(currentSaves)).height(stage.height * 2 / 3)
val newSave = Table() val newSave = Table()
val defaultSaveName = game.gameInfo.currentPlayer + " - " + game.gameInfo.turns + " turns" val defaultSaveName = game.gameInfo.currentPlayer + " - " + game.gameInfo.turns + " turns"
textField.text = defaultSaveName gameNameTextField.text = defaultSaveName
newSave.add("Saved game name".toLabel()).row() newSave.add("Saved game name".toLabel()).row()
newSave.add(textField).width(300f).pad(10f).row() newSave.add(gameNameTextField).width(300f).pad(10f).row()
val copyJsonButton = "Copy to clipboard".toTextButton() val copyJsonButton = "Copy to clipboard".toTextButton()
copyJsonButton.onClick { copyJsonButton.onClick {
@ -51,7 +51,7 @@ class SaveGameScreen : PickerScreen() {
saveToCustomLocation.setText("Saving...".tr()) saveToCustomLocation.setText("Saving...".tr())
saveToCustomLocation.disable() saveToCustomLocation.disable()
thread(name = "SaveGame") { thread(name = "SaveGame") {
GameSaver.saveGameToCustomLocation(UncivGame.Current.gameInfo, textField.text) { e -> GameSaver.saveGameToCustomLocation(UncivGame.Current.gameInfo, gameNameTextField.text) { e ->
if (e == null) { if (e == null) {
Gdx.app.postRunnable { UncivGame.Current.setWorldScreen() } Gdx.app.postRunnable { UncivGame.Current.setWorldScreen() }
} else if (e !is CancellationException) { } else if (e !is CancellationException) {
@ -79,16 +79,22 @@ class SaveGameScreen : PickerScreen() {
rightSideButton.setText("Save game".tr()) rightSideButton.setText("Save game".tr())
rightSideButton.onClick { rightSideButton.onClick {
rightSideButton.setText("Saving...".tr()) if (GameSaver.getSave(gameNameTextField.text).exists())
thread(name = "SaveGame") { YesNoPopup("Overwrite existing file?", { saveGame() }, this).open()
GameSaver.saveGame(UncivGame.Current.gameInfo, textField.text) { else saveGame()
Gdx.app.postRunnable { UncivGame.Current.setWorldScreen() }
}
}
} }
rightSideButton.enable() rightSideButton.enable()
} }
private fun saveGame() {
rightSideButton.setText("Saving...".tr())
thread(name = "SaveGame") {
GameSaver.saveGame(UncivGame.Current.gameInfo, gameNameTextField.text) {
Gdx.app.postRunnable { UncivGame.Current.setWorldScreen() }
}
}
}
fun updateShownSaves(showAutosaves: Boolean) { fun updateShownSaves(showAutosaves: Boolean) {
currentSaves.clear() currentSaves.clear()
val saves = GameSaver.getSaves() val saves = GameSaver.getSaves()
@ -97,7 +103,7 @@ class SaveGameScreen : PickerScreen() {
if (saveGameFile.name().startsWith("Autosave") && !showAutosaves) continue if (saveGameFile.name().startsWith("Autosave") && !showAutosaves) continue
val textButton = saveGameFile.name().toTextButton() val textButton = saveGameFile.name().toTextButton()
textButton.onClick { textButton.onClick {
textField.text = saveGameFile.name() gameNameTextField.text = saveGameFile.name()
} }
currentSaves.add(textButton).pad(5f).row() currentSaves.add(textButton).pad(5f).row()
} }