adding loadorder to savegame

This commit is contained in:
minjaesong
2022-08-31 02:40:46 +09:00
parent 0310c71c74
commit e4caf29791
11 changed files with 95 additions and 321 deletions

View File

@@ -65,4 +65,6 @@ module Terrarum {
exports net.torvald.terrarum.modulebasegame.gameworld;
exports net.torvald.terrarum.modulebasegame.ui;
exports net.torvald.terrarum.modulebasegame.worldgenerator;
exports net.torvald.terrarum.debuggerapp;
}

View File

@@ -147,13 +147,12 @@ class SavegameCracker(
@Command("Lists contents of the disk")
fun ls(args: List<String>) {
letdisk {
it.entries.forEach { i, entry ->
if (i != 0L)
println(
ccNoun + i.toString(10).padStart(11, ' ') + " " +
ccNoun2 + (diskIDtoReadableFilename(entry.entryID) + cc0).padEnd(24) { if (it == 0) ' ' else '.' } +
ccConst + " " + entry.contents.getSizePure() + " bytes"
)
it.entries.toSortedMap().forEach { (i, entry) ->
if (i != 0L) println(
ccNoun + i.toString(10).padStart(11, ' ') + " " +
ccNoun2 + (diskIDtoReadableFilename(entry.entryID) + cc0).padEnd(24) { if (it == 0) ' ' else '.' } +
ccConst + " " + entry.contents.getSizePure() + " bytes"
)
}
val entryCount = it.entries.size - 1
println("${cc0}$entryCount entries, total ${it.usedBytes} bytes")

View File

@@ -236,18 +236,22 @@ class VirtualDisk(
fun diskIDtoReadableFilename(id: EntryID): String = when (id) {
0L -> "root"
-1L -> "savegameinfo.json"
-2L -> "thumbnail.tga.gz"
-16L -> "blockcodex.json.gz"
-17L -> "itemcodex.json.gz"
-18L -> "wirecodex.json.gz"
-19L -> "materialcodex.json.gz"
-20L -> "factioncodex.json.gz"
-1024L -> "apocryphas.json.gz"
in 1..65535 -> "worldinfo-$id.json"
in 1048576..2147483647 -> "actor-$id.json"
-2L -> "thumbnail.tga.gz (world)/spritedef (player)"
-3L -> "spritedef-glow (player)"
-4L -> "loadOrder.txt"
// -16L -> "blockcodex.json.gz"
// -17L -> "itemcodex.json.gz"
// -18L -> "wirecodex.json.gz"
// -19L -> "materialcodex.json.gz"
// -20L -> "factioncodex.json.gz"
// -1024L -> "apocryphas.json.gz"
-1025L -> "bodypart-to-entry.map"
-1026L -> "bodypartglow-to-entry.map"
in 1..65535 -> "bodypart #$id.tga.gz (player)"
in 1048576..2147483647 -> "actor #$id.json"
in 0x0000_0001_0000_0000L..0x0000_FFFF_FFFF_FFFFL ->
"World${id.ushr(32)}-L${id.and(0xFF00_0000).ushr(24)}-C${id.and(0xFFFFFF)}.gz"
else -> "file-$id"
else -> "file #$id"
}
class DiskEntry(

View File

@@ -3,6 +3,7 @@ package net.torvald.terrarum.serialise
import net.torvald.gdx.graphics.PixmapIO2
import net.torvald.terrarum.App.printdbg
import net.torvald.terrarum.ItemCodex
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.ReferencingRanges.PREFIX_DYNAMICITEM
import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.itemproperties.ItemRemapTable
@@ -172,6 +173,16 @@ class WorldSavingThread(
}
// write loadorder //
val loadOrderBa64Writer = ByteArray64Writer(Common.CHARSET)
loadOrderBa64Writer.write(ModMgr.loadOrder.joinToString("\n"))
loadOrderBa64Writer.flush(); loadOrderBa64Writer.close()
val loadOrderText = loadOrderBa64Writer.toByteArray64()
val loadOrderContents = EntryFile(loadOrderText)
addFile(disk, DiskEntry(-4L, 0L, creation_t, time_t, loadOrderContents))
// Echo("Writing file to disk...")
disk.entries[0]!!.modificationDate = time_t

View File

@@ -2,19 +2,15 @@ package net.torvald.terrarum.serialise
import net.torvald.spriteanimation.AssembledSpriteAnimation
import net.torvald.spriteanimation.HasAssembledSprite
import net.torvald.spriteanimation.SpriteAnimation
import net.torvald.terrarum.spriteassembler.ADProperties
import net.torvald.terrarum.ItemCodex
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.ReferencingRanges.PREFIX_DYNAMICITEM
import net.torvald.terrarum.gameactors.Actor
import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameitems.GameItem
import net.torvald.terrarum.gameitems.ItemID
import net.torvald.terrarum.itemproperties.ItemRemapTable
import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
import net.torvald.terrarum.printStackTrace
import net.torvald.terrarum.savegame.*
import net.torvald.terrarum.spriteassembler.ADProperties
import java.io.Reader
import java.util.*
@@ -111,7 +107,13 @@ object WritePlayer {
addFile(playerDisk, DiskEntry(-3L, 0L, adlGlowCreationDate, time_t, adlGlowContents))
}
// write loadorder //
val loadOrderBa64Writer = ByteArray64Writer(Common.CHARSET)
loadOrderBa64Writer.write(ModMgr.loadOrder.joinToString("\n"))
loadOrderBa64Writer.flush(); loadOrderBa64Writer.close()
val loadOrderText = loadOrderBa64Writer.toByteArray64()
val loadOrderContents = EntryFile(loadOrderText)
addFile(playerDisk, DiskEntry(-4L, 0L, jsonCreationDate, time_t, loadOrderContents))
}
}