From b428273fa2835b514f4904f12fba0b5b5f0e78ab Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 8 Oct 2024 20:22:40 +0900 Subject: [PATCH] more on savegame migrator and virtualdisk bugfix --- lib/TerranVirtualDisk-src.jar | 4 ++-- lib/TerranVirtualDisk.jar | 4 ++-- src/net/torvald/terrarum/IngameInstance.kt | 2 +- .../terrarum/modulebasegame/SavegameConverter.kt | 13 +++++++++++++ .../modulebasegame/worldgenerator/Worldgen.kt | 2 +- src/net/torvald/terrarum/serialise/Common.kt | 2 +- 6 files changed, 20 insertions(+), 7 deletions(-) diff --git a/lib/TerranVirtualDisk-src.jar b/lib/TerranVirtualDisk-src.jar index eb7a1c3f8..59696b283 100644 --- a/lib/TerranVirtualDisk-src.jar +++ b/lib/TerranVirtualDisk-src.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:280e6b9e2c9a1013ae40bcb7fcb04e793f81eee84b9831da1d232c98e90084c6 -size 93474 +oid sha256:ec423b385c3ca9480ebfd28a8e06bee6f498fc7782dde5181baeb26753747cc5 +size 93580 diff --git a/lib/TerranVirtualDisk.jar b/lib/TerranVirtualDisk.jar index 77188e2ef..95bf490b9 100644 --- a/lib/TerranVirtualDisk.jar +++ b/lib/TerranVirtualDisk.jar @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad678b0763421e4c1811e359bdd4b6b7ab353eb087fc7bb39e690244116cd425 -size 5212023 +oid sha256:49a36b137be41f5da11ef2d82a75357f6681d5191f2236ec6a06d15821a3fd4d +size 5212250 diff --git a/src/net/torvald/terrarum/IngameInstance.kt b/src/net/torvald/terrarum/IngameInstance.kt index 7f44223f9..c40ad3480 100644 --- a/src/net/torvald/terrarum/IngameInstance.kt +++ b/src/net/torvald/terrarum/IngameInstance.kt @@ -159,7 +159,7 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo val wallChangeQueue = ArrayList() val wireChangeQueue = ArrayList() // if 'old' is set and 'new' is blank, it's a wire cutter - val modifiedChunks = Array(16) { TreeSet() } + val modifiedChunks = Array(16) { TreeSet() } var loadedTime_t = App.getTIME_T() protected set diff --git a/src/net/torvald/terrarum/modulebasegame/SavegameConverter.kt b/src/net/torvald/terrarum/modulebasegame/SavegameConverter.kt index de7629894..7315cfd9a 100644 --- a/src/net/torvald/terrarum/modulebasegame/SavegameConverter.kt +++ b/src/net/torvald/terrarum/modulebasegame/SavegameConverter.kt @@ -49,11 +49,17 @@ object SavegameConverter { val DOM = ClusteredFormatDOM(newDisk) val root = DOM.getRootFile() + var cnt = 0 + // do filecopy type254DOM.entries.filter { it.key != 0L }.forEach { entryID, diskEntry -> val filename = Common.type254EntryIDtoType17Filename(entryID) + + println("Converting file $filename; old cluster size: ${DOM.usedClusterCount}; old ROOT cluster num: ${DOM.getRootDir().entryID}; fileCount: $cnt") + if (diskEntry.contents !is EntryFile) throw IllegalStateException("Entry in the savegame is not a file (${diskEntry.contents.javaClass.simpleName})") + cnt += 1 val entry = diskEntry.contents as EntryFile val oldBytes = entry.bytes.toByteArray() @@ -72,4 +78,11 @@ object SavegameConverter { DOM.dispose() } +} + +fun main() { + val infile = File("/home/torvald/.Terrarum/Worlds/2d3e3aa5-bf5b-45c8-acf6-66ef9f1c2217") + val outfile = File("/home/torvald/.Terrarum/Worlds/2d3e3aa5-bf5b-45c8-acf6-66ef9f1c2217.terrarumworld") + + SavegameConverter.type254toType11(infile, outfile) } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt index 0141ec3da..d33e79a95 100644 --- a/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt +++ b/src/net/torvald/terrarum/modulebasegame/worldgenerator/Worldgen.kt @@ -550,7 +550,7 @@ abstract class Gen(val world: GameWorld, val isFinal: Boolean, val seed: Long, v protected abstract fun getGenerator(seed: Long, params: Any?): List protected abstract fun draw(xStart: Int, yStart: Int, noises: List, soff: Double) - private fun getChunksRange(): List { + private fun getChunksRange(): List { val (yStart, yEnd) = Worldgen.getChunkGenStrip(world) return (0 until world.width / CHUNK_W step 2).flatMap { cx -> // skip every other column because we can :smiling_face_with_horns: (LandUtil.chunkXYtoChunkNum(world, cx, yStart)..LandUtil.chunkXYtoChunkNum(world, cx, yEnd)).toList() diff --git a/src/net/torvald/terrarum/serialise/Common.kt b/src/net/torvald/terrarum/serialise/Common.kt index 3ed52e6e5..8328f318f 100644 --- a/src/net/torvald/terrarum/serialise/Common.kt +++ b/src/net/torvald/terrarum/serialise/Common.kt @@ -761,7 +761,7 @@ object Common { fun type254EntryIDtoType17Filename(entryID: Long): String { - return entryID.toString(16).uppercase().padStart(16,'0') + return entryID.toULong().toString(16).uppercase().padStart(16,'0') } }