From 22190be6d848e625239acc0f26b7131c11092be3 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Wed, 15 Sep 2021 10:04:19 +0900 Subject: [PATCH] fixed a bug where list of savefiles won't sort by last play date --- src/net/torvald/terrarum/Terrarum.kt | 3 ++- src/net/torvald/terrarum/serialise/GameSavingThread.kt | 4 ++++ src/net/torvald/terrarum/serialise/WriteMeta.kt | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index 023dc1540..36e56c5a6 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -688,7 +688,8 @@ fun AppUpdateListOfSavegames() { e.printStackTrace() null } - }.filter { it != null }.sortedByDescending { (it as VirtualDisk).entries[0]!!.modificationDate }.forEach { + }.filter { it != null && it.entries.contains(-1) } + .sortedByDescending { (it as VirtualDisk).entries[-1]!!.modificationDate }.forEach { App.savegames.add(it!!) } } \ No newline at end of file diff --git a/src/net/torvald/terrarum/serialise/GameSavingThread.kt b/src/net/torvald/terrarum/serialise/GameSavingThread.kt index 5038e56c3..cf23c3568 100644 --- a/src/net/torvald/terrarum/serialise/GameSavingThread.kt +++ b/src/net/torvald/terrarum/serialise/GameSavingThread.kt @@ -142,6 +142,10 @@ class GameSavingThread(val disk: VirtualDisk, val outFile: File, val ingame: Ter WriteSavegame.saveProgress += actorProgressMultiplier } + + disk.entries[0]!!.modificationDate = time_t + // entry zero MUST NOT be used to get lastPlayDate, but we'll update it anyway + // use entry -1 for that purpose! disk.capacity = 0 VDUtil.dumpToRealMachine(disk, outFile) diff --git a/src/net/torvald/terrarum/serialise/WriteMeta.kt b/src/net/torvald/terrarum/serialise/WriteMeta.kt index a76771ef9..04134adfb 100644 --- a/src/net/torvald/terrarum/serialise/WriteMeta.kt +++ b/src/net/torvald/terrarum/serialise/WriteMeta.kt @@ -29,7 +29,7 @@ object WriteMeta { weatseed1 = WeatherMixer.RNG.state1, playerid = ingame.actorGamer.referenceID, creation_t = ingame.creationTime, - lastplay_t = App.getTIME_T(), + lastplay_t = time_t, playtime_t = ingame.totalPlayTime + currentPlayTime_t, loadorder = ModMgr.loadOrder.toTypedArray(), worlds = ingame.gameworldIndices.toTypedArray()