mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-12 03:24:06 +09:00
much simpler way of composing savegame.json
This commit is contained in:
@@ -59,7 +59,7 @@ object CommandDict {
|
|||||||
"spawnlunarlander" to SpawnPhysTestLunarLander,
|
"spawnlunarlander" to SpawnPhysTestLunarLander,
|
||||||
"savetest" to SavegameWriterTest,
|
"savetest" to SavegameWriterTest,
|
||||||
|
|
||||||
/* !! */"exportlayer" to ExportLayerData,
|
/* !! */"exportmeta" to ExportMeta,
|
||||||
/* !! */"importlayer" to ImportLayerData,
|
/* !! */"importlayer" to ImportLayerData,
|
||||||
/* !! */"exportfborgb" to ExportRendererFboRGB
|
/* !! */"exportfborgb" to ExportRendererFboRGB
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -295,7 +295,6 @@ open class ActorWithBody(renderOrder: RenderOrder, val physProp: PhysProperties,
|
|||||||
|
|
||||||
@Transient private var assertPrinted = false
|
@Transient private var assertPrinted = false
|
||||||
|
|
||||||
// debug only
|
|
||||||
internal var walledLeft = false
|
internal var walledLeft = false
|
||||||
internal var walledRight = false
|
internal var walledRight = false
|
||||||
internal var walledTop = false // UNUSED; only for BasicDebugInfoWindow
|
internal var walledTop = false // UNUSED; only for BasicDebugInfoWindow
|
||||||
|
|||||||
@@ -13,22 +13,22 @@ import java.io.IOException
|
|||||||
/**
|
/**
|
||||||
* Created by minjaesong on 2017-07-18.
|
* Created by minjaesong on 2017-07-18.
|
||||||
*/
|
*/
|
||||||
object ExportLayerData : ConsoleCommand {
|
object ExportMeta : ConsoleCommand {
|
||||||
override fun execute(args: Array<String>) {
|
override fun execute(args: Array<String>) {
|
||||||
try {
|
try {
|
||||||
val str = WriteMeta(Terrarum.ingame!! as TerrarumIngame).invoke()
|
val str = WriteMeta(Terrarum.ingame!! as TerrarumIngame).invoke()
|
||||||
val writer = java.io.FileWriter(AppLoader.defaultDir + "/Exports/savegame.json", false)
|
val writer = java.io.FileWriter(AppLoader.defaultDir + "/Exports/savegame.json", false)
|
||||||
writer.write(str)
|
writer.write(str)
|
||||||
writer.close()
|
writer.close()
|
||||||
Echo("Exportlayer: exported to savegame.json")
|
Echo("Exportmeta: exported to savegame.json")
|
||||||
}
|
}
|
||||||
catch (e: IOException) {
|
catch (e: IOException) {
|
||||||
Echo("Exportlayer: IOException raised.")
|
Echo("Exportmeta: IOException raised.")
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun printUsage() {
|
override fun printUsage() {
|
||||||
Echo("Usage: exportlayer")
|
Echo("Usage: Exportmeta")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -127,8 +127,8 @@ open class ActorHumanoid(
|
|||||||
internal var walkCounterY = 0
|
internal var walkCounterY = 0
|
||||||
@Transient private val MAX_JUMP_LENGTH = 25 // manages "heaviness" of the jump control. Higher = heavier
|
@Transient private val MAX_JUMP_LENGTH = 25 // manages "heaviness" of the jump control. Higher = heavier
|
||||||
|
|
||||||
private var readonly_totalX = 0.0
|
@Transient private var readonly_totalX = 0.0
|
||||||
private var readonly_totalY = 0.0
|
@Transient private var readonly_totalY = 0.0
|
||||||
|
|
||||||
internal var jumping = false
|
internal var jumping = false
|
||||||
|
|
||||||
@@ -531,11 +531,11 @@ open class ActorHumanoid(
|
|||||||
return pwr * timedJumpCharge * JUMP_ACCELERATION_MOD * Math.sqrt(scale) // positive value
|
return pwr * timedJumpCharge * JUMP_ACCELERATION_MOD * Math.sqrt(scale) // positive value
|
||||||
}
|
}
|
||||||
|
|
||||||
private var oldMAX_JUMP_LENGTH = -1 // init
|
@Transient private var oldMAX_JUMP_LENGTH = -1 // init
|
||||||
private var oldJUMPPOWER = -1.0 // init
|
@Transient private var oldJUMPPOWER = -1.0 // init
|
||||||
private var oldJUMPPOWERBUFF = -1.0 // init
|
@Transient private var oldJUMPPOWERBUFF = -1.0 // init
|
||||||
private var oldScale = -1.0
|
@Transient private var oldScale = -1.0
|
||||||
private var oldDragCoefficient = -1.0
|
@Transient private var oldDragCoefficient = -1.0
|
||||||
// used by some AIs
|
// used by some AIs
|
||||||
var jumpAirTime: Double = -1.0
|
var jumpAirTime: Double = -1.0
|
||||||
get() {
|
get() {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package net.torvald.terrarum.serialise
|
package net.torvald.terrarum.serialise
|
||||||
|
|
||||||
import com.badlogic.gdx.utils.Json
|
import com.badlogic.gdx.utils.Json
|
||||||
|
import com.badlogic.gdx.utils.JsonValue
|
||||||
import com.badlogic.gdx.utils.JsonWriter
|
import com.badlogic.gdx.utils.JsonWriter
|
||||||
import net.torvald.terrarum.ModMgr
|
import net.torvald.terrarum.ModMgr
|
||||||
import net.torvald.terrarum.gameworld.BlockLayer
|
import net.torvald.terrarum.gameworld.BlockLayer
|
||||||
@@ -18,58 +19,51 @@ open class WriteMeta(val ingame: TerrarumIngame) {
|
|||||||
open fun invoke(): String {
|
open fun invoke(): String {
|
||||||
val world = ingame.world
|
val world = ingame.world
|
||||||
|
|
||||||
val props = hashMapOf<String, Any>(
|
val json = """{
|
||||||
"genver" to 4,
|
"genver": 4,
|
||||||
"savename" to world.worldName,
|
"savename": "${world.worldName}",
|
||||||
"terrseed" to world.generatorSeed,
|
"terrseed": ${world.generatorSeed},
|
||||||
"randseed0" to RoguelikeRandomiser.RNG.state0,
|
"randseed0": ${RoguelikeRandomiser.RNG.state0},
|
||||||
"randseed1" to RoguelikeRandomiser.RNG.state1,
|
"randseed1": ${RoguelikeRandomiser.RNG.state1},
|
||||||
"weatseed0" to WeatherMixer.RNG.state0,
|
"weatseed0": ${WeatherMixer.RNG.state0},
|
||||||
"weatseed1" to WeatherMixer.RNG.state1,
|
"weatseed1": ${WeatherMixer.RNG.state1},
|
||||||
"playerid" to ingame.theRealGamer.referenceID,
|
"playerid": ${ingame.theRealGamer.referenceID},
|
||||||
"creation_t" to world.creationTime,
|
"creation_t": ${world.creationTime},
|
||||||
"lastplay_t" to world.lastPlayTime,
|
"lastplay_t": ${world.lastPlayTime},
|
||||||
"playtime_t" to world.totalPlayTime,
|
"playtime_t": ${world.totalPlayTime},
|
||||||
|
"blocks": "${StringBuilder().let {
|
||||||
// CSVs
|
ModMgr.getFilesFromEveryMod("blocks/blocks.csv").forEach { (modname, file) ->
|
||||||
"blocks" to StringBuilder().let {
|
it.append("\n\n## module: $modname ##\n\n")
|
||||||
ModMgr.getFilesFromEveryMod("blocks/blocks.csv").forEach { (modname, file) ->
|
it.append(file.readText())
|
||||||
it.append("\n\n## module: $modname ##\n\n")
|
}
|
||||||
it.append(file.readText())
|
bytesToZipdStr(it.toString().toByteArray())
|
||||||
}
|
}}",
|
||||||
bytesToZipdStr(it.toString().toByteArray())
|
"items": "${StringBuilder().let {
|
||||||
},
|
ModMgr.getFilesFromEveryMod("items/itemid.csv").forEach { (modname, file) ->
|
||||||
|
it.append("\n\n## module: $modname ##\n\n")
|
||||||
"items" to StringBuilder().let {
|
it.append(file.readText())
|
||||||
ModMgr.getFilesFromEveryMod("items/itemid.csv").forEach { (modname, file) ->
|
}
|
||||||
it.append("\n\n## module: $modname ##\n\n")
|
bytesToZipdStr(it.toString().toByteArray())
|
||||||
it.append(file.readText())
|
}}",
|
||||||
}
|
"wires": "${StringBuilder().let {
|
||||||
bytesToZipdStr(it.toString().toByteArray())
|
ModMgr.getFilesFromEveryMod("wires/wires.csv").forEach { (modname, file) ->
|
||||||
},
|
it.append("\n\n## module: $modname ##\n\n")
|
||||||
|
it.append(file.readText())
|
||||||
"wires" to StringBuilder().let {
|
}
|
||||||
ModMgr.getFilesFromEveryMod("wires/wires.csv").forEach { (modname, file) ->
|
bytesToZipdStr(it.toString().toByteArray())
|
||||||
it.append("\n\n## module: $modname ##\n\n")
|
}}",
|
||||||
it.append(file.readText())
|
"materials": "${StringBuilder().let {
|
||||||
}
|
ModMgr.getFilesFromEveryMod("materials/materials.csv").forEach { (modname, file) ->
|
||||||
bytesToZipdStr(it.toString().toByteArray())
|
it.append("\n\n## module: $modname ##\n\n")
|
||||||
},
|
it.append(file.readText())
|
||||||
|
}
|
||||||
// TODO fluids
|
bytesToZipdStr(it.toString().toByteArray())
|
||||||
"materials" to StringBuilder().let {
|
}}",
|
||||||
ModMgr.getFilesFromEveryMod("materials/materials.csv").forEach { (modname, file) ->
|
"loadorder": [${ModMgr.loadOrder.map { "\"${it}\"" }.joinToString()}],
|
||||||
it.append("\n\n## module: $modname ##\n\n")
|
"worlds": [${ingame.gameworldIndices.joinToString()}]
|
||||||
it.append(file.readText())
|
}"""
|
||||||
}
|
|
||||||
bytesToZipdStr(it.toString().toByteArray())
|
|
||||||
},
|
|
||||||
|
|
||||||
"loadorder" to ModMgr.loadOrder,
|
|
||||||
"worlds" to ingame.gameworldIndices
|
|
||||||
)
|
|
||||||
|
|
||||||
return Json(JsonWriter.OutputType.json).toJson(props)
|
return json
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user