mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-13 03:54:06 +09:00
added snapshot to versioning scheme
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user