mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-11 02:54:04 +09:00
actor serialiser
This commit is contained in:
@@ -61,6 +61,7 @@ object CommandDict {
|
|||||||
|
|
||||||
/* !! */"exportmeta" to ExportMeta,
|
/* !! */"exportmeta" to ExportMeta,
|
||||||
/* !! */"exportworld" to ExportWorld,
|
/* !! */"exportworld" to ExportWorld,
|
||||||
|
/* !! */"exportactor" to ExportActor,
|
||||||
/* !! */"importlayer" to ImportLayerData,
|
/* !! */"importlayer" to ImportLayerData,
|
||||||
/* !! */"exportfborgb" to ExportRendererFboRGB
|
/* !! */"exportfborgb" to ExportRendererFboRGB
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import net.torvald.terrarum.Terrarum
|
|||||||
import net.torvald.terrarum.console.ConsoleCommand
|
import net.torvald.terrarum.console.ConsoleCommand
|
||||||
import net.torvald.terrarum.console.Echo
|
import net.torvald.terrarum.console.Echo
|
||||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
|
import net.torvald.terrarum.serialise.WriteActor
|
||||||
import net.torvald.terrarum.serialise.WriteMeta
|
import net.torvald.terrarum.serialise.WriteMeta
|
||||||
import net.torvald.terrarum.serialise.WriteWorld
|
import net.torvald.terrarum.serialise.WriteWorld
|
||||||
import net.torvald.terrarum.utils.JsonWriter
|
import net.torvald.terrarum.utils.JsonWriter
|
||||||
@@ -53,4 +54,36 @@ object ExportWorld : ConsoleCommand {
|
|||||||
override fun printUsage() {
|
override fun printUsage() {
|
||||||
Echo("Usage: Exportworld")
|
Echo("Usage: Exportworld")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
object ExportActor : ConsoleCommand {
|
||||||
|
override fun execute(args: Array<String>) {
|
||||||
|
if (args.size == 2) {
|
||||||
|
try {
|
||||||
|
val player = (Terrarum.ingame!! as TerrarumIngame).actorNowPlaying
|
||||||
|
if (player == null) return
|
||||||
|
|
||||||
|
val str = WriteActor(player)
|
||||||
|
val writer = java.io.FileWriter(AppLoader.defaultDir + "/Exports/${args[1]}.json", false)
|
||||||
|
writer.write(str)
|
||||||
|
writer.close()
|
||||||
|
|
||||||
|
Echo("Exportactor: exported to ${args[1]}.json")
|
||||||
|
}
|
||||||
|
catch (e: IOException) {
|
||||||
|
Echo("Exportactor: IOException raised.")
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printUsage()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun printUsage() {
|
||||||
|
Echo("Export Actor as JSON format.")
|
||||||
|
Echo("Usage: exportactor (id) filename-without-extension")
|
||||||
|
Echo("blank ID for player")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
33
src/net/torvald/terrarum/serialise/WriteActor.kt
Normal file
33
src/net/torvald/terrarum/serialise/WriteActor.kt
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
package net.torvald.terrarum.serialise
|
||||||
|
|
||||||
|
import com.badlogic.gdx.utils.Json
|
||||||
|
import com.badlogic.gdx.utils.JsonValue
|
||||||
|
import com.badlogic.gdx.utils.JsonWriter
|
||||||
|
import net.torvald.terrarum.gameactors.Actor
|
||||||
|
import java.math.BigInteger
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by minjaesong on 2021-08-24.
|
||||||
|
*/
|
||||||
|
object WriteActor {
|
||||||
|
|
||||||
|
private val jsoner = Json(JsonWriter.OutputType.json)
|
||||||
|
|
||||||
|
// install custom (de)serialiser
|
||||||
|
init {
|
||||||
|
jsoner.setSerializer(BigInteger::class.java, object : Json.Serializer<BigInteger> {
|
||||||
|
override fun write(json: Json, obj: BigInteger?, knownType: Class<*>?) {
|
||||||
|
json.writeValue(obj?.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun read(json: Json, jsonData: JsonValue, type: Class<*>?): BigInteger {
|
||||||
|
return BigInteger(jsonData.asString())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
operator fun invoke(actor: Actor): String {
|
||||||
|
return jsoner.toJson(actor)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,11 +1,7 @@
|
|||||||
package net.torvald.terrarum.serialise
|
package net.torvald.terrarum.serialise
|
||||||
|
|
||||||
import com.badlogic.gdx.utils.Json
|
|
||||||
import com.badlogic.gdx.utils.JsonValue
|
|
||||||
import com.badlogic.gdx.utils.JsonWriter
|
|
||||||
import com.badlogic.gdx.utils.compression.Lzma
|
import com.badlogic.gdx.utils.compression.Lzma
|
||||||
import net.torvald.terrarum.ModMgr
|
import net.torvald.terrarum.ModMgr
|
||||||
import net.torvald.terrarum.gameworld.BlockLayer
|
|
||||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser
|
import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser
|
||||||
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64GrowableOutputStream
|
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64GrowableOutputStream
|
||||||
|
|||||||
@@ -1,11 +1,6 @@
|
|||||||
package net.torvald.terrarum.serialise
|
package net.torvald.terrarum.serialise
|
||||||
|
|
||||||
import com.badlogic.gdx.utils.Json
|
|
||||||
import com.badlogic.gdx.utils.JsonWriter
|
|
||||||
import net.torvald.terrarum.gameworld.BlockLayer
|
|
||||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64GrowableOutputStream
|
|
||||||
import java.util.zip.GZIPOutputStream
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by minjaesong on 2021-08-23.
|
* Created by minjaesong on 2021-08-23.
|
||||||
|
|||||||
Reference in New Issue
Block a user