mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-17 05:54:05 +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;
|
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;
|
||||||
|
|
||||||
|
|||||||
@@ -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!!
|
||||||
|
|
||||||
|
|||||||
@@ -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")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
@@ -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))
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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(',')
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.*
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.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
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.*
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user