From 6b74f3a9c407ee94be29f5e82dc769c32842c218 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 24 Aug 2021 17:29:19 +0900 Subject: [PATCH] ba64 outputting functions --- src/net/torvald/terrarum/serialise/WriteActor.kt | 7 +++++++ src/net/torvald/terrarum/serialise/WriteMeta.kt | 8 ++++++++ src/net/torvald/terrarum/serialise/WriteWorld.kt | 16 +++++++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/net/torvald/terrarum/serialise/WriteActor.kt b/src/net/torvald/terrarum/serialise/WriteActor.kt index 9cd4821ee..6b57eca51 100644 --- a/src/net/torvald/terrarum/serialise/WriteActor.kt +++ b/src/net/torvald/terrarum/serialise/WriteActor.kt @@ -4,6 +4,7 @@ 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 net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64 import java.math.BigInteger /** @@ -30,4 +31,10 @@ object WriteActor { return jsoner.toJson(actor) } + fun encodeToByteArray64(actor: Actor): ByteArray64 { + val ba = ByteArray64() + this.invoke(actor).toByteArray().forEach { ba.add(it) } + return ba + } + } \ No newline at end of file diff --git a/src/net/torvald/terrarum/serialise/WriteMeta.kt b/src/net/torvald/terrarum/serialise/WriteMeta.kt index 4763668c0..8b3aa654a 100644 --- a/src/net/torvald/terrarum/serialise/WriteMeta.kt +++ b/src/net/torvald/terrarum/serialise/WriteMeta.kt @@ -2,8 +2,10 @@ package net.torvald.terrarum.serialise import com.badlogic.gdx.utils.compression.Lzma import net.torvald.terrarum.ModMgr +import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.worldgenerator.RoguelikeRandomiser +import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64 import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64GrowableOutputStream import net.torvald.terrarum.weather.WeatherMixer import java.io.ByteArrayInputStream @@ -63,6 +65,12 @@ open class WriteMeta(val ingame: TerrarumIngame) { return json } + + fun encodeToByteArray64(): ByteArray64 { + val ba = ByteArray64() + this.invoke().toByteArray().forEach { ba.add(it) } + return ba + } } /** diff --git a/src/net/torvald/terrarum/serialise/WriteWorld.kt b/src/net/torvald/terrarum/serialise/WriteWorld.kt index 0cc7207e3..65b574116 100644 --- a/src/net/torvald/terrarum/serialise/WriteWorld.kt +++ b/src/net/torvald/terrarum/serialise/WriteWorld.kt @@ -1,6 +1,7 @@ package net.torvald.terrarum.serialise import net.torvald.terrarum.modulebasegame.TerrarumIngame +import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64 /** * Created by minjaesong on 2021-08-23. @@ -12,5 +13,18 @@ class WriteWorld(val ingame: TerrarumIngame) { return "{${world.getJsonFields().joinToString(",\n")}}" } - + fun encodeToByteArray64(): ByteArray64 { + val world = ingame.world + val ba = ByteArray64() + ba.add('{'.code.toByte()) + world.getJsonFields().forEachIndexed { index, str -> + if (index > 0) { + ba.add(','.code.toByte()) + ba.add('\n'.code.toByte()) + } + str.toByteArray().forEach { ba.add(it) } + } + ba.add('}'.code.toByte()) + return ba + } }