mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-09 10:04:05 +09:00
serialisation of the world is split into two packages: complex one is moved under the modulebasegame package
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -2,6 +2,7 @@ package net.torvald.terrarum.gameworld
|
|||||||
|
|
||||||
import com.badlogic.gdx.utils.Disposable
|
import com.badlogic.gdx.utils.Disposable
|
||||||
import net.torvald.terrarum.App.printdbg
|
import net.torvald.terrarum.App.printdbg
|
||||||
|
import net.torvald.terrarum.serialise.toUint
|
||||||
import net.torvald.unsafe.UnsafeHelper
|
import net.torvald.unsafe.UnsafeHelper
|
||||||
import net.torvald.unsafe.UnsafePtr
|
import net.torvald.unsafe.UnsafePtr
|
||||||
|
|
||||||
@@ -107,5 +108,3 @@ open class BlockLayer(val width: Int, val height: Int) : Disposable {
|
|||||||
@Transient val BYTES_PER_BLOCK = 2L
|
@Transient val BYTES_PER_BLOCK = 2L
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Byte.toUint() = java.lang.Byte.toUnsignedInt(this)
|
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ class PhysicalStatus() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Special version of GameWorld where layer data are not transient
|
* Special version of GameWorld where everything, including layer data, are saved in a single JSON file (i.e. not chunked)
|
||||||
*/
|
*/
|
||||||
class GameWorldTitleScreen : GameWorld() {
|
class SimpleGameWorld : GameWorld() {
|
||||||
override lateinit var layerWall: BlockLayer
|
override lateinit var layerWall: BlockLayer
|
||||||
override lateinit var layerTerrain: BlockLayer
|
override lateinit var layerTerrain: BlockLayer
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ open class GameWorld() : Disposable {
|
|||||||
|
|
||||||
val extraFields = HashMap<String, Any?>()
|
val extraFields = HashMap<String, Any?>()
|
||||||
|
|
||||||
// internal var genver = -1 // only gets used when the game saves and loads
|
// NOTE: genver was here but removed: genver will be written by manually editing the serialising JSON. Reason: the 'genver' string must be found on a fixed offset on the file.
|
||||||
internal var comp = -1 // only gets used when the game saves and loads
|
internal var comp = -1 // only gets used when the game saves and loads
|
||||||
|
|
||||||
internal val dynamicItemInventory = ItemTable()
|
internal val dynamicItemInventory = ItemTable()
|
||||||
|
|||||||
@@ -38,9 +38,9 @@ import net.torvald.terrarum.realestate.LandUtil
|
|||||||
import net.torvald.terrarum.savegame.VDUtil
|
import net.torvald.terrarum.savegame.VDUtil
|
||||||
import net.torvald.terrarum.savegame.VirtualDisk
|
import net.torvald.terrarum.savegame.VirtualDisk
|
||||||
import net.torvald.terrarum.serialise.Common
|
import net.torvald.terrarum.serialise.Common
|
||||||
import net.torvald.terrarum.serialise.LoadSavegame
|
import net.torvald.terrarum.modulebasegame.serialise.LoadSavegame
|
||||||
import net.torvald.terrarum.serialise.ReadActor
|
import net.torvald.terrarum.modulebasegame.serialise.ReadActor
|
||||||
import net.torvald.terrarum.serialise.WriteSavegame
|
import net.torvald.terrarum.modulebasegame.serialise.WriteSavegame
|
||||||
import net.torvald.terrarum.ui.Toolkit
|
import net.torvald.terrarum.ui.Toolkit
|
||||||
import net.torvald.terrarum.ui.UIAutosaveNotifier
|
import net.torvald.terrarum.ui.UIAutosaveNotifier
|
||||||
import net.torvald.terrarum.ui.UICanvas
|
import net.torvald.terrarum.ui.UICanvas
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import net.torvald.terrarum.langpack.Lang
|
|||||||
import net.torvald.terrarum.modulebasegame.ui.UIRemoCon
|
import net.torvald.terrarum.modulebasegame.ui.UIRemoCon
|
||||||
import net.torvald.terrarum.modulebasegame.ui.UITitleRemoConYaml
|
import net.torvald.terrarum.modulebasegame.ui.UITitleRemoConYaml
|
||||||
import net.torvald.terrarum.realestate.LandUtil
|
import net.torvald.terrarum.realestate.LandUtil
|
||||||
import net.torvald.terrarum.serialise.ReadWorld
|
import net.torvald.terrarum.serialise.ReadSimpleWorld
|
||||||
import net.torvald.terrarum.ui.Toolkit
|
import net.torvald.terrarum.ui.Toolkit
|
||||||
import net.torvald.terrarum.ui.UICanvas
|
import net.torvald.terrarum.ui.UICanvas
|
||||||
import net.torvald.terrarum.weather.WeatherMixer
|
import net.torvald.terrarum.weather.WeatherMixer
|
||||||
@@ -136,7 +136,7 @@ class TitleScreen(batch: FlippingSpriteBatch) : IngameInstance(batch) {
|
|||||||
val file = ModMgr.getFile("basegame", "demoworld")
|
val file = ModMgr.getFile("basegame", "demoworld")
|
||||||
val reader = java.io.FileReader(file)
|
val reader = java.io.FileReader(file)
|
||||||
//ReadWorld.readWorldAndSetNewWorld(Terrarum.ingame!! as TerrarumIngame, reader)
|
//ReadWorld.readWorldAndSetNewWorld(Terrarum.ingame!! as TerrarumIngame, reader)
|
||||||
val world = ReadWorld.readLayerFormat(reader, file)
|
val world = ReadSimpleWorld(reader, file)
|
||||||
demoWorld = world
|
demoWorld = world
|
||||||
printdbg(this, "Demo world loaded")
|
printdbg(this, "Demo world loaded")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ import net.torvald.terrarum.Terrarum
|
|||||||
import net.torvald.terrarum.console.ConsoleCommand
|
import net.torvald.terrarum.console.ConsoleCommand
|
||||||
import net.torvald.terrarum.console.Echo
|
import net.torvald.terrarum.console.Echo
|
||||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
import net.torvald.terrarum.serialise.ReadActor
|
import net.torvald.terrarum.serialise.ReadSimpleWorld
|
||||||
import net.torvald.terrarum.serialise.ReadWorld
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
@@ -19,7 +18,7 @@ object ImportWorld : ConsoleCommand {
|
|||||||
try {
|
try {
|
||||||
val file = File(App.defaultDir + "/Exports/${args[1]}.json")
|
val file = File(App.defaultDir + "/Exports/${args[1]}.json")
|
||||||
val reader = java.io.FileReader(file)
|
val reader = java.io.FileReader(file)
|
||||||
ReadWorld.readWorldAndSetNewWorld(Terrarum.ingame!! as TerrarumIngame, reader, file)
|
ReadSimpleWorld.readWorldAndSetNewWorld(Terrarum.ingame!! as TerrarumIngame, reader, file)
|
||||||
Echo("Importworld: imported a world from ${args[1]}.json")
|
Echo("Importworld: imported a world from ${args[1]}.json")
|
||||||
}
|
}
|
||||||
catch (e: IOException) {
|
catch (e: IOException) {
|
||||||
|
|||||||
@@ -2,11 +2,7 @@ package net.torvald.terrarum.modulebasegame.gameactors
|
|||||||
|
|
||||||
import com.badlogic.gdx.graphics.Color
|
import com.badlogic.gdx.graphics.Color
|
||||||
import com.badlogic.gdx.graphics.Pixmap
|
import com.badlogic.gdx.graphics.Pixmap
|
||||||
import net.torvald.unicode.EMDASH
|
import net.torvald.terrarum.serialise.toUint
|
||||||
import net.torvald.terrarum.ccC
|
|
||||||
import net.torvald.terrarum.ccW
|
|
||||||
import net.torvald.terrarum.gameworld.toUint
|
|
||||||
import java.io.File
|
|
||||||
import java.nio.charset.Charset
|
import java.nio.charset.Charset
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,10 @@
|
|||||||
package net.torvald.terrarum.serialise
|
package net.torvald.terrarum.modulebasegame.serialise
|
||||||
|
|
||||||
import net.torvald.gdx.graphics.PixmapIO2
|
import net.torvald.gdx.graphics.PixmapIO2
|
||||||
import net.torvald.terrarum.App.printdbg
|
import net.torvald.terrarum.App.printdbg
|
||||||
import net.torvald.terrarum.ItemCodex
|
import net.torvald.terrarum.ItemCodex
|
||||||
import net.torvald.terrarum.ModMgr
|
import net.torvald.terrarum.ModMgr
|
||||||
import net.torvald.terrarum.ReferencingRanges.PREFIX_DYNAMICITEM
|
import net.torvald.terrarum.ReferencingRanges.PREFIX_DYNAMICITEM
|
||||||
import net.torvald.terrarum.gameitems.ItemID
|
|
||||||
import net.torvald.terrarum.itemproperties.ItemRemapTable
|
|
||||||
import net.torvald.terrarum.modulebasegame.IngameRenderer
|
import net.torvald.terrarum.modulebasegame.IngameRenderer
|
||||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase
|
import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase
|
||||||
@@ -15,8 +13,8 @@ import net.torvald.terrarum.modulebasegame.gameactors.Pocketed
|
|||||||
import net.torvald.terrarum.realestate.LandUtil
|
import net.torvald.terrarum.realestate.LandUtil
|
||||||
import net.torvald.terrarum.toInt
|
import net.torvald.terrarum.toInt
|
||||||
import net.torvald.terrarum.savegame.*
|
import net.torvald.terrarum.savegame.*
|
||||||
|
import net.torvald.terrarum.serialise.Common
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.HashMap
|
|
||||||
import java.util.zip.GZIPOutputStream
|
import java.util.zip.GZIPOutputStream
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package net.torvald.terrarum.serialise
|
package net.torvald.terrarum.modulebasegame.serialise
|
||||||
|
|
||||||
import net.torvald.gdx.graphics.PixmapIO2
|
import net.torvald.gdx.graphics.PixmapIO2
|
||||||
import net.torvald.terrarum.App.printdbg
|
import net.torvald.terrarum.App.printdbg
|
||||||
@@ -6,8 +6,9 @@ import net.torvald.terrarum.modulebasegame.IngameRenderer
|
|||||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
||||||
import net.torvald.terrarum.realestate.LandUtil
|
import net.torvald.terrarum.realestate.LandUtil
|
||||||
import net.torvald.terrarum.toInt
|
|
||||||
import net.torvald.terrarum.savegame.*
|
import net.torvald.terrarum.savegame.*
|
||||||
|
import net.torvald.terrarum.serialise.Common
|
||||||
|
import net.torvald.terrarum.toInt
|
||||||
import net.torvald.terrarum.utils.PlayerLastStatus
|
import net.torvald.terrarum.utils.PlayerLastStatus
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.zip.GZIPOutputStream
|
import java.util.zip.GZIPOutputStream
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package net.torvald.terrarum.serialise
|
package net.torvald.terrarum.modulebasegame.serialise
|
||||||
|
|
||||||
import net.torvald.spriteanimation.AssembledSpriteAnimation
|
import net.torvald.spriteanimation.AssembledSpriteAnimation
|
||||||
import net.torvald.spriteanimation.HasAssembledSprite
|
import net.torvald.spriteanimation.HasAssembledSprite
|
||||||
@@ -10,6 +10,7 @@ import net.torvald.terrarum.gameactors.ActorWithBody
|
|||||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
||||||
import net.torvald.terrarum.savegame.*
|
import net.torvald.terrarum.savegame.*
|
||||||
|
import net.torvald.terrarum.serialise.Common
|
||||||
import net.torvald.terrarum.spriteassembler.ADProperties
|
import net.torvald.terrarum.spriteassembler.ADProperties
|
||||||
import java.io.Reader
|
import java.io.Reader
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package net.torvald.terrarum.serialise
|
package net.torvald.terrarum.modulebasegame.serialise
|
||||||
|
|
||||||
import com.badlogic.gdx.graphics.Pixmap
|
import com.badlogic.gdx.graphics.Pixmap
|
||||||
import net.torvald.terrarum.*
|
import net.torvald.terrarum.*
|
||||||
@@ -14,6 +14,7 @@ import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
|||||||
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
||||||
import net.torvald.terrarum.realestate.LandUtil
|
import net.torvald.terrarum.realestate.LandUtil
|
||||||
import net.torvald.terrarum.savegame.*
|
import net.torvald.terrarum.savegame.*
|
||||||
|
import net.torvald.terrarum.serialise.Common
|
||||||
import net.torvald.terrarum.worlddrawer.WorldCamera
|
import net.torvald.terrarum.worlddrawer.WorldCamera
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.Reader
|
import java.io.Reader
|
||||||
@@ -1,17 +1,18 @@
|
|||||||
package net.torvald.terrarum.serialise
|
package net.torvald.terrarum.modulebasegame.serialise
|
||||||
|
|
||||||
import net.torvald.terrarum.ItemCodex
|
import net.torvald.terrarum.ItemCodex
|
||||||
import net.torvald.terrarum.gameactors.Actor
|
import net.torvald.terrarum.gameactors.Actor
|
||||||
import net.torvald.terrarum.gameactors.NoSerialise
|
import net.torvald.terrarum.gameactors.NoSerialise
|
||||||
import net.torvald.terrarum.gameworld.BlockLayer
|
import net.torvald.terrarum.gameworld.BlockLayer
|
||||||
import net.torvald.terrarum.gameworld.GameWorld
|
import net.torvald.terrarum.gameworld.GameWorld
|
||||||
import net.torvald.terrarum.gameworld.GameWorldTitleScreen
|
|
||||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
||||||
import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser
|
import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser
|
||||||
import net.torvald.terrarum.realestate.LandUtil
|
import net.torvald.terrarum.realestate.LandUtil
|
||||||
import net.torvald.terrarum.savegame.ByteArray64
|
import net.torvald.terrarum.savegame.ByteArray64
|
||||||
import net.torvald.terrarum.savegame.ByteArray64Writer
|
import net.torvald.terrarum.savegame.ByteArray64Writer
|
||||||
|
import net.torvald.terrarum.serialise.Common
|
||||||
|
import net.torvald.terrarum.serialise.toUint
|
||||||
import net.torvald.terrarum.utils.PlayerLastStatus
|
import net.torvald.terrarum.utils.PlayerLastStatus
|
||||||
import net.torvald.terrarum.weather.WeatherMixer
|
import net.torvald.terrarum.weather.WeatherMixer
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -30,7 +31,6 @@ object WriteWorld {
|
|||||||
val world = ingame.world
|
val world = ingame.world
|
||||||
val currentPlayTime_t = time_t - ingame.loadedTime_t
|
val currentPlayTime_t = time_t - ingame.loadedTime_t
|
||||||
|
|
||||||
// world.genver = Common.GENVER
|
|
||||||
world.comp = Common.COMP_GZIP
|
world.comp = Common.COMP_GZIP
|
||||||
world.lastPlayTime = time_t
|
world.lastPlayTime = time_t
|
||||||
world.totalPlayTime += currentPlayTime_t
|
world.totalPlayTime += currentPlayTime_t
|
||||||
@@ -98,9 +98,6 @@ object WriteWorld {
|
|||||||
*/
|
*/
|
||||||
object ReadWorld {
|
object ReadWorld {
|
||||||
|
|
||||||
fun readLayerFormat(worldDataStream: Reader, origin: File?): GameWorld =
|
|
||||||
fillInDetails(Common.jsoner.fromJson(GameWorldTitleScreen::class.java, worldDataStream), origin)
|
|
||||||
|
|
||||||
operator fun invoke(worldDataStream: Reader, origin: File?): GameWorld =
|
operator fun invoke(worldDataStream: Reader, origin: File?): GameWorld =
|
||||||
fillInDetails(Common.jsoner.fromJson(GameWorld::class.java, worldDataStream), origin)
|
fillInDetails(Common.jsoner.fromJson(GameWorld::class.java, worldDataStream), origin)
|
||||||
|
|
||||||
@@ -114,12 +111,6 @@ object ReadWorld {
|
|||||||
return world
|
return world
|
||||||
}
|
}
|
||||||
|
|
||||||
fun readWorldAndSetNewWorld(ingame: TerrarumIngame, worldDataStream: Reader, origin: File?): GameWorld {
|
|
||||||
val world = readLayerFormat(worldDataStream, origin)
|
|
||||||
ingame.world = world
|
|
||||||
return world
|
|
||||||
}
|
|
||||||
|
|
||||||
private val cw = LandUtil.CHUNK_W
|
private val cw = LandUtil.CHUNK_W
|
||||||
private val ch = LandUtil.CHUNK_H
|
private val ch = LandUtil.CHUNK_H
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ import net.torvald.terrarum.modulebasegame.TitleScreen
|
|||||||
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
||||||
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y
|
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_OFFSET_Y
|
||||||
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_UI_HEIGHT
|
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.INVENTORY_CELLS_UI_HEIGHT
|
||||||
import net.torvald.terrarum.serialise.WriteSavegame
|
import net.torvald.terrarum.modulebasegame.serialise.WriteSavegame
|
||||||
import net.torvald.terrarum.ui.Toolkit
|
import net.torvald.terrarum.ui.Toolkit
|
||||||
import net.torvald.terrarum.ui.UICanvas
|
import net.torvald.terrarum.ui.UICanvas
|
||||||
import net.torvald.terrarum.ui.UIItem
|
import net.torvald.terrarum.ui.UIItem
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
|||||||
import net.torvald.terrarum.App
|
import net.torvald.terrarum.App
|
||||||
import net.torvald.terrarum.CommonResourcePool
|
import net.torvald.terrarum.CommonResourcePool
|
||||||
import net.torvald.terrarum.langpack.Lang
|
import net.torvald.terrarum.langpack.Lang
|
||||||
import net.torvald.terrarum.serialise.WriteSavegame
|
import net.torvald.terrarum.modulebasegame.serialise.WriteSavegame
|
||||||
import net.torvald.terrarum.ui.UICanvas
|
import net.torvald.terrarum.ui.UICanvas
|
||||||
import net.torvald.terrarum.ui.UIItem
|
import net.torvald.terrarum.ui.UIItem
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ import net.torvald.terrarum.savegame.ByteArray64Reader
|
|||||||
import net.torvald.terrarum.savegame.DiskSkimmer
|
import net.torvald.terrarum.savegame.DiskSkimmer
|
||||||
import net.torvald.terrarum.savegame.EntryFile
|
import net.torvald.terrarum.savegame.EntryFile
|
||||||
import net.torvald.terrarum.serialise.Common
|
import net.torvald.terrarum.serialise.Common
|
||||||
import net.torvald.terrarum.serialise.LoadSavegame
|
|
||||||
import net.torvald.terrarum.serialise.SaveLoadError
|
import net.torvald.terrarum.serialise.SaveLoadError
|
||||||
|
import net.torvald.terrarum.modulebasegame.serialise.LoadSavegame
|
||||||
import net.torvald.terrarum.spriteassembler.ADProperties
|
import net.torvald.terrarum.spriteassembler.ADProperties
|
||||||
import net.torvald.terrarum.spriteassembler.ADProperties.Companion.EXTRA_HEADROOM_X
|
import net.torvald.terrarum.spriteassembler.ADProperties.Companion.EXTRA_HEADROOM_X
|
||||||
import net.torvald.terrarum.spriteassembler.ADProperties.Companion.EXTRA_HEADROOM_Y
|
import net.torvald.terrarum.spriteassembler.ADProperties.Companion.EXTRA_HEADROOM_Y
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import net.torvald.terrarum.savegame.DiskSkimmer
|
|||||||
import net.torvald.terrarum.savegame.VDUtil
|
import net.torvald.terrarum.savegame.VDUtil
|
||||||
import net.torvald.terrarum.savegame.VirtualDisk
|
import net.torvald.terrarum.savegame.VirtualDisk
|
||||||
import net.torvald.terrarum.serialise.Common
|
import net.torvald.terrarum.serialise.Common
|
||||||
import net.torvald.terrarum.serialise.LoadSavegame
|
import net.torvald.terrarum.modulebasegame.serialise.LoadSavegame
|
||||||
import net.torvald.terrarum.serialise.WritePlayer
|
import net.torvald.terrarum.modulebasegame.serialise.WritePlayer
|
||||||
import net.torvald.terrarum.ui.*
|
import net.torvald.terrarum.ui.*
|
||||||
import net.torvald.terrarum.utils.RandomWordsName
|
import net.torvald.terrarum.utils.RandomWordsName
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
|||||||
import net.torvald.terrarum.savegame.ByteArray64Reader
|
import net.torvald.terrarum.savegame.ByteArray64Reader
|
||||||
import net.torvald.terrarum.savegame.VirtualDisk
|
import net.torvald.terrarum.savegame.VirtualDisk
|
||||||
import net.torvald.terrarum.serialise.Common
|
import net.torvald.terrarum.serialise.Common
|
||||||
import net.torvald.terrarum.serialise.ReadActor
|
import net.torvald.terrarum.modulebasegame.serialise.ReadActor
|
||||||
import net.torvald.terrarum.ui.*
|
import net.torvald.terrarum.ui.*
|
||||||
import net.torvald.terrarum.utils.RandomWordsName
|
import net.torvald.terrarum.utils.RandomWordsName
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package net.torvald.terrarum.savegame
|
package net.torvald.terrarum.savegame
|
||||||
|
|
||||||
|
import net.torvald.terrarum.serialise.toUint
|
||||||
import java.io.*
|
import java.io.*
|
||||||
import java.nio.channels.ClosedChannelException
|
import java.nio.channels.ClosedChannelException
|
||||||
import java.nio.charset.Charset
|
import java.nio.charset.Charset
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package net.torvald.terrarum.savegame
|
package net.torvald.terrarum.savegame
|
||||||
|
|
||||||
|
import net.torvald.terrarum.serialise.toUint
|
||||||
|
import net.torvald.terrarum.serialise.toUlong
|
||||||
import java.io.*
|
import java.io.*
|
||||||
import java.nio.charset.Charset
|
import java.nio.charset.Charset
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package net.torvald.terrarum.savegame
|
package net.torvald.terrarum.savegame
|
||||||
|
|
||||||
|
import net.torvald.terrarum.serialise.toUint
|
||||||
|
import net.torvald.terrarum.serialise.toUlong
|
||||||
import java.io.*
|
import java.io.*
|
||||||
import java.nio.charset.Charset
|
import java.nio.charset.Charset
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -651,8 +653,6 @@ object VDUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Byte.toUint() = java.lang.Byte.toUnsignedInt(this)
|
|
||||||
fun Byte.toUlong() = java.lang.Byte.toUnsignedLong(this)
|
|
||||||
fun magicMismatch(magic: ByteArray, array: ByteArray): Boolean {
|
fun magicMismatch(magic: ByteArray, array: ByteArray): Boolean {
|
||||||
return !Arrays.equals(array, magic)
|
return !Arrays.equals(array, magic)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package net.torvald.terrarum.savegame
|
|||||||
|
|
||||||
import net.torvald.terrarum.App.printdbg
|
import net.torvald.terrarum.App.printdbg
|
||||||
import net.torvald.terrarum.serialise.Common
|
import net.torvald.terrarum.serialise.Common
|
||||||
|
import net.torvald.terrarum.serialise.toUint
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.nio.charset.Charset
|
import java.nio.charset.Charset
|
||||||
|
|||||||
57
src/net/torvald/terrarum/serialise/ReadSimpleWorld.kt
Normal file
57
src/net/torvald/terrarum/serialise/ReadSimpleWorld.kt
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
package net.torvald.terrarum.serialise
|
||||||
|
|
||||||
|
import net.torvald.terrarum.App
|
||||||
|
import net.torvald.terrarum.IngameInstance
|
||||||
|
import net.torvald.terrarum.ItemCodex
|
||||||
|
import net.torvald.terrarum.gameactors.Actor
|
||||||
|
import net.torvald.terrarum.gameworld.GameWorld
|
||||||
|
import net.torvald.terrarum.gameworld.SimpleGameWorld
|
||||||
|
import java.io.File
|
||||||
|
import java.io.Reader
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by minjaesong on 2022-09-03.
|
||||||
|
*/
|
||||||
|
object ReadSimpleWorld {
|
||||||
|
|
||||||
|
operator fun invoke(worldDataStream: Reader, origin: File?): GameWorld =
|
||||||
|
fillInDetails(Common.jsoner.fromJson(SimpleGameWorld::class.java, worldDataStream), origin)
|
||||||
|
|
||||||
|
private fun fillInDetails(world: GameWorld, origin: File?): GameWorld {
|
||||||
|
world.tileNumberToNameMap.forEach { l, s ->
|
||||||
|
world.tileNameToNumberMap[s] = l.toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemCodex.loadFromSave(origin, world.dynamicToStaticTable, world.dynamicItemInventory)
|
||||||
|
|
||||||
|
return world
|
||||||
|
}
|
||||||
|
|
||||||
|
fun readWorldAndSetNewWorld(ingame: IngameInstance, worldDataStream: Reader, origin: File?): GameWorld {
|
||||||
|
val world = invoke(worldDataStream, origin)
|
||||||
|
ingame.world = world
|
||||||
|
return world
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
object WriteSimpleWorld {
|
||||||
|
|
||||||
|
private fun preWrite(ingame: IngameInstance, time_t: Long, world: SimpleGameWorld, actorsList: List<Actor>) {
|
||||||
|
val currentPlayTime_t = time_t - ingame.loadedTime_t
|
||||||
|
|
||||||
|
world.comp = Common.COMP_GZIP
|
||||||
|
world.lastPlayTime = time_t
|
||||||
|
world.totalPlayTime += currentPlayTime_t
|
||||||
|
|
||||||
|
world.actors.clear()
|
||||||
|
world.actors.addAll(actorsList.map { it.referenceID }.sorted().distinct())
|
||||||
|
}
|
||||||
|
|
||||||
|
operator fun invoke(ingame: IngameInstance, world: SimpleGameWorld, actorsList: List<Actor>): String {
|
||||||
|
val time_t = App.getTIME_T()
|
||||||
|
val s = Common.jsoner.toJson(preWrite(ingame, time_t, world, actorsList))
|
||||||
|
return """{"genver":${Common.GENVER},${s.substring(1)}"""
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
package net.torvald.terrarum.serialise
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by minjaesong on 2021-08-23.
|
|
||||||
*/
|
|
||||||
object WriteMeta {
|
|
||||||
|
|
||||||
|
|
||||||
private fun modnameToOrnamentalHeader(s: String) =
|
|
||||||
"\n\n${"#".repeat(16 + s.length)}\n" +
|
|
||||||
"## module: $s ##\n" +
|
|
||||||
"${"#".repeat(16 + s.length)}\n\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by minjaesong on 2021-09-03.
|
|
||||||
*/
|
|
||||||
object ReadMeta {
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package net.torvald.terrarum.tests
|
package net.torvald.terrarum.tests
|
||||||
|
|
||||||
|
import net.torvald.terrarum.serialise.toUint
|
||||||
import net.torvald.unsafe.UnsafeHelper
|
import net.torvald.unsafe.UnsafeHelper
|
||||||
import net.torvald.terrarum.gameworld.toUint
|
|
||||||
import sun.misc.Unsafe
|
import sun.misc.Unsafe
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user