fixed a bug where wires cause quicksave to fail

This commit is contained in:
minjaesong
2021-09-30 10:44:48 +09:00
parent 277ecbcebd
commit 588ac047db
7 changed files with 29 additions and 25 deletions

View File

@@ -124,7 +124,7 @@ class GameSavingThread(val disk: VirtualDisk, val outFile: File, val ingame: Ter
Echo("Writing chunks... ${(cw*ch*layer) + chunkNumber + 1}/${cw*ch*layers.size}")
val chunkBytes = WriteWorld.encodeChunk(layers[layer], cx, cy)
val chunkBytes = WriteWorld.encodeChunk(layers[layer]!!, cx, cy)
val entryID = worldNum.toLong().shl(32) or layer.toLong().shl(24) or chunkNumber
val entryContent = EntryFile(chunkBytes)

View File

@@ -91,27 +91,27 @@ class QuickSaveThread(val disk: VirtualDisk, val file: File, val ingame: Terraru
chunks.forEachIndexed { layerNum, chunks ->
if (chunks.size != 0) {
val layer = ingame.world.getLayer(layerNum)
ingame.world.getLayer(layerNum)?.let { layer ->
chunks.forEach { chunkNumber ->
chunks.forEach { chunkNumber ->
Echo("Writing chunks... $chunksWrote/$chunkCount")
Echo("Writing chunks... $chunksWrote/$chunkCount")
val chunkXY = LandUtil.chunkNumToChunkXY(ingame.world, chunkNumber)
val chunkXY = LandUtil.chunkNumToChunkXY(ingame.world, chunkNumber)
// println("Chunk xy from number $chunkNumber -> (${chunkXY.x}, ${chunkXY.y})")
val chunkBytes = WriteWorld.encodeChunk(layer, chunkXY.x, chunkXY.y)
val entryID = worldNum.toLong().shl(32) or layerNum.toLong().shl(24) or chunkNumber.toLong()
val chunkBytes = WriteWorld.encodeChunk(layer, chunkXY.x, chunkXY.y)
val entryID = worldNum.toLong().shl(32) or layerNum.toLong().shl(24) or chunkNumber.toLong()
val entryContent = EntryFile(chunkBytes)
val entry = DiskEntry(entryID, 0, creation_t, time_t, entryContent)
// "W1L0-92,15"
addFile(disk, entry); skimmer.appendEntryOnly(entry)
val entryContent = EntryFile(chunkBytes)
val entry = DiskEntry(entryID, 0, creation_t, time_t, entryContent)
// "W1L0-92,15"
addFile(disk, entry); skimmer.appendEntryOnly(entry)
WriteSavegame.saveProgress += chunkProgressMultiplier
chunksWrote += 1
WriteSavegame.saveProgress += chunkProgressMultiplier
chunksWrote += 1
}
}
}
}

View File

@@ -166,7 +166,7 @@ object LoadSavegame {
val chunkFile = VDUtil.getAsNormalFile(disk, worldnum.shl(32) or layer.toLong().shl(24) or chunk)
val chunkXY = LandUtil.chunkNumToChunkXY(world, chunk.toInt())
ReadWorld.decodeChunkToLayer(chunkFile.getContent(), worldLayer[layer], chunkXY.x, chunkXY.y)
ReadWorld.decodeChunkToLayer(chunkFile.getContent(), worldLayer[layer]!!, chunkXY.x, chunkXY.y)
}
}