moved Codices out of the singleton so they can be serialised

This commit is contained in:
minjaesong
2021-09-04 17:55:37 +09:00
parent 57e4b83649
commit 6bea9c9f07
42 changed files with 180 additions and 98 deletions

View File

@@ -1,6 +1,8 @@
package net.torvald.terrarum; package net.torvald.terrarum;
import com.badlogic.gdx.*; import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.audio.AudioDevice; import com.badlogic.gdx.audio.AudioDevice;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
@@ -21,7 +23,7 @@ import net.torvald.terrarum.concurrent.ThreadExecutor;
import net.torvald.terrarum.controller.GdxControllerAdapter; import net.torvald.terrarum.controller.GdxControllerAdapter;
import net.torvald.terrarum.controller.TerrarumController; import net.torvald.terrarum.controller.TerrarumController;
import net.torvald.terrarum.controller.XinputControllerAdapter; import net.torvald.terrarum.controller.XinputControllerAdapter;
import net.torvald.terrarum.gameactors.*; import net.torvald.terrarum.gameactors.BlockMarkerActor;
import net.torvald.terrarum.gamecontroller.KeyToggler; import net.torvald.terrarum.gamecontroller.KeyToggler;
import net.torvald.terrarum.gameworld.GameWorld; import net.torvald.terrarum.gameworld.GameWorld;
import net.torvald.terrarum.imagefont.TinyAlphNum; import net.torvald.terrarum.imagefont.TinyAlphNum;
@@ -35,9 +37,11 @@ import net.torvald.terrarum.worlddrawer.CreateTileAtlas;
import net.torvald.terrarumsansbitmap.gdx.GameFontBase; import net.torvald.terrarumsansbitmap.gdx.GameFontBase;
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack; import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack;
import net.torvald.util.DebugTimers; import net.torvald.util.DebugTimers;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
import static net.torvald.terrarum.TerrarumKt.gdxClearAndSetBlend; import static net.torvald.terrarum.TerrarumKt.gdxClearAndSetBlend;
import static net.torvald.terrarum.TerrarumKt.printStackTrace; import static net.torvald.terrarum.TerrarumKt.printStackTrace;

View File

