diff --git a/src/net/torvald/terrarum/TitleScreen.kt b/src/net/torvald/terrarum/TitleScreen.kt index 52424fb0c..2a721f50e 100644 --- a/src/net/torvald/terrarum/TitleScreen.kt +++ b/src/net/torvald/terrarum/TitleScreen.kt @@ -166,7 +166,7 @@ class TitleScreen(batch: SpriteBatch) : IngameInstance(batch) { cameraPlayer = CameraPlayer(demoWorld, cameraAI) - demoWorld.worldTime.timeDelta = 0// 100 + demoWorld.worldTime.timeDelta = 0//60 IngameRenderer.setRenderedWorld(demoWorld) diff --git a/src/net/torvald/terrarum/console/Echo.kt b/src/net/torvald/terrarum/console/Echo.kt index b07546e35..b64c77a04 100644 --- a/src/net/torvald/terrarum/console/Echo.kt +++ b/src/net/torvald/terrarum/console/Echo.kt @@ -1,6 +1,8 @@ package net.torvald.terrarum.console import net.torvald.terrarum.* +import net.torvald.terrarum.App.csi0 +import net.torvald.terrarum.App.csiG import net.torvald.terrarum.ui.ConsoleWindow /** @@ -16,15 +18,15 @@ internal object Echo : ConsoleCommand { val sb = StringBuilder() for (ch in single_line) { if (ch == '\n') { - (Terrarum.ingame!!.consoleHandler as ConsoleWindow).sendMessage(sb.toString()) - println(sb.toString()) + Terrarum.ingame!!.consoleHandler.sendMessage(sb.toString()) + println("[Echo] $csiG$sb$csi0") sb.delete(0, sb.length - 1) } else sb.append(ch) } - (Terrarum.ingame!!.consoleHandler as ConsoleWindow).sendMessage(sb.toString()) - println(sb.toString()) + Terrarum.ingame!!.consoleHandler.sendMessage(sb.toString()) + println("[Echo] $csiG$sb$csi0") } operator fun invoke(args: Array) = execute(args) diff --git a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt index fd7f355e4..cd20f9049 100644 --- a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt +++ b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt @@ -744,7 +744,7 @@ object IngameRenderer : Disposable { fboRGBexport.dispose() } catch (e: UninitializedPropertyAccessException) {} - catch (e: Throwable) { e.printStackTrace() } + catch (e: Throwable) { e.printStackTrace(System.out) } } private fun worldCamToRenderPos(): Pair { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt index 40df2ab9b..f1f02d06c 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryEscMenu.kt @@ -84,11 +84,14 @@ class UIInventoryEscMenu(val full: UIInventoryFull) : UICanvas() { 0 -> { screen = 3; gameMenuButtons.deselect() full.handler.lockToggle() + full.lockTransition() // save the game WriteSavegame(Terrarum.ingame!!.savegameArchive, File(App.defaultSaveDir, "${App.getTIME_T()}"), Terrarum.ingame!! as TerrarumIngame) { // callback: + System.gc() screen = 0 full.handler.unlockToggle() + full.unlockTransition() } } 4 -> { diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt index b8f368d80..fe99a3108 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt @@ -138,6 +138,15 @@ class UIInventoryFull( "$gamepadLabelStart ${Lang["GAME_ACTION_CLOSE"]}$SP" + "$gamepadLabelLT ${Lang["GAME_INVENTORY"]}" + private var panelTransitionLocked = false + + fun lockTransition() { + panelTransitionLocked = true + } + fun unlockTransition() { + panelTransitionLocked = false + } + val catBar = UIItemInventoryCatBar( this, (App.scr.width - catBarWidth) / 2, @@ -145,7 +154,7 @@ class UIInventoryFull( internalWidth, catBarWidth, true, - { i -> requestTransition(i) } + { i -> if (!panelTransitionLocked) requestTransition(i) } ) @@ -167,9 +176,11 @@ class UIInventoryFull( addUIitem(catBar) addUIitem(transitionPanel) - catBar.selectionChangeListener = { old, new -> - rebuildList() - transitionalItemCells.resetStatusAsCatChanges(old, new) + catBar.selectionChangeListener = { old, new -> + if (!panelTransitionLocked) { + rebuildList() + transitionalItemCells.resetStatusAsCatChanges(old, new) + } } @@ -190,7 +201,7 @@ class UIInventoryFull( rebuildList() } - catBar.update(delta) + if (!panelTransitionLocked) catBar.update(delta) transitionPanel.update(delta) } diff --git a/src/net/torvald/terrarum/serialise/GameSavingThread.kt b/src/net/torvald/terrarum/serialise/GameSavingThread.kt index cf23c3568..5c8647807 100644 --- a/src/net/torvald/terrarum/serialise/GameSavingThread.kt +++ b/src/net/torvald/terrarum/serialise/GameSavingThread.kt @@ -131,10 +131,11 @@ class GameSavingThread(val disk: VirtualDisk, val outFile: File, val ingame: Ter } } - Echo("Writing actors...") // Write Actors // - actorsList.forEach { + actorsList.forEachIndexed { count, it -> + Echo("Writing actors... ${count+1}/${actorsList.size}") + val actorContent = EntryFile(WriteActor.encodeToByteArray64(it)) val actor = DiskEntry(it.referenceID.toLong(), 0, creation_t, time_t, actorContent) addFile(disk, actor) @@ -143,6 +144,8 @@ class GameSavingThread(val disk: VirtualDisk, val outFile: File, val ingame: Ter } + Echo("Writing file to disk...") + disk.entries[0]!!.modificationDate = time_t // entry zero MUST NOT be used to get lastPlayDate, but we'll update it anyway // use entry -1 for that purpose! diff --git a/src/net/torvald/terrarum/ui/UIItemTextArea.kt b/src/net/torvald/terrarum/ui/UIItemTextArea.kt index 946fda8db..24ea7ad61 100644 --- a/src/net/torvald/terrarum/ui/UIItemTextArea.kt +++ b/src/net/torvald/terrarum/ui/UIItemTextArea.kt @@ -47,7 +47,7 @@ class UIItemTextArea( } override fun scrolled(amountX: Float, amountY: Float): Boolean { - scrollPos += Math.round(amountX * 3) + scrollPos += Math.round(amountY * 5) if (scrollPos > entireText.size - lineCount) scrollPos = entireText.size - lineCount if (scrollPos < 0) scrollPos = 0