mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-13 15:16:07 +09:00
moved Codices out of the singleton so they can be serialised
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
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.backends.lwjgl3.Lwjgl3Application;
|
||||
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.TerrarumController;
|
||||
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.gameworld.GameWorld;
|
||||
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.TextureRegionPack;
|
||||
import net.torvald.util.DebugTimers;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
import static net.torvald.terrarum.TerrarumKt.gdxClearAndSetBlend;
|
||||
import static net.torvald.terrarum.TerrarumKt.printStackTrace;
|
||||
|
||||
|
||||
@@ -3,11 +3,16 @@ package net.torvald.terrarum
|
||||
import com.badlogic.gdx.Screen
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
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.ActorID
|
||||
import net.torvald.terrarum.gameactors.BlockMarkerActor
|
||||
import net.torvald.terrarum.gameactors.faction.FactionCodex
|
||||
import net.torvald.terrarum.gameitem.ItemID
|
||||
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.gameactors.ActorHumanoid
|
||||
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 ReferencedActorAlreadyExistsException(actor: Actor) : Exception("The actor $actor already exists in the game")
|
||||
class ProtectedActorRemovalException(whatisit: String) : Exception("Attempted to removed protected actor '$whatisit'")
|
||||
|
||||
val INGAME: IngameInstance
|
||||
get() = Terrarum.ingame!!
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ import net.torvald.terrarum.AppLoader.*
|
||||
import net.torvald.terrarum.blockproperties.BlockCodex
|
||||
import net.torvald.terrarum.blockproperties.WireCodex
|
||||
import net.torvald.terrarum.gameitem.GameItem
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.gameitem.ItemID
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.itemproperties.MaterialCodex
|
||||
import net.torvald.terrarum.langpack.Lang
|
||||
import net.torvald.terrarum.utils.CSVFetcher
|
||||
@@ -141,6 +141,7 @@ object ModMgr {
|
||||
catch (e: Throwable) {
|
||||
printdbgerr(this, "There was an error while loading module $moduleName")
|
||||
printdbgerr(this, "\t$e")
|
||||
e.printStackTrace(System.err)
|
||||
moduleInfo.remove(moduleName)
|
||||
}
|
||||
}
|
||||
@@ -242,8 +243,8 @@ object ModMgr {
|
||||
|
||||
object GameBlockLoader {
|
||||
@JvmStatic operator fun invoke(module: String) {
|
||||
BlockCodex(module, "blocks/blocks.csv")
|
||||
WireCodex(module, "wires/")
|
||||
Terrarum.BlockCodex = BlockCodex(module, "blocks/blocks.csv")
|
||||
Terrarum.WireCodex = WireCodex(module, "wires/")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,6 +266,8 @@ object ModMgr {
|
||||
}
|
||||
|
||||
private fun register(module: String, csv: List<CSVRecord>) {
|
||||
Terrarum.ItemCodex = ItemCodex()
|
||||
|
||||
csv.forEach {
|
||||
val className: String = it["classname"].toString()
|
||||
val internalID: Int = it["id"].toInt()
|
||||
@@ -293,7 +296,7 @@ object ModMgr {
|
||||
val matePath = "materials/"
|
||||
|
||||
@JvmStatic operator fun invoke(module: String) {
|
||||
MaterialCodex(module, matePath + "materials.csv")
|
||||
Terrarum.MaterialCodex = MaterialCodex(module, matePath + "materials.csv")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,9 +15,13 @@ import net.torvald.UnsafeHelper
|
||||
import net.torvald.random.HQRNG
|
||||
import net.torvald.terrarum.AppLoader.*
|
||||
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.ActorID
|
||||
import net.torvald.terrarum.gameactors.faction.FactionCodex
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.itemproperties.MaterialCodex
|
||||
import net.torvald.terrarum.ui.UICanvas
|
||||
import net.torvald.terrarum.worlddrawer.WorldCamera
|
||||
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 //
|
||||
//////////////////////////////
|
||||
@@ -629,4 +641,17 @@ interface Id_UICanvasNullable {
|
||||
fun <T> Array<T>.tail() = this.sliceArray(1 until this.size)
|
||||
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>.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
|
||||
@@ -18,7 +18,7 @@ import java.io.IOException
|
||||
/**
|
||||
* Created by minjaesong on 2016-02-16.
|
||||
*/
|
||||
object BlockCodex {
|
||||
class BlockCodex {
|
||||
|
||||
val blockProps = HashMap<ItemID, BlockProp>()
|
||||
|
||||
@@ -27,13 +27,13 @@ object BlockCodex {
|
||||
/** 65536 */
|
||||
//val MAX_TERRAIN_TILES = GameWorld.TILES_SUPPORTED
|
||||
|
||||
private val nullProp = BlockProp()
|
||||
@Transient private val nullProp = BlockProp()
|
||||
|
||||
var highestNumber = -1 // does not include virtual ones
|
||||
private set
|
||||
|
||||
// fake props for "randomised" dynamic lights
|
||||
const val DYNAMIC_RANDOM_CASES = 64
|
||||
@Transient val DYNAMIC_RANDOM_CASES = 64
|
||||
private var virtualTileCursor = 1
|
||||
|
||||
/**
|
||||
@@ -55,10 +55,12 @@ object BlockCodex {
|
||||
virtualToTile.clear()
|
||||
}
|
||||
|
||||
private constructor()
|
||||
|
||||
/**
|
||||
* 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")
|
||||
try {
|
||||
register(module, CSVFetcher.readFromModule(module, path))
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.torvald.terrarum.blockproperties
|
||||
|
||||
import net.torvald.gdx.graphics.Cvec
|
||||
import net.torvald.random.XXHash32
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.gameitem.ItemID
|
||||
import net.torvald.terrarum.gameworld.fmod
|
||||
|
||||
|
||||
@@ -4,8 +4,7 @@ import com.badlogic.gdx.Gdx
|
||||
import com.jme3.math.FastMath
|
||||
import net.torvald.gdx.graphics.Cvec
|
||||
import net.torvald.random.HQRNG
|
||||
import net.torvald.terrarum.Second
|
||||
import net.torvald.terrarum.Terrarum
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.gameworld.WorldTime
|
||||
import net.torvald.terrarum.weather.WeatherMixer
|
||||
|
||||
|
||||
@@ -1,37 +1,44 @@
|
||||
package net.torvald.terrarum.blockproperties
|
||||
|
||||
import net.torvald.terrarum.AppLoader
|
||||
import net.torvald.terrarum.CommonResourcePool
|
||||
import net.torvald.terrarum.ModMgr
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
||||
import net.torvald.terrarum.gameitem.GameItem
|
||||
import net.torvald.terrarum.gameitem.ItemID
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.utils.CSVFetcher
|
||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||
import org.apache.commons.csv.CSVRecord
|
||||
import java.io.IOException
|
||||
|
||||
/**
|
||||
* ItemCodex must be initialised first!
|
||||
*
|
||||
* Created by minjaesong on 2016-02-16.
|
||||
*/
|
||||
object WireCodex {
|
||||
class WireCodex {
|
||||
|
||||
val wireProps = HashMap<ItemID, WireProp>()
|
||||
|
||||
private val nullProp = WireProp()
|
||||
@Transient private val nullProp = WireProp()
|
||||
|
||||
fun 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.
|
||||
*
|
||||
* @param module name of the module
|
||||
* @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")
|
||||
try {
|
||||
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>) {
|
||||
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")
|
||||
@@ -70,7 +77,7 @@ object WireCodex {
|
||||
CommonResourcePool.loadAll()
|
||||
}
|
||||
|
||||
fun getAll() = WireCodex.wireProps.values
|
||||
fun getAll() = wireProps.values
|
||||
|
||||
/*fun get(index: Int): WireProp {
|
||||
try {
|
||||
@@ -99,11 +106,11 @@ object WireCodex {
|
||||
}*/
|
||||
operator fun get(blockID: ItemID?): WireProp {
|
||||
if (blockID == null || blockID == "basegame:"+Block.NULL) {
|
||||
return WireCodex.nullProp
|
||||
return nullProp
|
||||
}
|
||||
|
||||
try {
|
||||
return WireCodex.wireProps[blockID]!!
|
||||
return wireProps[blockID]!!
|
||||
}
|
||||
catch (e: NullPointerException) {
|
||||
throw NullPointerException("Wireprop with id $blockID does not exist.")
|
||||
@@ -111,7 +118,7 @@ object WireCodex {
|
||||
}
|
||||
|
||||
fun getOrNull(blockID: ItemID?): WireProp? {//<O>
|
||||
return WireCodex.wireProps[blockID]
|
||||
return wireProps[blockID]
|
||||
}
|
||||
|
||||
private fun setProp(modname: String, key: Int, record: CSVRecord) {
|
||||
@@ -127,7 +134,7 @@ object WireCodex {
|
||||
prop.outputType = record.get("outputtype") ?: prop.accepts
|
||||
prop.canBranch = record.boolVal("branching")
|
||||
|
||||
WireCodex.wireProps[prop.id] = prop
|
||||
wireProps[prop.id] = prop
|
||||
|
||||
// load java class
|
||||
val invImgRef = record.get("inventoryimg").split(',')
|
||||
|
||||
@@ -2,7 +2,6 @@ package net.torvald.terrarum.gameactors
|
||||
|
||||
import net.torvald.terrarum.ReferencingRanges
|
||||
import net.torvald.terrarum.Terrarum
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex.ACTORID_MIN
|
||||
|
||||
|
||||
typealias ActorID = Int
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
package net.torvald.terrarum.gameactors
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import net.torvald.terrarum.BlendMode
|
||||
import net.torvald.terrarum.CommonResourcePool
|
||||
import net.torvald.terrarum.Point2i
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
||||
import net.torvald.terrarum.blockproperties.WireCodex
|
||||
import net.torvald.terrarum.gameitem.ItemID
|
||||
import net.torvald.terrarum.toInt
|
||||
|
||||
/**
|
||||
* FIXME Constructor is super expensive
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package net.torvald.terrarum.gameactors.faction
|
||||
|
||||
import net.torvald.random.HQRNG
|
||||
import java.util.HashSet
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2016-02-15.
|
||||
|
||||
@@ -5,9 +5,13 @@ import java.util.*
|
||||
/**
|
||||
* Created by minjaesong on 2016-05-09.
|
||||
*/
|
||||
object FactionCodex {
|
||||
class FactionCodex {
|
||||
val factionContainer = ArrayList<Faction>()
|
||||
|
||||
fun clear() = factionContainer.clear()
|
||||
|
||||
internal constructor()
|
||||
|
||||
fun hasFaction(ID: FactionID): Boolean =
|
||||
if (factionContainer.size == 0)
|
||||
false
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.badlogic.gdx.Input.Keys
|
||||
import com.badlogic.gdx.InputAdapter
|
||||
import com.badlogic.gdx.controllers.Controllers
|
||||
import com.badlogic.gdx.utils.GdxRuntimeException
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.AppLoader
|
||||
import net.torvald.terrarum.AppLoader.printdbg
|
||||
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.gameitem.GameItem
|
||||
import net.torvald.terrarum.gameworld.fmod
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||
import net.torvald.terrarum.worlddrawer.WorldCamera
|
||||
import java.util.*
|
||||
|
||||
@@ -10,6 +10,7 @@ import net.torvald.terrarum.itemproperties.Material
|
||||
import net.torvald.terrarum.langpack.Lang
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.Pocketed
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
typealias ItemID = String
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ import java.util.*
|
||||
*
|
||||
* Created by minjaesong on 2016-03-15.
|
||||
*/
|
||||
object ItemCodex {
|
||||
class ItemCodex {
|
||||
|
||||
/**
|
||||
* <ItemID or RefID for Actor, TheItem>
|
||||
@@ -30,7 +30,9 @@ object ItemCodex {
|
||||
val dynamicItemDescription = HashMap<ItemID, GameItem>()
|
||||
val dynamicToStaticTable = HashMap<ItemID, ItemID>()
|
||||
|
||||
val ACTORID_MIN = ReferencingRanges.ACTORS.first
|
||||
@Transient val ACTORID_MIN = ReferencingRanges.ACTORS.first
|
||||
|
||||
internal constructor()
|
||||
|
||||
fun clear() {
|
||||
itemCodex.clear()
|
||||
|
||||
@@ -28,12 +28,14 @@ class Material {
|
||||
var identifier: String = "Name not set"
|
||||
}
|
||||
|
||||
object MaterialCodex {
|
||||
class MaterialCodex {
|
||||
|
||||
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))
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
package net.torvald.terrarum.modulebasegame
|
||||
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.AppLoader.IS_DEVELOPMENT_BUILD
|
||||
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.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.imagefont.WatchFont
|
||||
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.
|
||||
ModMgr.GameMaterialLoader.invoke(moduleName)
|
||||
ModMgr.GameBlockLoader.invoke(moduleName)
|
||||
ModMgr.GameItemLoader.invoke(moduleName)
|
||||
ModMgr.GameBlockLoader.invoke(moduleName)
|
||||
ModMgr.GameLanguageLoader.invoke(moduleName)
|
||||
|
||||
|
||||
|
||||
@@ -215,6 +215,11 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
|
||||
|
||||
lateinit var gameLoadMode: GameLoadMode
|
||||
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) {
|
||||
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)
|
||||
@@ -257,7 +262,7 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
|
||||
/**
|
||||
* Init instance by loading saved world
|
||||
*/
|
||||
private fun enterLoadFromSave(meta: WriteMeta.WorldMeta) {
|
||||
private fun enterLoadFromSave(meta: WriteMeta.WorldMeta, items: Any) {
|
||||
if (gameInitialised) {
|
||||
printdbg(this, "loaded successfully.")
|
||||
}
|
||||
@@ -266,21 +271,21 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
|
||||
WeatherMixer.loadFromSave(meta.weatseed0, meta.weatseed1)
|
||||
|
||||
// Load BlockCodex //
|
||||
BlockCodex.clear()
|
||||
meta.blocks.forEach { module, csv -> BlockCodex.fromCSV(module, csv.doc) }
|
||||
/*BlockCodex.clear()
|
||||
(BlockCodex::class as Any).javaClass.getField("INSTANCE").set(BlockCodex::class.objectInstance, meta.blocks)
|
||||
|
||||
// Load WireCodex //
|
||||
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 //
|
||||
ItemCodex.clear()
|
||||
meta.items.forEach { module, csv -> ModMgr.GameItemLoader.fromCSV(module, csv.doc) }
|
||||
// TODO registerNewDynamicItem
|
||||
(ItemCodex::class as Any).javaClass.getField("INSTANCE").set(ItemCodex::class.objectInstance, items)
|
||||
|
||||
// Load MaterialCodex //
|
||||
MaterialCodex.clear()
|
||||
meta.materials.forEach { module, csv -> MaterialCodex.fromCSV(module, csv.doc) }
|
||||
/*MaterialCodex.clear()
|
||||
(MaterialCodex::class as Any).javaClass.getField("INSTANCE").set(MaterialCodex::class.objectInstance, meta.materials)
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import net.torvald.terrarum.console.Echo
|
||||
import net.torvald.terrarum.console.EchoError
|
||||
import net.torvald.terrarum.gameitem.ItemID
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.Pocketed
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,7 +25,6 @@ object Load : ConsoleCommand {
|
||||
val disk = VDUtil.readDiskArchive(file, charset = charset)
|
||||
val meta = ReadMeta(disk)
|
||||
|
||||
meta.blocks.forEach { s, str -> println("Module $s\n"); println(str.doc) }
|
||||
println(meta.loadorder.joinToString())
|
||||
}
|
||||
catch (e: IOException) {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package net.torvald.terrarum.modulebasegame.gameactors
|
||||
|
||||
import net.torvald.terrarum.AppLoader
|
||||
import net.torvald.terrarum.ItemCodex
|
||||
import net.torvald.terrarum.gameactors.AVKey
|
||||
import net.torvald.terrarum.gameactors.Actor
|
||||
import net.torvald.terrarum.gameitem.GameItem
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.gameitem.ItemID
|
||||
import net.torvald.terrarum.modulebasegame.ui.UIQuickslotBar
|
||||
|
||||
|
||||
@@ -2,18 +2,15 @@ package net.torvald.terrarum.modulebasegame.gameactors
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
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_SIZEF
|
||||
import net.torvald.terrarum.blockproperties.BlockCodex
|
||||
import net.torvald.terrarum.gameactors.AVKey
|
||||
import net.torvald.terrarum.gameactors.ActorWithBody
|
||||
import net.torvald.terrarum.gameactors.PhysProperties
|
||||
import net.torvald.terrarum.gameitem.GameItem
|
||||
import net.torvald.terrarum.gameitem.ItemID
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.worlddrawer.WorldCamera
|
||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2016-03-15.
|
||||
|
||||
@@ -15,6 +15,7 @@ import net.torvald.terrarum.gameitem.ItemID
|
||||
import net.torvald.terrarum.gameworld.GameWorld
|
||||
import net.torvald.terrarum.ui.UICanvas
|
||||
import org.dyn4j.geometry.Vector2
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
typealias BlockBoxIndex = Int
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import net.torvald.terrarum.lock
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||
import java.math.BigInteger
|
||||
import java.util.concurrent.locks.ReentrantLock
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2021-03-16.
|
||||
|
||||
@@ -8,6 +8,7 @@ import net.torvald.terrarum.gameactors.AVKey
|
||||
import net.torvald.terrarum.gameactors.faction.FactionFactory
|
||||
import net.torvald.terrarum.worlddrawer.CreateTileAtlas
|
||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2016-02-03.
|
||||
|
||||
@@ -5,6 +5,7 @@ import net.torvald.terrarum.gameactors.ActorValue
|
||||
import net.torvald.terrarum.gameitem.GameItem
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.gameitem.ItemID
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2016-01-15.
|
||||
|
||||
@@ -13,6 +13,7 @@ import net.torvald.terrarum.gameactors.Luminous
|
||||
import net.torvald.terrarum.gameactors.PhysProperties
|
||||
import org.dyn4j.geometry.Vector2
|
||||
import java.util.*
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Simplest projectile.
|
||||
|
||||
@@ -4,6 +4,7 @@ import net.torvald.terrarum.AppLoader
|
||||
import net.torvald.terrarum.Terrarum
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import java.util.concurrent.Callable
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2016-05-25.
|
||||
|
||||
@@ -9,6 +9,7 @@ import net.torvald.terrarum.gameactors.ActorWithBody
|
||||
import net.torvald.terrarum.gameitem.GameItem
|
||||
import net.torvald.terrarum.gameitem.ItemID
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2019-05-02.
|
||||
|
||||
@@ -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.TOOL_DURABILITY_BASE
|
||||
import kotlin.math.roundToInt
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2019-03-10.
|
||||
|
||||
@@ -3,6 +3,7 @@ package net.torvald.terrarum.modulebasegame.ui
|
||||
import net.torvald.terrarum.gameitem.GameItem
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2017-04-21.
|
||||
|
||||
@@ -8,6 +8,7 @@ import net.torvald.terrarum.gameitem.GameItem
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.toInt
|
||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,6 +17,7 @@ import net.torvald.terrarum.ui.UIItemTextButtonList
|
||||
import net.torvald.terrarum.ui.UIItemTextButtonList.Companion.DEFAULT_BACKGROUNDCOL
|
||||
import net.torvald.terrarum.worlddrawer.CreateTileAtlas
|
||||
import kotlin.math.roundToInt
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2019-02-14.
|
||||
|
||||
@@ -15,6 +15,7 @@ import net.torvald.terrarum.modulebasegame.BuildingMaker
|
||||
import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory.CELLCOLOUR_BLACK
|
||||
import net.torvald.terrarum.ui.UICanvas
|
||||
import net.torvald.terrarum.ui.UINSMenu
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2019-02-03.
|
||||
|
||||
@@ -11,6 +11,7 @@ import net.torvald.terrarum.gameworld.fmod
|
||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||
import net.torvald.terrarum.ui.UICanvas
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* A bar-shaped representation of the Quickslot.
|
||||
|
||||
@@ -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.ui.UICanvas
|
||||
import org.dyn4j.geometry.Vector2
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* The Sims styled pie representation of the Quickslot.
|
||||
|
||||
@@ -5,6 +5,7 @@ import net.torvald.terrarum.gameactors.faction.FactionCodex
|
||||
import net.torvald.terrarum.gameworld.BlockAddress
|
||||
import net.torvald.terrarum.gameworld.GameWorld
|
||||
import net.torvald.terrarum.gameworld.fmod
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2016-03-27.
|
||||
|
||||
@@ -6,13 +6,17 @@ import java.util.*
|
||||
/**
|
||||
* Created by minjaesong on 2016-03-27.
|
||||
*/
|
||||
object RealEstateCodex {
|
||||
class RealEstateCodex {
|
||||
/**
|
||||
* HashMap<Absolute block number, Actor/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) {
|
||||
ownershipRegistry[LandUtil.getBlockAddr(world, tileX, tileY)] = refID
|
||||
|
||||
@@ -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.EntryFile
|
||||
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 java.io.StringReader
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2021-08-23.
|
||||
@@ -33,26 +30,6 @@ object WriteMeta {
|
||||
creation_t = world.creationTime,
|
||||
lastplay_t = world.lastPlayTime,
|
||||
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(),
|
||||
worlds = ingame.gameworldIndices.toTypedArray()
|
||||
)
|
||||
@@ -78,13 +55,10 @@ object WriteMeta {
|
||||
val creation_t: Long = 0,
|
||||
val lastplay_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 worlds: Array<Int> = arrayOf() // do not use list; Could not instantiate instance of class: java.util.Collections$SingletonList
|
||||
) {
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package net.torvald.terrarum.serialise
|
||||
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.gameactors.Actor
|
||||
import net.torvald.terrarum.gameactors.BlockMarkerActor
|
||||
import net.torvald.terrarum.AppLoader
|
||||
import net.torvald.terrarum.SanicLoadScreen
|
||||
import net.torvald.terrarum.Terrarum
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
||||
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)
|
||||
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 //
|
||||
val worldNum = ingame.world.worldIndex
|
||||
val worldContent = EntryFile(WriteWorld.encodeToByteArray64(ingame))
|
||||
|
||||
@@ -6,6 +6,7 @@ import net.torvald.terrarum.blockproperties.BlockCodex
|
||||
import net.torvald.terrarum.gameworld.fmod
|
||||
import net.torvald.terrarum.serialise.toLittle
|
||||
import java.util.*
|
||||
import net.torvald.terrarum.*
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2019-07-27.
|
||||
|
||||
Reference in New Issue
Block a user