diff --git a/src/net/torvald/terrarum/gameworld/GameWorld.kt b/src/net/torvald/terrarum/gameworld/GameWorld.kt index 30a8ada44..0678b2a49 100644 --- a/src/net/torvald/terrarum/gameworld/GameWorld.kt +++ b/src/net/torvald/terrarum/gameworld/GameWorld.kt @@ -20,6 +20,8 @@ open class GameWorld { val creationTime: Long var lastPlayTime: Long internal set // there's a case of save-and-continue-playing + var totalPlayTime: Int + internal set /** Used to calculate play time */ val loadTime: Long = System.currentTimeMillis() / 1000L @@ -56,7 +58,7 @@ open class GameWorld { internal set - constructor(worldIndex: Int, width: Int, height: Int, creationTIME_T: Long, lastPlayTIME_T: Long = creationTIME_T) { + constructor(worldIndex: Int, width: Int, height: Int, creationTIME_T: Long, lastPlayTIME_T: Long, totalPlayTime: Int) { this.worldIndex = worldIndex this.width = width this.height = height @@ -82,9 +84,10 @@ open class GameWorld { creationTime = creationTIME_T lastPlayTime = lastPlayTIME_T + this.totalPlayTime = totalPlayTime } - internal constructor(worldIndex: Int, layerData: ReadLayerDataLzma.LayerData, creationTIME_T: Long, lastPlayTIME_T: Long = creationTIME_T) { + internal constructor(worldIndex: Int, layerData: ReadLayerDataLzma.LayerData, creationTIME_T: Long, lastPlayTIME_T: Long, totalPlayTime: Int) { this.worldIndex = worldIndex layerTerrain = layerData.layerTerrain @@ -105,6 +108,7 @@ open class GameWorld { creationTime = creationTIME_T lastPlayTime = lastPlayTIME_T + this.totalPlayTime = totalPlayTime } diff --git a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt index d080c1971..a11609f65 100644 --- a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt +++ b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt @@ -23,7 +23,9 @@ import kotlin.system.measureNanoTime */ class BuildingMaker(batch: SpriteBatch) : IngameInstance(batch) { - val gameWorld = GameWorldExtension(1, 1024, 256) + private val timeNow = System.currentTimeMillis() / 1000 + + val gameWorld = GameWorldExtension(1, 1024, 256, timeNow, timeNow, 0) init { // ghetto world for building diff --git a/src/net/torvald/terrarum/modulebasegame/Ingame.kt b/src/net/torvald/terrarum/modulebasegame/Ingame.kt index 4b9078730..676c9f0a7 100644 --- a/src/net/torvald/terrarum/modulebasegame/Ingame.kt +++ b/src/net/torvald/terrarum/modulebasegame/Ingame.kt @@ -231,7 +231,8 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) { // init map as chosen size - gameworld = GameWorldExtension(1, worldParams.width, worldParams.height) + val timeNow = System.currentTimeMillis() / 1000 + gameworld = GameWorldExtension(1, worldParams.width, worldParams.height, timeNow, timeNow, 0) // new game, so the creation time is right now gameworldCount++ world = gameworld as GameWorld diff --git a/src/net/torvald/terrarum/modulebasegame/console/ExportLayerData.kt b/src/net/torvald/terrarum/modulebasegame/console/ExportLayerData.kt index 15d1937f6..ac9418b63 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/ExportLayerData.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ExportLayerData.kt @@ -5,6 +5,7 @@ import net.torvald.terrarum.console.Echo import net.torvald.terrarum.console.EchoError import net.torvald.terrarum.serialise.WriteLayerDataLzma import net.torvald.terrarum.serialise.WriteLayerDataZip +import net.torvald.terrarum.serialise.WriteWorldInfo /** * Created by minjaesong on 2017-07-18. @@ -12,7 +13,8 @@ import net.torvald.terrarum.serialise.WriteLayerDataZip object ExportLayerData : ConsoleCommand { override fun execute(args: Array) { try { - val outfile = WriteLayerDataLzma() + val outfile = WriteLayerDataZip() + WriteWorldInfo() Echo("Layer data exported to ${outfile!!.canonicalPath}") } catch (e: Exception) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/ImportLayerData.kt b/src/net/torvald/terrarum/modulebasegame/console/ImportLayerData.kt index 85560c672..17c0722ef 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/ImportLayerData.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/ImportLayerData.kt @@ -22,7 +22,7 @@ object ImportLayerData : ConsoleCommand { val layerData = ReadLayerDataLzma(file) - Terrarum.ingame!!.world = GameWorldExtension(1, layerData) + Terrarum.ingame!!.world = GameWorldExtension(1, layerData, 0, 0, 0) // FIXME null TIME_T for the (partial) test to pass Terrarum.ingame!!.actorNowPlaying?.setPosition( (Terrarum.ingame!!.world).spawnY * FeaturesDrawer.TILE_SIZE.toDouble(), (Terrarum.ingame!!.world).spawnX * FeaturesDrawer.TILE_SIZE.toDouble() diff --git a/src/net/torvald/terrarum/modulebasegame/gameworld/GameWorldExtension.kt b/src/net/torvald/terrarum/modulebasegame/gameworld/GameWorldExtension.kt index 8b9ab4cdb..fa58d3e78 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameworld/GameWorldExtension.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameworld/GameWorldExtension.kt @@ -8,8 +8,8 @@ import net.torvald.terrarum.serialise.ReadLayerDataLzma */ class GameWorldExtension: GameWorld { - constructor(worldIndex: Int, width: Int, height: Int) : super(worldIndex, width, height) - internal constructor(worldIndex: Int, layerData: ReadLayerDataLzma.LayerData) : super(worldIndex, layerData) + constructor(worldIndex: Int, width: Int, height: Int, creationTIME_T: Long, lastPlayTIME_T: Long, totalPlayTime: Int) : super(worldIndex, width, height, creationTIME_T, lastPlayTIME_T, totalPlayTime) + internal constructor(worldIndex: Int, layerData: ReadLayerDataLzma.LayerData, creationTIME_T: Long, lastPlayTIME_T: Long, totalPlayTime: Int) : super(worldIndex, layerData, creationTIME_T, lastPlayTIME_T, totalPlayTime) val time: WorldTime diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITitleCharactersList.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITitleCharactersList.kt index 1f6c0998d..6dd0dfe91 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITitleCharactersList.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITitleCharactersList.kt @@ -27,11 +27,11 @@ class UITitleCharactersList : UICanvas() { override var height = Terrarum.HEIGHT - moduleAreaHMargin * 2 private val moduleInfoCells = ArrayList() - // build module list + // build characters list init { - SavegameLedger.getSavefileList()?.forEachIndexed { index, file -> - - } + //SavegameLedger.getSavefileList()?.forEachIndexed { index, file -> + // + //} } private val mouduleArea = UIItemList( diff --git a/src/net/torvald/terrarum/serialise/ReadLayerData.kt b/src/net/torvald/terrarum/serialise/ReadLayerData.kt index 67dba41df..2d48c8357 100644 --- a/src/net/torvald/terrarum/serialise/ReadLayerData.kt +++ b/src/net/torvald/terrarum/serialise/ReadLayerData.kt @@ -66,7 +66,7 @@ internal object ReadLayerData { // create world out of tiles data - val retWorld = inWorld ?: GameWorldExtension(1, worldWidth, worldHeight) + val retWorld = inWorld ?: GameWorldExtension(1, worldWidth, worldHeight, 0, 0, 0) // FIXME null TIME_T for the (partial) test to pass retWorld.layerTerrain.data = terrainLayerMSB retWorld.layerWall.data = wallLayerMSB diff --git a/src/net/torvald/terrarum/serialise/WriteWorldInfo.kt b/src/net/torvald/terrarum/serialise/WriteWorldInfo.kt index a46eb1c3b..f6a2fb115 100644 --- a/src/net/torvald/terrarum/serialise/WriteWorldInfo.kt +++ b/src/net/torvald/terrarum/serialise/WriteWorldInfo.kt @@ -15,8 +15,6 @@ import java.io.FileOutputStream object WriteWorldInfo { - // FIXME UNTESTED - val META_MAGIC = "TESV".toByteArray(Charsets.UTF_8) val NULL = 0.toByte() @@ -108,9 +106,10 @@ object WriteWorldInfo { metaOut.write(timeNow.toLittle48()) // get playtime and save it - val timeToAdd = timeNow - world.loadTime - metaOut.write(world.lastPlayTime.plus(timeToAdd).toInt().toLittle()) + val timeToAdd = (timeNow - world.loadTime).toInt() + metaOut.write((world.totalPlayTime + timeToAdd).toLittle()) world.lastPlayTime = timeNow + world.totalPlayTime += timeToAdd diff --git a/work_files/graphics/terrain/wire_single_items.psd b/work_files/graphics/terrain/wire_single_items.psd index 52d2449da..826e16a47 100644 --- a/work_files/graphics/terrain/wire_single_items.psd +++ b/work_files/graphics/terrain/wire_single_items.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:511738b7e632902c5305b4a5edded4e5a752c43218feb6db9c9041ffa5d38a4e -size 489780 +oid sha256:69a2698668bb60f740a733657aa19eb00c57b0323f7bdb19a3fdba2d78cd8600 +size 496250