fixed a bug where a dynamic item would not get saved/loaded at all

This commit is contained in:
minjaesong
2022-02-22 17:12:49 +09:00
parent 1787ad7cdd
commit df6950c0b8
30 changed files with 206 additions and 89 deletions

View File

@@ -23,6 +23,8 @@ class DiskSkimmer(
noInit: Boolean = false
): SimpleFileSystem {
override fun getBackingFile() = diskFile
/*
init:

View File

@@ -1,5 +1,6 @@
package net.torvald.terrarum.savegame
import java.io.File
import java.nio.charset.Charset
/**
@@ -9,4 +10,5 @@ interface SimpleFileSystem {
fun getEntry(id: EntryID): DiskEntry?
fun getFile(id: EntryID): EntryFile?
fun getDiskName(charset: Charset): String
fun getBackingFile(): File?
}

View File

@@ -63,7 +63,7 @@ object VDUtil {
if (diskSpecVersion != specversion)
throw RuntimeException("Unsupported disk format version: current internal version is $specversion; the file's version is $diskSpecVersion")
val vdisk = VirtualDisk(diskSize, diskName)
val vdisk = VirtualDisk(diskSize, diskName, infile)
vdisk.__internalSetFooter__(footers)

View File

@@ -2,6 +2,7 @@ package net.torvald.terrarum.savegame
import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.serialise.Common
import java.io.File
import java.io.IOException
import java.nio.charset.Charset
import java.util.*
@@ -125,8 +126,12 @@ val specversion = 254.toByte()
class VirtualDisk(
/** capacity of 0 makes the disk read-only */
var capacity: Long,
var diskName: ByteArray = ByteArray(NAME_LENGTH)
var diskName: ByteArray = ByteArray(NAME_LENGTH),
var origin: File? = null
): SimpleFileSystem {
override fun getBackingFile() = origin
var extraInfoBytes = ByteArray(16)
val entries = HashMap<EntryID, DiskEntry>()
var isReadOnly: Boolean

View File

@@ -1,6 +1,7 @@
package net.torvald.terrarum.savegame.finder
import net.torvald.terrarum.savegame.*
import net.torvald.terrarum.serialise.Common
import java.awt.BorderLayout
import java.awt.Dimension
import java.awt.event.KeyEvent
@@ -676,5 +677,5 @@ ${String(file.contents.bytes.sliceArray64(0L..minOf(PREVIEW_MAX_BYTES, file.cont
}
fun main(args: Array<String>) {
VirtualDiskCracker(Charset.forName("CP437"))
VirtualDiskCracker(Common.CHARSET)
}