mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-12 11:34:05 +09:00
wippie
This commit is contained in:
@@ -56,12 +56,12 @@ object Terrarum : Disposable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var blockCodex = BlockCodex()
|
var blockCodex = BlockCodex(); internal set
|
||||||
var itemCodex = ItemCodex()
|
var itemCodex = ItemCodex(); internal set
|
||||||
var wireCodex = WireCodex()
|
var wireCodex = WireCodex(); internal set
|
||||||
var materialCodex = MaterialCodex()
|
var materialCodex = MaterialCodex(); internal set
|
||||||
var factionCodex = FactionCodex()
|
var factionCodex = FactionCodex(); internal set
|
||||||
var apocryphas = HashMap<String, Any>()
|
var apocryphas = HashMap<String, Any>(); internal set
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
|
|||||||
@@ -15,39 +15,38 @@ import net.torvald.terrarum.blockproperties.WireCodex
|
|||||||
import net.torvald.terrarum.blockstats.BlockStats
|
import net.torvald.terrarum.blockstats.BlockStats
|
||||||
import net.torvald.terrarum.blockstats.MinimapComposer
|
import net.torvald.terrarum.blockstats.MinimapComposer
|
||||||
import net.torvald.terrarum.concurrent.ThreadExecutor
|
import net.torvald.terrarum.concurrent.ThreadExecutor
|
||||||
|
import net.torvald.terrarum.console.AVTracker
|
||||||
|
import net.torvald.terrarum.console.ActorsList
|
||||||
import net.torvald.terrarum.console.Authenticator
|
import net.torvald.terrarum.console.Authenticator
|
||||||
|
import net.torvald.terrarum.gameactors.AVKey
|
||||||
import net.torvald.terrarum.gameactors.Actor
|
import net.torvald.terrarum.gameactors.Actor
|
||||||
import net.torvald.terrarum.gameactors.ActorWithBody
|
import net.torvald.terrarum.gameactors.ActorWithBody
|
||||||
|
import net.torvald.terrarum.gameactors.WireActor
|
||||||
|
import net.torvald.terrarum.gameactors.faction.FactionCodex
|
||||||
import net.torvald.terrarum.gamecontroller.IngameController
|
import net.torvald.terrarum.gamecontroller.IngameController
|
||||||
import net.torvald.terrarum.gamecontroller.KeyToggler
|
import net.torvald.terrarum.gamecontroller.KeyToggler
|
||||||
import net.torvald.terrarum.gameitem.GameItem
|
import net.torvald.terrarum.gameitem.GameItem
|
||||||
import net.torvald.terrarum.itemproperties.ItemCodex
|
|
||||||
import net.torvald.terrarum.console.AVTracker
|
|
||||||
import net.torvald.terrarum.console.ActorsList
|
|
||||||
import net.torvald.terrarum.gameactors.AVKey
|
|
||||||
import net.torvald.terrarum.gameparticles.ParticleBase
|
import net.torvald.terrarum.gameparticles.ParticleBase
|
||||||
import net.torvald.terrarum.gameactors.WireActor
|
|
||||||
import net.torvald.terrarum.gameworld.GameWorld
|
import net.torvald.terrarum.gameworld.GameWorld
|
||||||
|
import net.torvald.terrarum.gameworld.WorldSimulator
|
||||||
|
import net.torvald.terrarum.itemproperties.ItemCodex
|
||||||
|
import net.torvald.terrarum.itemproperties.MaterialCodex
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.*
|
import net.torvald.terrarum.modulebasegame.gameactors.*
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.physicssolver.CollisionSolver
|
import net.torvald.terrarum.modulebasegame.gameactors.physicssolver.CollisionSolver
|
||||||
import net.torvald.terrarum.gameworld.WorldSimulator
|
|
||||||
import net.torvald.terrarum.itemproperties.MaterialCodex
|
|
||||||
import net.torvald.terrarum.modulebasegame.gameworld.GameEconomy
|
import net.torvald.terrarum.modulebasegame.gameworld.GameEconomy
|
||||||
import net.torvald.terrarum.modulebasegame.ui.*
|
import net.torvald.terrarum.modulebasegame.ui.*
|
||||||
import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser
|
import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser
|
||||||
import net.torvald.terrarum.weather.WeatherMixer
|
|
||||||
import net.torvald.terrarum.modulebasegame.worldgenerator.Worldgen
|
import net.torvald.terrarum.modulebasegame.worldgenerator.Worldgen
|
||||||
import net.torvald.terrarum.modulebasegame.worldgenerator.WorldgenParams
|
import net.torvald.terrarum.modulebasegame.worldgenerator.WorldgenParams
|
||||||
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.VDUtil
|
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.VDUtil
|
||||||
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.VirtualDisk
|
|
||||||
import net.torvald.terrarum.serialise.Common
|
import net.torvald.terrarum.serialise.Common
|
||||||
import net.torvald.terrarum.serialise.WriteMeta
|
import net.torvald.terrarum.serialise.WriteMeta
|
||||||
import net.torvald.terrarum.ui.UICanvas
|
import net.torvald.terrarum.ui.UICanvas
|
||||||
|
import net.torvald.terrarum.weather.WeatherMixer
|
||||||
import net.torvald.terrarum.worlddrawer.BlocksDrawer
|
import net.torvald.terrarum.worlddrawer.BlocksDrawer
|
||||||
import net.torvald.terrarum.worlddrawer.FeaturesDrawer
|
import net.torvald.terrarum.worlddrawer.FeaturesDrawer
|
||||||
import net.torvald.terrarum.worlddrawer.WorldCamera
|
import net.torvald.terrarum.worlddrawer.WorldCamera
|
||||||
import net.torvald.util.CircularArray
|
import net.torvald.util.CircularArray
|
||||||
import java.util.*
|
|
||||||
import java.util.concurrent.locks.ReentrantLock
|
import java.util.concurrent.locks.ReentrantLock
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
@@ -215,12 +214,6 @@ 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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
enum class GameLoadMode {
|
enum class GameLoadMode {
|
||||||
@@ -234,7 +227,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, newItemCodex)
|
GameLoadMode.LOAD_FROM -> enterLoadFromSave(gameLoadInfoPayload as Codices)
|
||||||
}
|
}
|
||||||
|
|
||||||
IngameRenderer.setRenderedWorld(world)
|
IngameRenderer.setRenderedWorld(world)
|
||||||
@@ -250,6 +243,16 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
|
|||||||
// other worldgen options
|
// other worldgen options
|
||||||
)
|
)
|
||||||
|
|
||||||
|
data class Codices(
|
||||||
|
val meta: WriteMeta.WorldMeta,
|
||||||
|
val block: BlockCodex,
|
||||||
|
val item: ItemCodex,
|
||||||
|
val wire: WireCodex,
|
||||||
|
val material: MaterialCodex,
|
||||||
|
val faction: FactionCodex,
|
||||||
|
val apocryphas: Map<String, Any>
|
||||||
|
)
|
||||||
|
|
||||||
private fun setTheRealGamerFirstTime(actor: IngamePlayer) {
|
private fun setTheRealGamerFirstTime(actor: IngamePlayer) {
|
||||||
if (actor.referenceID != Terrarum.PLAYER_REF_ID) {
|
if (actor.referenceID != Terrarum.PLAYER_REF_ID) {
|
||||||
throw Error()
|
throw Error()
|
||||||
@@ -262,30 +265,23 @@ 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, items: Any) {
|
private fun enterLoadFromSave(codices: Codices) {
|
||||||
if (gameInitialised) {
|
if (gameInitialised) {
|
||||||
printdbg(this, "loaded successfully.")
|
printdbg(this, "loaded successfully.")
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
RoguelikeRandomiser.loadFromSave(meta.randseed0, meta.randseed1)
|
RoguelikeRandomiser.loadFromSave(codices.meta.randseed0, codices.meta.randseed1)
|
||||||
WeatherMixer.loadFromSave(meta.weatseed0, meta.weatseed1)
|
WeatherMixer.loadFromSave(codices.meta.weatseed0, codices.meta.weatseed1)
|
||||||
|
|
||||||
// Load BlockCodex //
|
// Load BlockCodex //
|
||||||
/*BlockCodex.clear()
|
|
||||||
(BlockCodex::class as Any).javaClass.getField("INSTANCE").set(BlockCodex::class.objectInstance, meta.blocks)
|
|
||||||
|
|
||||||
// Load WireCodex //
|
// Load WireCodex //
|
||||||
WireCodex.clear()
|
|
||||||
(WireCodex::class as Any).javaClass.getField("INSTANCE").set(WireCodex::class.objectInstance, meta.wires)
|
|
||||||
*/
|
|
||||||
// Load ItemCodex //
|
// Load ItemCodex //
|
||||||
ItemCodex.clear()
|
Terrarum.itemCodex = codices.item
|
||||||
(ItemCodex::class as Any).javaClass.getField("INSTANCE").set(ItemCodex::class.objectInstance, items)
|
|
||||||
|
|
||||||
// Load MaterialCodex //
|
// Load MaterialCodex //
|
||||||
/*MaterialCodex.clear()
|
|
||||||
(MaterialCodex::class as Any).javaClass.getField("INSTANCE").set(MaterialCodex::class.objectInstance, meta.materials)
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user