added snapshot to versioning scheme

This commit is contained in:
minjaesong
2023-10-04 21:42:15 +09:00
parent 652dfe39eb
commit 3d34363525
11 changed files with 111 additions and 7 deletions

View File

@@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame.serialise
import net.torvald.gdx.graphics.PixmapIO2
import net.torvald.terrarum.App
import net.torvald.terrarum.TerrarumAppConfiguration
import net.torvald.terrarum.modulebasegame.IngameRenderer
import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.savegame.*
@@ -41,6 +42,7 @@ class PlayerSavingThread(
disk.saveKind = VDSaveKind.PLAYER_DATA
disk.saveOrigin = disk.saveOrigin and 15 // remove flag "imported" if applicable
disk.capacity = 0L
disk.snapshot = TerrarumAppConfiguration.VERSION_SNAPSHOT
WriteSavegame.saveProgress = 0f

View File

@@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame.serialise
import net.torvald.gdx.graphics.PixmapIO2
import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.TerrarumAppConfiguration
import net.torvald.terrarum.modulebasegame.IngameRenderer
import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
@@ -150,6 +151,7 @@ class QuickSingleplayerWorldSavingThread(
skimmer.injectDiskCRC(disk.hashCode())
skimmer.setSaveMode(1 + 2 * isAuto.toInt())
skimmer.setSaveKind(VDSaveKind.WORLD_DATA)
skimmer.setSaveSnapshotVersion(TerrarumAppConfiguration.VERSION_SNAPSHOT)
skimmer.setSaveOrigin(skimmer.getSaveOrigin() and 15) // remove flag "imported" if applicable
skimmer.setLastModifiedTime(time_t)
skimmer.setCreationTime(creation_t)

View File

@@ -42,6 +42,7 @@ class WorldSavingThread(
disk.saveMode = 2 * isAuto.toInt() // no quick
disk.saveKind = VDSaveKind.WORLD_DATA
disk.saveOrigin = disk.saveOrigin and 15 // remove flag "imported" if applicable
disk.snapshot = TerrarumAppConfiguration.VERSION_SNAPSHOT
// wait for screencap
var emergencyStopCnt = 0

View File

@@ -526,14 +526,18 @@ class UIItemPlayerCells(
loadable.rebuild()
loadable.getFile(SAVEGAMEINFO)?.bytes?.let {
var lastPlayTime0 = 0L
var genver = ""
JsonFetcher.readFromJsonString(ByteArray64Reader(it, Common.CHARSET)).forEachSiblings { name, value ->
if (name == "worldCurrentlyPlaying") worldUUID = UUID.fromString(value.asString())
if (name == "totalPlayTime") totalPlayTime = parseDuration(value.asLong())
if (name == "lastPlayTime") lastPlayTime0 = value.asLong()
if (name == "genver") versionString = value.asLong().let { "${it.ushr(48)}.${it.ushr(24).and(0xFFFFFF)}.${it.and(0xFFFFFF)}" }
if (name == "genver") genver = value.asLong().let { "${it.ushr(48)}.${it.ushr(24).and(0xFFFFFF)}.${it.and(0xFFFFFF)}" }
}
val snap = loadable.getSaveSnapshotVersion()
versionString = genver + (if (snap != null) "-$snap" else "")
App.savegamePlayersName[playerUUID]?.let { if (it.isNotBlank()) playerName = it else "(name)" }
App.savegameWorldsName[worldUUID]?.let { if (it.isNotBlank()) worldName = it }
lastPlayTime = Instant.ofEpochSecond(lastPlayTime0)
@@ -749,6 +753,7 @@ class UIItemWorldCells(
private val metaFile: EntryFile?
private val saveName: String
private val saveMode: Int
private val snapshot: String
private val isQuick: Boolean
private val isAuto: Boolean
private var saveDamaged: Boolean = false
@@ -760,6 +765,7 @@ class UIItemWorldCells(
saveName = skimmer.getDiskName(Common.CHARSET)
saveMode = skimmer.getSaveMode()
snapshot = skimmer.getSaveSnapshotVersion()?.toString() ?: ""
isQuick = (saveMode % 2 == 1)
isAuto = (saveMode.ushr(1) != 0)

View File

@@ -447,12 +447,16 @@ class UILoadManage(val full: UILoadSavegame) : UICanvas() {
if (!this.initialised) this.rebuild()
this.getFile(SAVEGAMEINFO)!!.bytes.let {
var lastPlayTime = 0L
var versionString = ""
var genver = ""
val isAuto = (this.getSaveMode() and 0b10 != 0)
JsonFetcher.readFromJsonString(ByteArray64Reader(it, Common.CHARSET)).forEachSiblings { name, value ->
if (name == "lastPlayTime") lastPlayTime = value.asLong()
if (name == "genver") versionString = value.asLong().let { "${it.ushr(48)}.${it.ushr(24).and(0xFFFFFF)}.${it.and(0xFFFFFF)}" }
if (name == "genver") genver = value.asLong().let { "${it.ushr(48)}.${it.ushr(24).and(0xFFFFFF)}.${it.and(0xFFFFFF)}" }
}
val snap = this.getSaveSnapshotVersion()?.toString()
// val versionString = genver + (if (snap != null) "-$snap" else "")
val versionString = if (snap != null) "$snap" else genver
return SavegameMeta(
lastPlayTime,

View File

@@ -80,6 +80,7 @@ class UINewCharacter(val remoCon: UIRemoCon) : UICanvas() {
disk.saveMode = 2 // auto, no quick
disk.capacity = 0L
disk.saveOrigin = VDSaveOrigin.INGAME
disk.snapshot = TerrarumAppConfiguration.VERSION_SNAPSHOT
WritePlayer(player, disk, null, time_t)
VDUtil.dumpToRealMachine(disk, outFile)