mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-13 20:14:05 +09:00
loading player from json file
This commit is contained in:
41
src/net/torvald/terrarum/serialise/ReadActor.kt
Normal file
41
src/net/torvald/terrarum/serialise/ReadActor.kt
Normal file
@@ -0,0 +1,41 @@
|
||||
package net.torvald.terrarum.serialise
|
||||
|
||||
import net.torvald.spriteanimation.HasAssembledSprite
|
||||
import net.torvald.spriteanimation.SpriteAnimation
|
||||
import net.torvald.terrarum.gameactors.Actor
|
||||
import net.torvald.terrarum.gameactors.ActorWithBody
|
||||
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
||||
import java.io.InputStream
|
||||
import java.io.Reader
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2021-08-27.
|
||||
*/
|
||||
class ReadActor(val ingame: TerrarumIngame) {
|
||||
|
||||
open fun invoke(worldDataStream: InputStream) {
|
||||
postRead(Common.jsoner.fromJson(IngamePlayer::class.java, worldDataStream))
|
||||
}
|
||||
|
||||
open fun invoke(worldDataStream: Reader) {
|
||||
IngamePlayer()
|
||||
|
||||
postRead(Common.jsoner.fromJson(IngamePlayer::class.java, worldDataStream))
|
||||
}
|
||||
|
||||
private fun postRead(actor: IngamePlayer) {
|
||||
// filling in Transients
|
||||
actor.actorValue.actor = actor
|
||||
actor.inventory.actor = actor
|
||||
actor.sprite = SpriteAnimation(actor)
|
||||
if (actor.animDescPathGlow != null) actor.spriteGlow = SpriteAnimation(actor)
|
||||
actor.reassembleSprite(actor.sprite!!, actor.spriteGlow)
|
||||
// replace existing player
|
||||
ingame.forceRemoveActor(ingame.actorNowPlaying!!)
|
||||
ingame.addNewActor(actor)
|
||||
ingame.actorNowPlaying = actor
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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.modulebasegame.gameactors.IngamePlayer
|
||||
import net.torvald.terrarum.modulecomputers.virtualcomputer.tvd.ByteArray64
|
||||
import java.math.BigInteger
|
||||
|
||||
@@ -12,11 +13,11 @@ import java.math.BigInteger
|
||||
*/
|
||||
object WriteActor {
|
||||
|
||||
operator fun invoke(actor: Actor): String {
|
||||
operator fun invoke(actor: IngamePlayer): String {
|
||||
return Common.jsoner.toJson(actor)
|
||||
}
|
||||
|
||||
fun encodeToByteArray64(actor: Actor): ByteArray64 {
|
||||
fun encodeToByteArray64(actor: IngamePlayer): ByteArray64 {
|
||||
val ba = ByteArray64()
|
||||
this.invoke(actor).toByteArray().forEach { ba.add(it) }
|
||||
return ba
|
||||
|
||||
Reference in New Issue
Block a user