@@ -3,11 +3,16 @@ package net.torvald.terrarum
import com.badlogic.gdx.Screen import com.badlogic.gdx.Screen
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.AppLoader.printdbg import net.torvald.terrarum.AppLoader.printdbg
import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.blockproperties.WireCodex
import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.Actor
import net.torvald.terrarum.gameactors.ActorID import net.torvald.terrarum.gameactors.ActorID
import net.torvald.terrarum.gameactors.BlockMarkerActor import net.torvald.terrarum.gameactors.BlockMarkerActor
import net.torvald.terrarum.gameactors.faction.FactionCodex
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.itemproperties.MaterialCodex
import net.torvald.terrarum.modulebasegame.IngameRenderer import net.torvald.terrarum.modulebasegame.IngameRenderer
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.VirtualDisk import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.VirtualDisk
@@ -306,3 +311,7 @@ class NoSuchActorWithIDException(id: ActorID) : Exception("Actor with ID $id doe
class NoSuchActorWithRefException(actor: Actor) : Exception("No such actor in the game: $actor") class NoSuchActorWithRefException(actor: Actor) : Exception("No such actor in the game: $actor")
class ReferencedActorAlreadyExistsException(actor: Actor) : Exception("The actor $actor already exists in the game") class ReferencedActorAlreadyExistsException(actor: Actor) : Exception("The actor $actor already exists in the game")
class ProtectedActorRemovalException(whatisit: String) : Exception("Attempted to removed protected actor '$whatisit'") class ProtectedActorRemovalException(whatisit: String) : Exception("Attempted to removed protected actor '$whatisit'")
val INGAME: IngameInstance
get() = Terrarum.ingame!!

View File

@@ -6,8 +6,8 @@ import net.torvald.terrarum.AppLoader.*
import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.blockproperties.WireCodex import net.torvald.terrarum.blockproperties.WireCodex
import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.itemproperties.MaterialCodex import net.torvald.terrarum.itemproperties.MaterialCodex
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.utils.CSVFetcher import net.torvald.terrarum.utils.CSVFetcher
@@ -141,6 +141,7 @@ object ModMgr {
catch (e: Throwable) { catch (e: Throwable) {
printdbgerr(this, "There was an error while loading module $moduleName") printdbgerr(this, "There was an error while loading module $moduleName")
printdbgerr(this, "\t$e") printdbgerr(this, "\t$e")
e.printStackTrace(System.err)
moduleInfo.remove(moduleName) moduleInfo.remove(moduleName)
} }
} }
@@ -242,8 +243,8 @@ object ModMgr {
object GameBlockLoader { object GameBlockLoader {
@JvmStatic operator fun invoke(module: String) { @JvmStatic operator fun invoke(module: String) {
BlockCodex(module, "blocks/blocks.csv") Terrarum.BlockCodex = BlockCodex(module, "blocks/blocks.csv")
WireCodex(module, "wires/") Terrarum.WireCodex = WireCodex(module, "wires/")
} }
} }
@@ -265,6 +266,8 @@ object ModMgr {
} }
private fun register(module: String, csv: List<CSVRecord>) { private fun register(module: String, csv: List<CSVRecord>) {
Terrarum.ItemCodex = ItemCodex()
csv.forEach { csv.forEach {
val className: String = it["classname"].toString() val className: String = it["classname"].toString()
val internalID: Int = it["id"].toInt() val internalID: Int = it["id"].toInt()
@@ -293,7 +296,7 @@ object ModMgr {
val matePath = "materials/" val matePath = "materials/"
@JvmStatic operator fun invoke(module: String) { @JvmStatic operator fun invoke(module: String) {
MaterialCodex(module, matePath + "materials.csv") Terrarum.MaterialCodex = MaterialCodex(module, matePath + "materials.csv")
} }
} }
} }

View File

@@ -15,9 +15,13 @@ import net.torvald.UnsafeHelper
import net.torvald.random.HQRNG import net.torvald.random.HQRNG
import net.torvald.terrarum.AppLoader.* import net.torvald.terrarum.AppLoader.*
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.blockproperties.WireCodex
import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.Actor
import net.torvald.terrarum.gameactors.ActorID import net.torvald.terrarum.gameactors.ActorID
import net.torvald.terrarum.gameactors.faction.FactionCodex
import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.itemproperties.MaterialCodex
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.worlddrawer.WorldCamera import net.torvald.terrarum.worlddrawer.WorldCamera
import net.torvald.terrarumsansbitmap.gdx.GameFontBase import net.torvald.terrarumsansbitmap.gdx.GameFontBase
@@ -52,6 +56,14 @@ object Terrarum : Disposable {
} }
open lateinit var BlockCodex: BlockCodex
open lateinit var ItemCodex: ItemCodex
open lateinit var WireCodex: WireCodex
open lateinit var MaterialCodex: MaterialCodex
open lateinit var FactionCodex: FactionCodex
open var Apocryphas = HashMap<String, Any>()
////////////////////////////// //////////////////////////////
// GLOBAL IMMUTABLE CONFIGS // // GLOBAL IMMUTABLE CONFIGS //
////////////////////////////// //////////////////////////////
@@ -629,4 +641,17 @@ interface Id_UICanvasNullable {
fun <T> Array<T>.tail() = this.sliceArray(1 until this.size) fun <T> Array<T>.tail() = this.sliceArray(1 until this.size)
fun <T> Array<T>.init() = this.sliceArray(0 until this.lastIndex) fun <T> Array<T>.init() = this.sliceArray(0 until this.lastIndex)
fun <T> List<T>.tail() = this.subList(1, this.size) fun <T> List<T>.tail() = this.subList(1, this.size)
fun <T> List<T>.init() = this.subList(0, this.lastIndex) fun <T> List<T>.init() = this.subList(0, this.lastIndex)
val BlockCodex: BlockCodex
get() = Terrarum.BlockCodex
val ItemCodex: ItemCodex
get() = Terrarum.ItemCodex
val WireCodex: WireCodex
get() = Terrarum.WireCodex
val MaterialCodex: MaterialCodex
get() = Terrarum.MaterialCodex
val FactionCodex: FactionCodex
get() = Terrarum.FactionCodex
val Apocryphas: HashMap<String, Any>
get() = Terrarum.Apocryphas

View File

@@ -18,7 +18,7 @@ import java.io.IOException
/** /**
* Created by minjaesong on 2016-02-16. * Created by minjaesong on 2016-02-16.
*/ */
object BlockCodex { class BlockCodex {
val blockProps = HashMap<ItemID, BlockProp>() val blockProps = HashMap<ItemID, BlockProp>()
@@ -27,13 +27,13 @@ object BlockCodex {
/** 65536 */ /** 65536 */
//val MAX_TERRAIN_TILES = GameWorld.TILES_SUPPORTED //val MAX_TERRAIN_TILES = GameWorld.TILES_SUPPORTED
private val nullProp = BlockProp() @Transient private val nullProp = BlockProp()
var highestNumber = -1 // does not include virtual ones var highestNumber = -1 // does not include virtual ones
private set private set
// fake props for "randomised" dynamic lights // fake props for "randomised" dynamic lights
const val DYNAMIC_RANDOM_CASES = 64 @Transient val DYNAMIC_RANDOM_CASES = 64
private var virtualTileCursor = 1 private var virtualTileCursor = 1
/** /**
@@ -55,10 +55,12 @@ object BlockCodex {
virtualToTile.clear() virtualToTile.clear()
} }
private constructor()
/** /**
* Later entry (possible from other modules) will replace older ones * Later entry (possible from other modules) will replace older ones
*/ */
operator fun invoke(module: String, path: String) { internal constructor(module: String, path: String) : this() {
AppLoader.printmsg(this, "Building block properties table") AppLoader.printmsg(this, "Building block properties table")
try { try {
register(module, CSVFetcher.readFromModule(module, path)) register(module, CSVFetcher.readFromModule(module, path))

View File

@@ -2,6 +2,7 @@ package net.torvald.terrarum.blockproperties
import net.torvald.gdx.graphics.Cvec import net.torvald.gdx.graphics.Cvec
import net.torvald.random.XXHash32 import net.torvald.random.XXHash32
import net.torvald.terrarum.*
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.gameworld.fmod

View File

@@ -4,8 +4,7 @@ import com.badlogic.gdx.Gdx
import com.jme3.math.FastMath import com.jme3.math.FastMath
import net.torvald.gdx.graphics.Cvec import net.torvald.gdx.graphics.Cvec
import net.torvald.random.HQRNG import net.torvald.random.HQRNG
import net.torvald.terrarum.Second import net.torvald.terrarum.*
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameworld.WorldTime import net.torvald.terrarum.gameworld.WorldTime
import net.torvald.terrarum.weather.WeatherMixer import net.torvald.terrarum.weather.WeatherMixer

View File

@@ -1,37 +1,44 @@
package net.torvald.terrarum.blockproperties package net.torvald.terrarum.blockproperties
import net.torvald.terrarum.AppLoader import net.torvald.terrarum.*
import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.utils.CSVFetcher import net.torvald.terrarum.utils.CSVFetcher
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import org.apache.commons.csv.CSVRecord import org.apache.commons.csv.CSVRecord
import java.io.IOException import java.io.IOException
/** /**
* ItemCodex must be initialised first!
*
* Created by minjaesong on 2016-02-16. * Created by minjaesong on 2016-02-16.
*/ */
object WireCodex { class WireCodex {
val wireProps = HashMap<ItemID, WireProp>() val wireProps = HashMap<ItemID, WireProp>()
private val nullProp = WireProp() @Transient private val nullProp = WireProp()
fun clear() { fun clear() {
wireProps.clear() wireProps.clear()
} }
private constructor() {
try {
Terrarum.ItemCodex["testtesttest"]
}
catch (e: UninitializedPropertyAccessException) {
throw UninitializedPropertyAccessException("ItemCodex not initialised!")
}
}
/** /**
* `wire.csv` and texture for all wires are expected to be found in the given path. * `wire.csv` and texture for all wires are expected to be found in the given path.
* *
* @param module name of the module * @param module name of the module
* @param path to the "wires" directory, not path to the CSV; must end with a slash! * @param path to the "wires" directory, not path to the CSV; must end with a slash!
*/ */
operator fun invoke(module: String, path: String) { internal constructor(module: String, path: String) : this() {
AppLoader.printmsg(this, "Building wire properties table for module $module") AppLoader.printmsg(this, "Building wire properties table for module $module")
try { try {
register(module, path, CSVFetcher.readFromModule(module, path + "wires.csv")) register(module, path, CSVFetcher.readFromModule(module, path + "wires.csv"))
@@ -54,7 +61,7 @@ object WireCodex {
private fun register(module: String, path: String, records: List<CSVRecord>) { private fun register(module: String, path: String, records: List<CSVRecord>) {
records.forEach { records.forEach {
WireCodex.setProp(module, it.intVal("id"), it) setProp(module, it.intVal("id"), it)
} }
AppLoader.printmsg(this, "Registering wire textures into the resource pool") AppLoader.printmsg(this, "Registering wire textures into the resource pool")
@@ -70,7 +77,7 @@ object WireCodex {
CommonResourcePool.loadAll() CommonResourcePool.loadAll()
} }
fun getAll() = WireCodex.wireProps.values fun getAll() = wireProps.values
/*fun get(index: Int): WireProp { /*fun get(index: Int): WireProp {
try { try {
@@ -99,11 +106,11 @@ object WireCodex {
}*/ }*/
operator fun get(blockID: ItemID?): WireProp { operator fun get(blockID: ItemID?): WireProp {
if (blockID == null || blockID == "basegame:"+Block.NULL) { if (blockID == null || blockID == "basegame:"+Block.NULL) {
return WireCodex.nullProp return nullProp
} }
try { try {
return WireCodex.wireProps[blockID]!! return wireProps[blockID]!!
} }
catch (e: NullPointerException) { catch (e: NullPointerException) {
throw NullPointerException("Wireprop with id $blockID does not exist.") throw NullPointerException("Wireprop with id $blockID does not exist.")
@@ -111,7 +118,7 @@ object WireCodex {
} }
fun getOrNull(blockID: ItemID?): WireProp? {//<O> fun getOrNull(blockID: ItemID?): WireProp? {//<O>
return WireCodex.wireProps[blockID] return wireProps[blockID]
} }
private fun setProp(modname: String, key: Int, record: CSVRecord) { private fun setProp(modname: String, key: Int, record: CSVRecord) {
@@ -127,7 +134,7 @@ object WireCodex {
prop.outputType = record.get("outputtype") ?: prop.accepts prop.outputType = record.get("outputtype") ?: prop.accepts
prop.canBranch = record.boolVal("branching") prop.canBranch = record.boolVal("branching")
WireCodex.wireProps[prop.id] = prop wireProps[prop.id] = prop
// load java class // load java class
val invImgRef = record.get("inventoryimg").split(',') val invImgRef = record.get("inventoryimg").split(',')

View File

@@ -2,7 +2,6 @@ package net.torvald.terrarum.gameactors
import net.torvald.terrarum.ReferencingRanges import net.torvald.terrarum.ReferencingRanges
import net.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.itemproperties.ItemCodex.ACTORID_MIN
typealias ActorID = Int typealias ActorID = Int

View File

@@ -1,13 +1,9 @@
package net.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.BlendMode import net.torvald.terrarum.*
import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.Point2i
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
import net.torvald.terrarum.blockproperties.WireCodex
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.toInt
/** /**
* FIXME Constructor is super expensive * FIXME Constructor is super expensive

View File

@@ -1,7 +1,7 @@
package net.torvald.terrarum.gameactors.faction package net.torvald.terrarum.gameactors.faction
import net.torvald.random.HQRNG import net.torvald.random.HQRNG
import java.util.HashSet import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2016-02-15. * Created by minjaesong on 2016-02-15.

View File

@@ -5,9 +5,13 @@ import java.util.*
/** /**
* Created by minjaesong on 2016-05-09. * Created by minjaesong on 2016-05-09.
*/ */
object FactionCodex { class FactionCodex {
val factionContainer = ArrayList<Faction>() val factionContainer = ArrayList<Faction>()
fun clear() = factionContainer.clear()
internal constructor()
fun hasFaction(ID: FactionID): Boolean = fun hasFaction(ID: FactionID): Boolean =
if (factionContainer.size == 0) if (factionContainer.size == 0)
false false

View File

@@ -6,6 +6,7 @@ import com.badlogic.gdx.Input.Keys
import com.badlogic.gdx.InputAdapter import com.badlogic.gdx.InputAdapter
import com.badlogic.gdx.controllers.Controllers import com.badlogic.gdx.controllers.Controllers
import com.badlogic.gdx.utils.GdxRuntimeException import com.badlogic.gdx.utils.GdxRuntimeException
import net.torvald.terrarum.*
import net.torvald.terrarum.AppLoader import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.AppLoader.printdbg import net.torvald.terrarum.AppLoader.printdbg
import net.torvald.terrarum.AppLoader.printdbgerr import net.torvald.terrarum.AppLoader.printdbgerr
@@ -15,7 +16,6 @@ import net.torvald.terrarum.floorInt
import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.worlddrawer.WorldCamera import net.torvald.terrarum.worlddrawer.WorldCamera
import java.util.* import java.util.*

View File

@@ -10,6 +10,7 @@ import net.torvald.terrarum.itemproperties.Material
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory
import net.torvald.terrarum.modulebasegame.gameactors.Pocketed import net.torvald.terrarum.modulebasegame.gameactors.Pocketed
import net.torvald.terrarum.*
typealias ItemID = String typealias ItemID = String

View File

@@ -20,7 +20,7 @@ import java.util.*
* *
* Created by minjaesong on 2016-03-15. * Created by minjaesong on 2016-03-15.
*/ */
object ItemCodex { class ItemCodex {
/** /**
* <ItemID or RefID for Actor, TheItem> * <ItemID or RefID for Actor, TheItem>
@@ -30,7 +30,9 @@ object ItemCodex {
val dynamicItemDescription = HashMap<ItemID, GameItem>() val dynamicItemDescription = HashMap<ItemID, GameItem>()
val dynamicToStaticTable = HashMap<ItemID, ItemID>() val dynamicToStaticTable = HashMap<ItemID, ItemID>()
val ACTORID_MIN = ReferencingRanges.ACTORS.first @Transient val ACTORID_MIN = ReferencingRanges.ACTORS.first
internal constructor()
fun clear() { fun clear() {
itemCodex.clear() itemCodex.clear()

View File

@@ -28,12 +28,14 @@ class Material {
var identifier: String = "Name not set" var identifier: String = "Name not set"
} }
object MaterialCodex { class MaterialCodex {
val materialProps = HashMap<String, Material>() val materialProps = HashMap<String, Material>()
private val nullMaterial = Material() @Transient private val nullMaterial = Material()
operator fun invoke(module: String, path: String) { private constructor()
internal constructor(module: String, path: String) : this() {
register(CSVFetcher.readFromModule(module, path)) register(CSVFetcher.readFromModule(module, path))
} }

View File

@@ -1,15 +1,10 @@
package net.torvald.terrarum.modulebasegame package net.torvald.terrarum.modulebasegame
import net.torvald.terrarum.*
import net.torvald.terrarum.AppLoader.IS_DEVELOPMENT_BUILD import net.torvald.terrarum.AppLoader.IS_DEVELOPMENT_BUILD
import net.torvald.terrarum.AppLoader.printdbg import net.torvald.terrarum.AppLoader.printdbg
import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.ModuleEntryPoint
import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.blockproperties.BlockProp import net.torvald.terrarum.blockproperties.BlockProp
import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.itemproperties.MaterialCodex
import net.torvald.terrarum.modulebasegame.gameitems.BlockBase import net.torvald.terrarum.modulebasegame.gameitems.BlockBase
import net.torvald.terrarum.modulebasegame.imagefont.WatchFont import net.torvald.terrarum.modulebasegame.imagefont.WatchFont
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
@@ -29,8 +24,8 @@ class EntryPoint : ModuleEntryPoint() {
// the order of invocation is important! Material should be the first as blocks and items are depend on it. // the order of invocation is important! Material should be the first as blocks and items are depend on it.
ModMgr.GameMaterialLoader.invoke(moduleName) ModMgr.GameMaterialLoader.invoke(moduleName)
ModMgr.GameBlockLoader.invoke(moduleName)
ModMgr.GameItemLoader.invoke(moduleName) ModMgr.GameItemLoader.invoke(moduleName)
ModMgr.GameBlockLoader.invoke(moduleName)
ModMgr.GameLanguageLoader.invoke(moduleName) ModMgr.GameLanguageLoader.invoke(moduleName)

View File

@@ -215,6 +215,11 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
lateinit var gameLoadMode: GameLoadMode lateinit var gameLoadMode: GameLoadMode
lateinit var gameLoadInfoPayload: Any lateinit var gameLoadInfoPayload: Any
lateinit var newBlockCodex: Any
lateinit var newWireCodex: Any
lateinit var newItemCodex: Any
lateinit var newMaterialCodex: Any
@@ -229,7 +234,7 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
when (gameLoadMode) { when (gameLoadMode) {
GameLoadMode.CREATE_NEW -> enterCreateNewWorld(gameLoadInfoPayload as NewWorldParameters) GameLoadMode.CREATE_NEW -> enterCreateNewWorld(gameLoadInfoPayload as NewWorldParameters)
GameLoadMode.LOAD_FROM -> enterLoadFromSave(gameLoadInfoPayload as WriteMeta.WorldMeta) GameLoadMode.LOAD_FROM -> enterLoadFromSave(gameLoadInfoPayload as WriteMeta.WorldMeta, newItemCodex)
} }
IngameRenderer.setRenderedWorld(world) IngameRenderer.setRenderedWorld(world)
@@ -257,7 +262,7 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
/** /**
* Init instance by loading saved world * Init instance by loading saved world
*/ */
private fun enterLoadFromSave(meta: WriteMeta.WorldMeta) { private fun enterLoadFromSave(meta: WriteMeta.WorldMeta, items: Any) {
if (gameInitialised) { if (gameInitialised) {
printdbg(this, "loaded successfully.") printdbg(this, "loaded successfully.")
} }
@@ -266,21 +271,21 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
WeatherMixer.loadFromSave(meta.weatseed0, meta.weatseed1) WeatherMixer.loadFromSave(meta.weatseed0, meta.weatseed1)
// Load BlockCodex // // Load BlockCodex //
BlockCodex.clear() /*BlockCodex.clear()
meta.blocks.forEach { module, csv -> BlockCodex.fromCSV(module, csv.doc) } (BlockCodex::class as Any).javaClass.getField("INSTANCE").set(BlockCodex::class.objectInstance, meta.blocks)
// Load WireCodex // // Load WireCodex //
WireCodex.clear() WireCodex.clear()
meta.wires.forEach { module, csv -> WireCodex.fromCSV(module, ModMgr.getPath(module, "wires/"), csv.doc) } (WireCodex::class as Any).javaClass.getField("INSTANCE").set(WireCodex::class.objectInstance, meta.wires)
*/
// Load ItemCodex // // Load ItemCodex //
ItemCodex.clear() ItemCodex.clear()
meta.items.forEach { module, csv -> ModMgr.GameItemLoader.fromCSV(module, csv.doc) } (ItemCodex::class as Any).javaClass.getField("INSTANCE").set(ItemCodex::class.objectInstance, items)
// TODO registerNewDynamicItem
// Load MaterialCodex // // Load MaterialCodex //
MaterialCodex.clear() /*MaterialCodex.clear()
meta.materials.forEach { module, csv -> MaterialCodex.fromCSV(module, csv.doc) } (MaterialCodex::class as Any).javaClass.getField("INSTANCE").set(MaterialCodex::class.objectInstance, meta.materials)
*/
} }
} }

View File

@@ -0,0 +1,18 @@
package net.torvald.terrarum.modulebasegame.console
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.console.ConsoleCommand
import net.torvald.terrarum.serialise.Common
/**
* Created by minjaesong on 2021-09-04.
*/
object ExportCodices : ConsoleCommand {
override fun execute(args: Array<String>) {
println(Common.jsoner.toJson(Terrarum.BlockCodex))
}
override fun printUsage() {
TODO("Not yet implemented")
}
}

View File

@@ -6,7 +6,7 @@ import net.torvald.terrarum.console.Echo
import net.torvald.terrarum.console.EchoError import net.torvald.terrarum.console.EchoError
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.*
import net.torvald.terrarum.modulebasegame.gameactors.Pocketed import net.torvald.terrarum.modulebasegame.gameactors.Pocketed
/** /**

View File

@@ -25,7 +25,6 @@ object Load : ConsoleCommand {
val disk = VDUtil.readDiskArchive(file, charset = charset) val disk = VDUtil.readDiskArchive(file, charset = charset)
val meta = ReadMeta(disk) val meta = ReadMeta(disk)
meta.blocks.forEach { s, str -> println("Module $s\n"); println(str.doc) }
println(meta.loadorder.joinToString()) println(meta.loadorder.joinToString())
} }
catch (e: IOException) { catch (e: IOException) {

View File

@@ -1,10 +1,10 @@
package net.torvald.terrarum.modulebasegame.gameactors package net.torvald.terrarum.modulebasegame.gameactors
import net.torvald.terrarum.AppLoader import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.ItemCodex
import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.Actor
import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar

View File

@@ -2,18 +2,15 @@ package net.torvald.terrarum.modulebasegame.gameactors
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.g2d.TextureRegion import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.AppLoader.printdbg import net.torvald.terrarum.BlockCodex
import net.torvald.terrarum.ItemCodex
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZEF import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZEF
import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameactors.PhysProperties import net.torvald.terrarum.gameactors.PhysProperties
import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.worlddrawer.WorldCamera import net.torvald.terrarum.worlddrawer.WorldCamera
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
/** /**
* Created by minjaesong on 2016-03-15. * Created by minjaesong on 2016-03-15.

View File

@@ -15,6 +15,7 @@ import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import org.dyn4j.geometry.Vector2 import org.dyn4j.geometry.Vector2
import net.torvald.terrarum.*
typealias BlockBoxIndex = Int typealias BlockBoxIndex = Int

View File

@@ -8,6 +8,7 @@ import net.torvald.terrarum.lock
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TerrarumIngame
import java.math.BigInteger import java.math.BigInteger
import java.util.concurrent.locks.ReentrantLock import java.util.concurrent.locks.ReentrantLock
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2021-03-16. * Created by minjaesong on 2021-03-16.

View File

@@ -8,6 +8,7 @@ import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.faction.FactionFactory import net.torvald.terrarum.gameactors.faction.FactionFactory
import net.torvald.terrarum.worlddrawer.CreateTileAtlas import net.torvald.terrarum.worlddrawer.CreateTileAtlas
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2016-02-03. * Created by minjaesong on 2016-02-03.

View File

@@ -5,6 +5,7 @@ import net.torvald.terrarum.gameactors.ActorValue
import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2016-01-15. * Created by minjaesong on 2016-01-15.

View File

@@ -13,6 +13,7 @@ import net.torvald.terrarum.gameactors.Luminous
import net.torvald.terrarum.gameactors.PhysProperties import net.torvald.terrarum.gameactors.PhysProperties
import org.dyn4j.geometry.Vector2 import org.dyn4j.geometry.Vector2
import java.util.* import java.util.*
import net.torvald.terrarum.*
/** /**
* Simplest projectile. * Simplest projectile.

View File

@@ -4,6 +4,7 @@ import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.ItemCodex
import java.util.concurrent.Callable import java.util.concurrent.Callable
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2016-05-25. * Created by minjaesong on 2016-05-25.

View File

@@ -9,6 +9,7 @@ import net.torvald.terrarum.gameactors.ActorWithBody
import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2019-05-02. * Created by minjaesong on 2019-05-02.

View File

@@ -17,6 +17,7 @@ import net.torvald.terrarum.modulebasegame.gameactors.DroppedItem
import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.BASE_MASS_AND_SIZE import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.BASE_MASS_AND_SIZE
import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.TOOL_DURABILITY_BASE import net.torvald.terrarum.modulebasegame.gameitems.PickaxeCore.TOOL_DURABILITY_BASE
import kotlin.math.roundToInt import kotlin.math.roundToInt
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2019-03-10. * Created by minjaesong on 2019-03-10.

View File

@@ -3,6 +3,7 @@ package net.torvald.terrarum.modulebasegame.ui
import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2017-04-21. * Created by minjaesong on 2017-04-21.

View File

@@ -8,6 +8,7 @@ import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.toInt import net.torvald.terrarum.toInt
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import net.torvald.terrarum.*
/** /**

View File

@@ -17,6 +17,7 @@ import net.torvald.terrarum.ui.UIItemTextButtonList
import net.torvald.terrarum.ui.UIItemTextButtonList.Companion.DEFAULT_BACKGROUNDCOL import net.torvald.terrarum.ui.UIItemTextButtonList.Companion.DEFAULT_BACKGROUNDCOL
import net.torvald.terrarum.worlddrawer.CreateTileAtlas import net.torvald.terrarum.worlddrawer.CreateTileAtlas
import kotlin.math.roundToInt import kotlin.math.roundToInt
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2019-02-14. * Created by minjaesong on 2019-02-14.

View File

@@ -15,6 +15,7 @@ import net.torvald.terrarum.modulebasegame.BuildingMaker
import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory.CELLCOLOUR_BLACK import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory.CELLCOLOUR_BLACK
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UINSMenu import net.torvald.terrarum.ui.UINSMenu
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2019-02-03. * Created by minjaesong on 2019-02-03.

View File

@@ -11,6 +11,7 @@ import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.*
/** /**
* A bar-shaped representation of the Quickslot. * A bar-shaped representation of the Quickslot.

View File

@@ -14,6 +14,7 @@ import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar.Companion.COMMON_OP
import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar.Companion.SLOT_COUNT import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar.Companion.SLOT_COUNT
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import org.dyn4j.geometry.Vector2 import org.dyn4j.geometry.Vector2
import net.torvald.terrarum.*
/** /**
* The Sims styled pie representation of the Quickslot. * The Sims styled pie representation of the Quickslot.

View File

@@ -5,6 +5,7 @@ import net.torvald.terrarum.gameactors.faction.FactionCodex
import net.torvald.terrarum.gameworld.BlockAddress import net.torvald.terrarum.gameworld.BlockAddress
import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2016-03-27. * Created by minjaesong on 2016-03-27.

View File

@@ -6,13 +6,17 @@ import java.util.*
/** /**
* Created by minjaesong on 2016-03-27. * Created by minjaesong on 2016-03-27.
*/ */
object RealEstateCodex { class RealEstateCodex {
/** /**
* HashMap<Absolute block number, Actor/Faction ID> * HashMap<Absolute block number, Actor/Faction ID>
* *
* Note that a block can have only ONE owner (as an Actor or Faction ID) * Note that a block can have only ONE owner (as an Actor or Faction ID)
*/ */
private var ownershipRegistry: HashMap<Long, Int> = HashMap() private val ownershipRegistry: HashMap<Long, Int> = HashMap()
fun clear() = ownershipRegistry.clear()
internal constructor()
fun setOwner(world: GameWorld, tileX: Int, tileY: Int, refID: Int) { fun setOwner(world: GameWorld, tileX: Int, tileY: Int, refID: Int) {
ownershipRegistry[LandUtil.getBlockAddr(world, tileX, tileY)] = refID ownershipRegistry[LandUtil.getBlockAddr(world, tileX, tileY)] = refID

View File

@@ -8,10 +8,7 @@ import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64Reader import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64Reader
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.EntryFile import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.EntryFile
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.VirtualDisk import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.VirtualDisk
import net.torvald.terrarum.utils.MetaModuleCSVPair
import net.torvald.terrarum.utils.ZipCodedStr
import net.torvald.terrarum.weather.WeatherMixer import net.torvald.terrarum.weather.WeatherMixer
import java.io.StringReader
/** /**
* Created by minjaesong on 2021-08-23. * Created by minjaesong on 2021-08-23.
@@ -33,26 +30,6 @@ object WriteMeta {
creation_t = world.creationTime, creation_t = world.creationTime,
lastplay_t = world.lastPlayTime, lastplay_t = world.lastPlayTime,
playtime_t = world.totalPlayTime + currentPlayTime_t, playtime_t = world.totalPlayTime + currentPlayTime_t,
blocks = ModMgr.getFilesFromEveryMod("blocks/blocks.csv").fold(MetaModuleCSVPair()) {
map, (modname, file) ->
map[modname] = ZipCodedStr(file.readText ())
/*return*/map
},
items = ModMgr.getFilesFromEveryMod("items/itemid.csv").fold(MetaModuleCSVPair()) {
map, (modname, file) ->
map[modname] = ZipCodedStr(file.readText ())
/*return*/map
},
wires = ModMgr.getFilesFromEveryMod("wires/wires.csv").fold(MetaModuleCSVPair()) {
map, (modname, file) ->
map[modname] = ZipCodedStr(file.readText ())
/*return*/map
},
materials = ModMgr.getFilesFromEveryMod("materials/materials.csv").fold(MetaModuleCSVPair()) {
map, (modname, file) ->
map[modname] = ZipCodedStr(file.readText ())
/*return*/map
},
loadorder = ModMgr.loadOrder.toTypedArray(), loadorder = ModMgr.loadOrder.toTypedArray(),
worlds = ingame.gameworldIndices.toTypedArray() worlds = ingame.gameworldIndices.toTypedArray()
) )
@@ -78,13 +55,10 @@ object WriteMeta {
val creation_t: Long = 0, val creation_t: Long = 0,
val lastplay_t: Long = 0, val lastplay_t: Long = 0,
val playtime_t: Long = 0, val playtime_t: Long = 0,
val blocks: MetaModuleCSVPair = MetaModuleCSVPair(),
val items: MetaModuleCSVPair = MetaModuleCSVPair(),
val wires: MetaModuleCSVPair = MetaModuleCSVPair(),
val materials: MetaModuleCSVPair = MetaModuleCSVPair(),
val loadorder: Array<String> = arrayOf(), // do not use list; Could not instantiate instance of class: java.util.Collections$SingletonList val loadorder: Array<String> = arrayOf(), // do not use list; Could not instantiate instance of class: java.util.Collections$SingletonList
val worlds: Array<Int> = arrayOf() // do not use list; Could not instantiate instance of class: java.util.Collections$SingletonList val worlds: Array<Int> = arrayOf() // do not use list; Could not instantiate instance of class: java.util.Collections$SingletonList
) { ) {
override fun equals(other: Any?): Boolean { override fun equals(other: Any?): Boolean {
throw UnsupportedOperationException() throw UnsupportedOperationException()
} }

View File

@@ -1,8 +1,8 @@
package net.torvald.terrarum.serialise package net.torvald.terrarum.serialise
import net.torvald.terrarum.* import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.SanicLoadScreen
import net.torvald.terrarum.gameactors.BlockMarkerActor import net.torvald.terrarum.Terrarum
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.modulecomputers.virtualcomputer.tvd.* import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.*
@@ -37,6 +37,26 @@ object WriteSavegame {
val meta = DiskEntry(-1, 0, "savegame".toByteArray(), creation_t, time_t, metaContent) val meta = DiskEntry(-1, 0, "savegame".toByteArray(), creation_t, time_t, metaContent)
addFile(disk, meta) addFile(disk, meta)
// Write BlockCodex//
/*val blockCodexContent = EntryFile(ByteArray64.fromByteArray(Common.jsoner.toJson(BlockCodex, BlockCodex.javaClass).toByteArray(Common.CHARSET)))
val blocks = DiskEntry(-16, 0, "blocks".toByteArray(), creation_t, time_t, blockCodexContent)
addFile(disk, blocks)
// Write ItemCodex//
val itemCodexContent = EntryFile(ByteArray64.fromByteArray(Common.jsoner.toJson(ItemCodex, ItemCodex.javaClass).toByteArray(Common.CHARSET)))
val items = DiskEntry(-17, 0, "items".toByteArray(), creation_t, time_t, itemCodexContent)
addFile(disk, items)
// Write WireCodex//
val wireCodexContent = EntryFile(ByteArray64.fromByteArray(Common.jsoner.toJson(WireCodex, WireCodex.javaClass).toByteArray(Common.CHARSET)))
val wires = DiskEntry(-18, 0, "wires".toByteArray(), creation_t, time_t, wireCodexContent)
addFile(disk, wires)
// Write MaterialCodex//
val materialCodexContent = EntryFile(ByteArray64.fromByteArray(Common.jsoner.toJson(MaterialCodex, MaterialCodex.javaClass).toByteArray(Common.CHARSET)))
val materials = DiskEntry(-19, 0, "materials".toByteArray(), creation_t, time_t, materialCodexContent)
addFile(disk, materials)*/
// Write World // // Write World //
val worldNum = ingame.world.worldIndex val worldNum = ingame.world.worldIndex
val worldContent = EntryFile(WriteWorld.encodeToByteArray64(ingame)) val worldContent = EntryFile(WriteWorld.encodeToByteArray64(ingame))

View File

@@ -6,6 +6,7 @@ import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.serialise.toLittle import net.torvald.terrarum.serialise.toLittle
import java.util.* import java.util.*
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2019-07-27. * Created by minjaesong on 2019-07-27.