From e61224224dfc2cc46549ef9229d628a72f6453b0 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Sat, 2 Oct 2021 10:13:33 +0900 Subject: [PATCH] initial save from newgame is now marked as autosave --- src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt | 2 +- src/net/torvald/terrarum/modulebasegame/console/Save.kt | 2 +- .../terrarum/modulebasegame/ui/UIInventoryEscMenu.kt | 2 +- src/net/torvald/terrarum/serialise/GameSavingThread.kt | 4 ++-- src/net/torvald/terrarum/serialise/WriteSavegame.kt | 8 ++++---- src/net/torvald/terrarum/ui/UIAutosaveNotifier.kt | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt index 09f427c5d..13c149f06 100644 --- a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt @@ -322,7 +322,7 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) { ) // make initial savefile - WriteSavegame.immediate(savegameArchive, getSaveFileMain(), this) { + WriteSavegame.immediate(savegameArchive, getSaveFileMain(), this, true) { makeSavegameBackupCopy() // don't put it on the postInit() or render(); must be called using callback } } diff --git a/src/net/torvald/terrarum/modulebasegame/console/Save.kt b/src/net/torvald/terrarum/modulebasegame/console/Save.kt index aab256457..6ad2f8007 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/Save.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/Save.kt @@ -24,7 +24,7 @@ object Save : ConsoleCommand { val disk = VDUtil.createNewDisk(1L shl 60, savename, Common.CHARSET) val file = File(App.defaultSaveDir + "/${args[1]}") - WriteSavegame(disk, file, ingame) + WriteSavegame(disk, file, ingame, false) } catch (e: IOException) { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt index babca5c89..1645c504d 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt @@ -89,7 +89,7 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() { INGAME.makeSavegameBackupCopy() // save the game - WriteSavegame(INGAME.savegameArchive, File(App.defaultSaveDir, INGAME.savegameNickname), Terrarum.ingame!! as TerrarumIngame) { + WriteSavegame(INGAME.savegameArchive, File(App.defaultSaveDir, INGAME.savegameNickname), Terrarum.ingame!! as TerrarumIngame, false) { // callback: System.gc() screen = 0 diff --git a/src/net/torvald/terrarum/serialise/GameSavingThread.kt b/src/net/torvald/terrarum/serialise/GameSavingThread.kt index 581249f47..5ee1231c9 100644 --- a/src/net/torvald/terrarum/serialise/GameSavingThread.kt +++ b/src/net/torvald/terrarum/serialise/GameSavingThread.kt @@ -13,7 +13,7 @@ import java.util.zip.GZIPOutputStream /** * Created by minjaesong on 2021-09-14. */ -class GameSavingThread(val disk: VirtualDisk, val outFile: File, val ingame: TerrarumIngame, val hasThumbnail: Boolean, val callback: () -> Unit) : Runnable { +class GameSavingThread(val disk: VirtualDisk, val outFile: File, val ingame: TerrarumIngame, val hasThumbnail: Boolean, val isAuto: Boolean, val callback: () -> Unit) : Runnable { /** * Will happily overwrite existing entry @@ -29,7 +29,7 @@ class GameSavingThread(val disk: VirtualDisk, val outFile: File, val ingame: Ter private val actorProgressMultiplier = 1f override fun run() { - disk.saveMode = 0 // no quick, no auto + disk.saveMode = 2 * isAuto.toInt() // no quick if (hasThumbnail) { while (!IngameRenderer.fboRGBexportedLatch) { diff --git a/src/net/torvald/terrarum/serialise/WriteSavegame.kt b/src/net/torvald/terrarum/serialise/WriteSavegame.kt index 9a43c6c4f..32d2c6089 100644 --- a/src/net/torvald/terrarum/serialise/WriteSavegame.kt +++ b/src/net/torvald/terrarum/serialise/WriteSavegame.kt @@ -28,7 +28,7 @@ object WriteSavegame { @Volatile var saveProgress = 0f @Volatile var saveProgressMax = 1f - operator fun invoke(disk: VirtualDisk, outFile: File, ingame: TerrarumIngame, callback: () -> Unit = {}) { + operator fun invoke(disk: VirtualDisk, outFile: File, ingame: TerrarumIngame, isAuto: Boolean, callback: () -> Unit = {}) { savingStatus = 0 Echo("Save queued") @@ -48,7 +48,7 @@ object WriteSavegame { } IngameRenderer.fboRGBexportRequested = true - val savingThread = Thread(GameSavingThread(disk, outFile, ingame, true, callback), "TerrarumBasegameGameSaveThread") + val savingThread = Thread(GameSavingThread(disk, outFile, ingame, true, isAuto, callback), "TerrarumBasegameGameSaveThread") savingThread.start() // it is caller's job to keep the game paused or keep a "save in progress" ui up @@ -56,12 +56,12 @@ object WriteSavegame { } - fun immediate(disk: VirtualDisk, outFile: File, ingame: TerrarumIngame, callback: () -> Unit = {}) { + fun immediate(disk: VirtualDisk, outFile: File, ingame: TerrarumIngame, isAuto: Boolean, callback: () -> Unit = {}) { savingStatus = 0 Echo("Immediate save fired") - val savingThread = Thread(GameSavingThread(disk, outFile, ingame, false, callback), "TerrarumBasegameGameSaveThread") + val savingThread = Thread(GameSavingThread(disk, outFile, ingame, false, isAuto, callback), "TerrarumBasegameGameSaveThread") savingThread.start() // it is caller's job to keep the game paused or keep a "save in progress" ui up diff --git a/src/net/torvald/terrarum/ui/UIAutosaveNotifier.kt b/src/net/torvald/terrarum/ui/UIAutosaveNotifier.kt index 9eb605e50..2ee64d867 100644 --- a/src/net/torvald/terrarum/ui/UIAutosaveNotifier.kt +++ b/src/net/torvald/terrarum/ui/UIAutosaveNotifier.kt @@ -39,7 +39,7 @@ class UIAutosaveNotifier : UICanvas() { val spin = spinner.get(spinnerFrame % 8, spinnerFrame / 8) val offX = (App.scr.tvSafeGraphicsWidth * 1.25f).roundToInt().toFloat() val offY = App.scr.tvSafeGraphicsHeight + 4f - + batch.color = Color.WHITE batch.draw(spin, offX, offY) App.fontGame.draw(batch, Lang["MENU_IO_SAVING"], offX + 30f, offY)