PlayerLastStatus on world save

This commit is contained in:
minjaesong
2021-10-10 17:39:19 +09:00
parent f3c56f5d47
commit 3ca95e138d
4 changed files with 19 additions and 14 deletions

View File

@@ -10,7 +10,7 @@ class ActorValue : KVHashMap {
@Transient lateinit var actor: Actor @Transient lateinit var actor: Actor
internal set internal set
private constructor() constructor()
constructor(actor: Actor) : this() { constructor(actor: Actor) : this() {
this.actor = actor this.actor = actor

View File

@@ -16,9 +16,6 @@ import net.torvald.terrarum.utils.*
import net.torvald.util.SortedArrayList import net.torvald.util.SortedArrayList
import org.dyn4j.geometry.Vector2 import org.dyn4j.geometry.Vector2
import java.util.* import java.util.*
import kotlin.NoSuchElementException
import kotlin.collections.ArrayList
import kotlin.collections.HashMap
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
typealias BlockAddress = Long typealias BlockAddress = Long
@@ -51,7 +48,7 @@ open class GameWorld() : Disposable {
var width: Int = 999; private set var width: Int = 999; private set
var height: Int = 999; private set var height: Int = 999; private set
var playersLastStatus = PlayersLastPhysics() // only gets used when the game saves and loads var playersLastStatus = PlayersLastStatus() // only gets used when the game saves and loads
/** Creation time for this world, NOT the entire savegame */ /** Creation time for this world, NOT the entire savegame */
internal var creationTime: Long = App.getTIME_T() internal var creationTime: Long = App.getTIME_T()

View File

@@ -5,13 +5,13 @@ import net.torvald.terrarum.App
import net.torvald.terrarum.ccG import net.torvald.terrarum.ccG
import net.torvald.terrarum.ccW import net.torvald.terrarum.ccW
import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.Echo
import net.torvald.terrarum.gameworld.PhysicalStatus
import net.torvald.terrarum.modulebasegame.IngameRenderer import net.torvald.terrarum.modulebasegame.IngameRenderer
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
import net.torvald.terrarum.realestate.LandUtil import net.torvald.terrarum.realestate.LandUtil
import net.torvald.terrarum.toInt import net.torvald.terrarum.toInt
import net.torvald.terrarum.tvda.* import net.torvald.terrarum.tvda.*
import net.torvald.terrarum.utils.PlayerLastStatus
import java.io.File import java.io.File
import java.util.zip.GZIPOutputStream import java.util.zip.GZIPOutputStream
@@ -124,7 +124,7 @@ class WorldSavingThread(val disk: VirtualDisk, val outFile: File, val ingame: Te
// Write World // // Write World //
// record all player's last position // record all player's last position
playersList.forEach { playersList.forEach {
ingame.world.playersLastStatus[it.uuid] = PhysicalStatus(it) ingame.world.playersLastStatus[it.uuid] = PlayerLastStatus(it)
} }
val worldMeta = EntryFile(WriteWorld.encodeToByteArray64(ingame, time_t)) val worldMeta = EntryFile(WriteWorld.encodeToByteArray64(ingame, time_t))
val world = DiskEntry(-1L, 0, creation_t, time_t, worldMeta) val world = DiskEntry(-1L, 0, creation_t, time_t, worldMeta)

View File

@@ -1,18 +1,15 @@
package net.torvald.terrarum.utils package net.torvald.terrarum.utils
import com.badlogic.gdx.utils.Json import net.torvald.terrarum.gameactors.ActorValue
import com.badlogic.gdx.utils.JsonValue
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.gameworld.BlockAddress import net.torvald.terrarum.gameworld.BlockAddress
import net.torvald.terrarum.gameworld.FluidType import net.torvald.terrarum.gameworld.FluidType
import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.gameworld.PhysicalStatus import net.torvald.terrarum.gameworld.PhysicalStatus
import net.torvald.terrarum.tvda.ByteArray64Reader import net.torvald.terrarum.modulebasegame.gameactors.ActorInventory
import net.torvald.terrarum.serialise.Common import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
import java.io.StringReader
import java.util.* import java.util.*
import kotlin.collections.HashMap
/** /**
* Created by minjaesong on 2021-08-26. * Created by minjaesong on 2021-08-26.
@@ -25,7 +22,18 @@ class HashedFluidType: HashMap<BlockAddress, FluidType>()
class HashedWirings: HashMap<BlockAddress, GameWorld.WiringNode>() class HashedWirings: HashMap<BlockAddress, GameWorld.WiringNode>()
class HashedWiringGraph: HashMap<BlockAddress, WiringGraphMap>() class HashedWiringGraph: HashMap<BlockAddress, WiringGraphMap>()
class MetaModuleCSVPair: HashMap<String, ZipCodedStr>() class MetaModuleCSVPair: HashMap<String, ZipCodedStr>()
class PlayersLastPhysics: HashMap<UUID, PhysicalStatus>() class PlayersLastStatus: HashMap<UUID, PlayerLastStatus>()
class PlayerLastStatus() {
var physics = PhysicalStatus(); private set
var inventory = ActorInventory(); private set
var actorValue = ActorValue(); private set
constructor(player: IngamePlayer) : this() {
physics = PhysicalStatus(player)
inventory = player.inventory
actorValue = player.actorValue
}
}
/** /**
* @param doc plaintext * @param doc plaintext
* *