diff --git a/src/net/torvald/terrarum/GameUpdateGovernor.kt b/src/net/torvald/terrarum/GameUpdateGovernor.kt index dfaf84e6f..4daf572cd 100644 --- a/src/net/torvald/terrarum/GameUpdateGovernor.kt +++ b/src/net/torvald/terrarum/GameUpdateGovernor.kt @@ -28,7 +28,7 @@ object Anarchy : GameUpdateGovernor { } } -object LimitUpdateRate : GameUpdateGovernor { +object ConsistentUpdateRate : GameUpdateGovernor { private var akku = 0f diff --git a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt index cd64c9d9a..d03c5a14c 100644 --- a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt +++ b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt @@ -97,7 +97,7 @@ class BuildingMaker(batch: FlippingSpriteBatch) : IngameInstance(batch) { world = gameWorld - gameUpdateGovernor = LimitUpdateRate.also { it.reset() } + gameUpdateGovernor = ConsistentUpdateRate.also { it.reset() } } diff --git a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt index fe5cb2478..b834944a0 100644 --- a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt @@ -159,7 +159,7 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) { it.dispose() } - gameUpdateGovernor = LimitUpdateRate + gameUpdateGovernor = ConsistentUpdateRate } diff --git a/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt b/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt index 19ad96373..90d6c1454 100644 --- a/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt +++ b/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt @@ -126,7 +126,7 @@ class TitleScreen(batch: FlippingSpriteBatch) : IngameInstance(batch) { init { warning32bitJavaIcon.flip(false, false) - gameUpdateGovernor = LimitUpdateRate.also { it.reset() } + gameUpdateGovernor = ConsistentUpdateRate.also { it.reset() } } private fun loadThingsWhileIntroIsVisible() { @@ -139,10 +139,12 @@ class TitleScreen(batch: FlippingSpriteBatch) : IngameInstance(batch) { //ReadWorld.readWorldAndSetNewWorld(Terrarum.ingame!! as TerrarumIngame, reader) val world = ReadSimpleWorld(reader, file) demoWorld = world + demoWorld.worldTime.timeDelta = 0//60 printdbg(this, "Demo world loaded") } catch (e: IOException) { demoWorld = GameWorld(LandUtil.CHUNK_W, LandUtil.CHUNK_H, 0L, 0L) + demoWorld.worldTime.timeDelta = 60 printdbg(this, "Demo world not found, using empty world") } @@ -178,8 +180,6 @@ class TitleScreen(batch: FlippingSpriteBatch) : IngameInstance(batch) { cameraPlayer = CameraPlayer(demoWorld, cameraAI) - demoWorld.worldTime.timeDelta = 0//60 - IngameRenderer.setRenderedWorld(demoWorld) diff --git a/src/net/torvald/terrarum/savegame/VDUtil.kt b/src/net/torvald/terrarum/savegame/VDUtil.kt index cd26ad42b..8ef4296b4 100644 --- a/src/net/torvald/terrarum/savegame/VDUtil.kt +++ b/src/net/torvald/terrarum/savegame/VDUtil.kt @@ -8,6 +8,7 @@ import java.util.* import java.util.logging.Level import java.util.zip.GZIPInputStream import java.util.zip.GZIPOutputStream +import kotlin.collections.HashMap import kotlin.experimental.and /** @@ -71,11 +72,14 @@ object VDUtil { //println("[VDUtil] currentUnixtime = $currentUnixtime") + val entryOffsetInfoForDebug = HashMap() + var entryOffset = VirtualDisk.HEADER_SIZE // not footer, entries while (entryOffset < inbytes.size) { //println("[VDUtil] entryOffset = $entryOffset") // read and prepare all the shits + val entryOffsetStart = entryOffset val entryID = inbytes.sliceArray64(entryOffset..entryOffset + 7).toLongBig() val entryParentID = inbytes.sliceArray64(entryOffset + 8..entryOffset + 15).toLongBig() val entryTypeFlag = inbytes[entryOffset + 16] @@ -187,11 +191,15 @@ object VDUtil { } // add entry to disk + if (vdisk.entries[entryID] != null) { + println("[savegame.VDUtil] Overwriting existing entry ${entryID.toHex()} to new one; offset: ${entryOffsetInfoForDebug[entryID]} -> $entryOffsetStart; raw type flag: $entryTypeFlag)") + } vdisk.entries[entryID] = diskEntry + entryOffsetInfoForDebug[entryID] = entryOffsetStart } else { if (DEBUG_PRINT_READ) { - println("[savegame.VDUtil] Discarding entry ${entryID.toHex()} (raw type flag: $entryTypeFlag)") + println("[savegame.VDUtil] Discarding entry ${entryID.toHex()} at offset $entryOffsetStart (raw type flag: $entryTypeFlag)") } } }