diff --git a/src/net/torvald/terrarum/IngameInstance.kt b/src/net/torvald/terrarum/IngameInstance.kt index 359aadfa9..29b5a3fd9 100644 --- a/src/net/torvald/terrarum/IngameInstance.kt +++ b/src/net/torvald/terrarum/IngameInstance.kt @@ -1,8 +1,8 @@ package net.torvald.terrarum +import com.badlogic.gdx.Gdx import com.badlogic.gdx.Input import com.badlogic.gdx.utils.Disposable -import com.badlogic.gdx.utils.GdxRuntimeException import net.torvald.terrarum.App.printdbg import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.gameactors.Actor @@ -187,6 +187,7 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo } override fun render(updateRate: Float) { + } override fun pause() { diff --git a/src/net/torvald/terrarum/NoModuleDefaultTitlescreen.kt b/src/net/torvald/terrarum/NoModuleDefaultTitlescreen.kt index 083c0fa23..4e42bf805 100644 --- a/src/net/torvald/terrarum/NoModuleDefaultTitlescreen.kt +++ b/src/net/torvald/terrarum/NoModuleDefaultTitlescreen.kt @@ -58,6 +58,8 @@ class NoModuleDefaultTitlescreen(batch: FlippingSpriteBatch) : IngameInstance(ba } override fun render(updateRate: Float) { + super.render(updateRate) + gdxClearAndEnableBlend(0f, 0f, 0f, 0f) if (!init) { diff --git a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt index a3026a039..d4c54265f 100644 --- a/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt +++ b/src/net/torvald/terrarum/modulebasegame/BuildingMaker.kt @@ -298,7 +298,14 @@ class BuildingMaker(batch: FlippingSpriteBatch) : IngameInstance(batch) { } + private var mousePrimaryClickLatched = false + var mousePrimaryJustDown = false; private set + override fun render(updateRate: Float) { + super.render(updateRate) + + + Gdx.graphics.setTitle(TerrarumIngame.getCanonicalTitle()) @@ -316,6 +323,11 @@ class BuildingMaker(batch: FlippingSpriteBatch) : IngameInstance(batch) { ) ) + + + if (!Gdx.input.isButtonPressed(App.getConfigInt("config_mouseprimary"))) { + mousePrimaryClickLatched = false + } } private var mouseOnUI = false @@ -428,7 +440,13 @@ class BuildingMaker(batch: FlippingSpriteBatch) : IngameInstance(batch) { it.title = "Export" it.labelDo = "Export" it.text = listOf("WH: $w\u00D7$h", "Name of the POI:") - it.confirmCallback = callback + it.confirmCallback = { s -> + callback(s) + mousePrimaryClickLatched = true + } + it.cancelCallback = { + mousePrimaryClickLatched = true + } it.setPosition( 240, 32 @@ -443,7 +461,13 @@ class BuildingMaker(batch: FlippingSpriteBatch) : IngameInstance(batch) { it.title = "Import" it.labelDo = "Import" it.text = listOf("Name of the POI:") - it.confirmCallback = callback + it.confirmCallback = { s -> + callback(s) + mousePrimaryClickLatched = true + } + it.cancelCallback = { + mousePrimaryClickLatched = true + } it.setPosition( 240, 32 @@ -456,7 +480,6 @@ class BuildingMaker(batch: FlippingSpriteBatch) : IngameInstance(batch) { private fun makePenWork(x: Int, y: Int) { val world = gameWorld val palSelection = uiPaletteSelector.fore - val mouseJustDown = Terrarum.mouseJustDown when (currentPenMode) { // test paint terrain layer @@ -485,7 +508,10 @@ class BuildingMaker(batch: FlippingSpriteBatch) : IngameInstance(batch) { removeBlockMarker(x, y) } PENMODE_IMPORT -> { - if (mouseJustDown) importPoi(x, y) + if (!mousePrimaryClickLatched) { + importPoi(x, y) + mousePrimaryClickLatched = true + } } } } diff --git a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt index d5bcf6afd..484d29366 100644 --- a/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumIngame.kt @@ -732,7 +732,7 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) { internal var autosaveTimer = 0f - override fun render(`_`: Float) { + override fun render(updateRate: Float) { // Q&D solution for LoadScreen and Ingame, where while LoadScreen is working, Ingame now no longer has GL Context // there's still things to load which needs GL context to be present if (!gameFullyLoaded) { @@ -757,6 +757,8 @@ open class TerrarumIngame(batch: FlippingSpriteBatch) : IngameInstance(batch) { gameFullyLoaded = true } + super.render(updateRate) + ingameController.update() diff --git a/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt b/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt index 1d5bf269f..b9c914568 100644 --- a/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt +++ b/src/net/torvald/terrarum/modulebasegame/TitleScreen.kt @@ -302,6 +302,7 @@ class TitleScreen(batch: FlippingSpriteBatch) : IngameInstance(batch) { private var introUncoverDeltaCounter = 0f override fun render(updateRate: Float) { + super.render(updateRate) // async update and render gameUpdateGovernor.update(Gdx.graphics.deltaTime, App.UPDATE_RATE, updateScreen, renderScreen) } diff --git a/src/net/torvald/terrarum/modulebasegame/UIBuildingMakerGetFilename.kt b/src/net/torvald/terrarum/modulebasegame/UIBuildingMakerGetFilename.kt index bb668559c..595461ddd 100644 --- a/src/net/torvald/terrarum/modulebasegame/UIBuildingMakerGetFilename.kt +++ b/src/net/torvald/terrarum/modulebasegame/UIBuildingMakerGetFilename.kt @@ -12,6 +12,7 @@ import kotlin.math.roundToInt class UIBuildingMakerGetFilename : UICanvas() { var confirmCallback: (String) -> Unit = {} + var cancelCallback: () -> Unit = {} var title = "Export" var text = listOf("") @@ -63,6 +64,7 @@ class UIBuildingMakerGetFilename : UICanvas() { ).also { it.clickOnceListener = { _, _ -> reset() + cancelCallback() this.setAsClose() } }