diff --git a/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt b/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt index 2c9041b9c..207a3a45f 100644 --- a/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt +++ b/ModuleComputers/src/net/torvald/terrarum/modulecomputers/gameactors/FixtureHomeComputer.kt @@ -1,26 +1,17 @@ package net.torvald.terrarum.modulecomputers.gameactors -import com.badlogic.gdx.Gdx -import com.badlogic.gdx.Input -import com.badlogic.gdx.graphics.* -import com.badlogic.gdx.graphics.g2d.SpriteBatch -import com.badlogic.gdx.graphics.glutils.FrameBuffer import com.badlogic.gdx.utils.Disposable -import kotlin.coroutines.* import net.torvald.terrarum.* import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.gameactors.AVKey -import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.modulebasegame.gameactors.BlockBox import net.torvald.terrarum.modulebasegame.gameactors.FixtureBase import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory -import net.torvald.terrarum.ui.Toolkit -import net.torvald.terrarum.ui.UICanvas +import net.torvald.terrarum.modulecomputers.ui.UIHomeComputer import net.torvald.tsvm.* import net.torvald.tsvm.peripheral.AdapterConfig import net.torvald.tsvm.peripheral.GraphicsAdapter import net.torvald.tsvm.peripheral.VMProgramRom -import net.torvald.unicode.* /** * Created by minjaesong on 2021-12-04. @@ -131,77 +122,3 @@ class FixtureHomeComputer : FixtureBase { } } -internal class UIHomeComputer : UICanvas( - toggleKeyLiteral = Input.Keys.ESCAPE, // FIXME why do I have specify ESC for it to function? ESC should be work as the default key - toggleButtonLiteral = App.getConfigInt("control_gamepad_start"), -) { - override var width = 640 - override var height = 480 - override var openCloseTime = 0f - - private val drawOffX = (width - 560).div(2).toFloat() - private val drawOffY = (height - 448).div(2).toFloat() - - private var batch: FlippingSpriteBatch - private var camera: OrthographicCamera - - internal lateinit var vm: VM - internal lateinit var fixture: FixtureHomeComputer - - init { - batch = FlippingSpriteBatch() - camera = OrthographicCamera(width.toFloat(), height.toFloat()) - //val m = Matrix4() - //m.setToOrtho2D(0f, 0f, width.toFloat(), height.toFloat()) - batch.projectionMatrix = camera.combined - } - - private val fbo = FrameBuffer(Pixmap.Format.RGBA8888, width, height, false) - - private val controlHelp = - "${getKeycapPC(App.getConfigInt("control_key_inventory"))} ${Lang["GAME_ACTION_CLOSE"]}\u3000 " + - "$KEYCAP_CTRL$KEYCAP_SHIFT$KEYCAP_T$KEYCAP_R Terminate\u3000" + - "$KEYCAP_CTRL$KEYCAP_SHIFT$KEYCAP_R$KEYCAP_S Reset\u3000" + - "$KEYCAP_CTRL$KEYCAP_SHIFT$KEYCAP_R$KEYCAP_Q SysRq" - - override fun updateUI(delta: Float) { - } - - override fun renderUI(otherBatch: SpriteBatch, otherCamera: Camera) { - otherBatch.end() - - fbo.inAction(camera, batch) { - Gdx.gl.glClearColor(0f,0f,0f,1f) - Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) // to hide the crap might be there - - (vm.peripheralTable[1].peripheral as? GraphicsAdapter)?.let { gpu -> - val clearCol = gpu.getBackgroundColour() - Gdx.gl.glClearColor(clearCol.r, clearCol.g, clearCol.b, clearCol.a) - Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) - - gpu.render(Gdx.graphics.deltaTime, batch, drawOffX, drawOffY, true, fbo) // gpu.render will internally end() the fbo then begin() again before using the batch I've fed in - } - } - - otherBatch.begin() - otherBatch.shader = null - blendNormalStraightAlpha(otherBatch) - otherBatch.color = Color.WHITE - otherBatch.draw(fbo.colorBufferTexture, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat()) - otherBatch.color = Toolkit.Theme.COL_INACTIVE - Toolkit.drawBoxBorder(otherBatch, posX - 1, posY - 1, width + 2, height + 2) - - App.fontGame.draw(otherBatch, controlHelp, posX, posY + height + 4) - } - - override fun doOpening(delta: Float) { - super.doOpening(delta) - fixture.startVM() - } - - - override fun dispose() { - fbo.dispose() - } - -} \ No newline at end of file diff --git a/ModuleComputers/src/net/torvald/terrarum/modulecomputers/ui/UIHomeComputer.kt b/ModuleComputers/src/net/torvald/terrarum/modulecomputers/ui/UIHomeComputer.kt new file mode 100644 index 000000000..f88620cec --- /dev/null +++ b/ModuleComputers/src/net/torvald/terrarum/modulecomputers/ui/UIHomeComputer.kt @@ -0,0 +1,93 @@ +package net.torvald.terrarum.modulecomputers.ui + +import com.badlogic.gdx.Gdx +import com.badlogic.gdx.Input +import com.badlogic.gdx.graphics.* +import com.badlogic.gdx.graphics.g2d.SpriteBatch +import com.badlogic.gdx.graphics.glutils.FrameBuffer +import net.torvald.terrarum.App +import net.torvald.terrarum.FlippingSpriteBatch +import net.torvald.terrarum.blendNormalStraightAlpha +import net.torvald.terrarum.inAction +import net.torvald.terrarum.langpack.Lang +import net.torvald.terrarum.modulecomputers.gameactors.FixtureHomeComputer +import net.torvald.terrarum.ui.Toolkit +import net.torvald.terrarum.ui.UICanvas +import net.torvald.tsvm.VM +import net.torvald.tsvm.peripheral.GraphicsAdapter +import net.torvald.unicode.* + +internal class UIHomeComputer : UICanvas( + toggleKeyLiteral = Input.Keys.ESCAPE, // FIXME why do I have specify ESC for it to function? ESC should be work as the default key + toggleButtonLiteral = App.getConfigInt("control_gamepad_start"), +) { + override var width = 640 + override var height = 480 + override var openCloseTime = 0f + + private val drawOffX = (width - 560).div(2).toFloat() + private val drawOffY = (height - 448).div(2).toFloat() + + private var batch: FlippingSpriteBatch + private var camera: OrthographicCamera + + internal lateinit var vm: VM + internal lateinit var fixture: FixtureHomeComputer + + init { + batch = FlippingSpriteBatch() + camera = OrthographicCamera(width.toFloat(), height.toFloat()) + //val m = Matrix4() + //m.setToOrtho2D(0f, 0f, width.toFloat(), height.toFloat()) + batch.projectionMatrix = camera.combined + } + + private val fbo = FrameBuffer(Pixmap.Format.RGBA8888, width, height, false) + + private val controlHelp = + "${getKeycapPC(App.getConfigInt("control_key_inventory"))} ${Lang["GAME_ACTION_CLOSE"]}\u3000 " + + "$KEYCAP_CTRL$KEYCAP_SHIFT$KEYCAP_T$KEYCAP_R Terminate\u3000" + + "$KEYCAP_CTRL$KEYCAP_SHIFT$KEYCAP_R$KEYCAP_S Reset\u3000" + + "$KEYCAP_CTRL$KEYCAP_SHIFT$KEYCAP_R$KEYCAP_Q SysRq" + + override fun updateUI(delta: Float) { + } + + override fun renderUI(otherBatch: SpriteBatch, otherCamera: Camera) { + otherBatch.end() + + fbo.inAction(camera, batch) { + Gdx.gl.glClearColor(0f,0f,0f,1f) + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) // to hide the crap might be there + + (vm.peripheralTable[1].peripheral as? GraphicsAdapter)?.let { gpu -> + val clearCol = gpu.getBackgroundColour() + Gdx.gl.glClearColor(clearCol.r, clearCol.g, clearCol.b, clearCol.a) + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) + + gpu.render(Gdx.graphics.deltaTime, batch, drawOffX, drawOffY, true, fbo) // gpu.render will internally end() the fbo then begin() again before using the batch I've fed in + } + } + + otherBatch.begin() + otherBatch.shader = null + blendNormalStraightAlpha(otherBatch) + otherBatch.color = Color.WHITE + otherBatch.draw(fbo.colorBufferTexture, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat()) + otherBatch.color = Toolkit.Theme.COL_INACTIVE + Toolkit.drawBoxBorder(otherBatch, posX - 1, posY - 1, width + 2, height + 2) + + App.fontGame.draw(otherBatch, controlHelp, posX, posY + height + 4) + } + + override fun doOpening(delta: Float) { + super.doOpening(delta) + fixture.startVM() + } + + + override fun dispose() { + fbo.dispose() + } + +} \ No newline at end of file diff --git a/assets/mods/basegame/locales/en/calendar.json b/assets/mods/basegame/locales/en/calendar.json index 69a0fb6b8..f193d80bf 100644 --- a/assets/mods/basegame/locales/en/calendar.json +++ b/assets/mods/basegame/locales/en/calendar.json @@ -10,6 +10,7 @@ "CONTEXT_CALENDAR_SEASON_SUMM": "Summ", "CONTEXT_CALENDAR_SEASON_AUTM": "Autm", "CONTEXT_CALENDAR_SEASON_WINT": "Wint", + "CONTEXT_CALENDAR_DATE_FORMAT_Y": "Year {0}", "CONTEXT_CALENDAR_DATE_FORMAT_YMD": "Year {0} {1} {2}", "CONTEXT_CALENDAR_DATE_FORMAT_YMD_DDD": "Year {0} {1} {2} {3}", diff --git a/assets/mods/basegame/locales/koKR/calendar.json b/assets/mods/basegame/locales/koKR/calendar.json index d32a4bac3..47488e51d 100644 --- a/assets/mods/basegame/locales/koKR/calendar.json +++ b/assets/mods/basegame/locales/koKR/calendar.json @@ -10,6 +10,7 @@ "CONTEXT_CALENDAR_SEASON_SUMM": "여름", "CONTEXT_CALENDAR_SEASON_AUTM": "가을", "CONTEXT_CALENDAR_SEASON_WINT": "겨울", + "CONTEXT_CALENDAR_DATE_FORMAT_Y": "{0}년", "CONTEXT_CALENDAR_DATE_FORMAT_YMD": "{0}년 {1} {2}일", "CONTEXT_CALENDAR_DATE_FORMAT_YMD_DDD": "{0}년 {1} {2}일 {3}" } \ No newline at end of file diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIBasicInfo.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIBasicInfo.kt index 514de6334..f3ebafd69 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIBasicInfo.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIBasicInfo.kt @@ -17,6 +17,10 @@ import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack */ class UIBasicInfo() : UICanvas() { + init { + handler.allowESCtoClose = false + } + val player: ActorHumanoid? get() = Terrarum.ingame?.actorNowPlaying diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UICheatDetected.kt b/src/net/torvald/terrarum/modulebasegame/ui/UICheatDetected.kt index 0ad205c4c..7c8bba839 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UICheatDetected.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UICheatDetected.kt @@ -14,6 +14,10 @@ import net.torvald.terrarum.ui.UICanvas */ class UICheatDetected : UICanvas() { + init { + handler.allowESCtoClose = false + } + override var width: Int get() = App.scr.width set(value) { throw UnsupportedOperationException() } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt index b857b9c0a..878a236a1 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIInventoryFull.kt @@ -157,7 +157,6 @@ class UIInventoryFull( //val INVENTORY_CELLS_OFFSET_Y: Int = 107 + (AppLoader.terrarumAppConfig.screenH - internalHeight) / 2 init { - handler.allowESCtoClose = true } private val SP = "\u3000 " diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt index 1900a3cb4..92dc6b4a3 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotBar.kt @@ -18,6 +18,11 @@ import kotlin.math.roundToInt * Created by minjaesong on 2016-07-20. */ class UIQuickslotBar : UICanvas() { + + init { + handler.allowESCtoClose = false + } + private val cellSize = ItemSlotImageFactory.slotImage.tileW // 38 private val gutter = 10 - 6 // do -6 to get a gutter size of not-enlarged cells diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotPie.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotPie.kt index 4b3718566..a2c9d95a0 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotPie.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIQuickslotPie.kt @@ -21,6 +21,11 @@ import kotlin.math.roundToInt * Created by minjaesong on 2016-07-20. */ class UIQuickslotPie : UICanvas() { + + init { + handler.allowESCtoClose = false + } + private val cellSize = ItemSlotImageFactory.slotImage.tileW private val slotCount = UIQuickslotBar.SLOT_COUNT diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIScreenZoom.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIScreenZoom.kt index 38f0e1837..20bcfaaa7 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIScreenZoom.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIScreenZoom.kt @@ -21,6 +21,10 @@ class UIScreenZoom : UICanvas( App.getConfigInt("control_key_zoom") ) { + init { + handler.allowESCtoClose = false + } + val zoomText = "${getKeycapPC(handler.toggleKeyLiteral!!)} $EMDASH Zoom Out" override var width = App.fontGame.getWidth(zoomText) diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt b/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt index de7dae4b7..4711e32f2 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UITooltip.kt @@ -14,6 +14,10 @@ import net.torvald.terrarum.ui.UICanvas */ class UITooltip : UICanvas() { + init { + handler.allowESCtoClose = false + } + override var openCloseTime: Second = 0f private val tooltipBackCol = Color.WHITE diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIVitalMetre.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIVitalMetre.kt index ea76ab0c7..7185d8396 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIVitalMetre.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIVitalMetre.kt @@ -21,6 +21,10 @@ class UIVitalMetre( val order: Int ) : UICanvas() { + init { + handler.allowESCtoClose = false + } + init { // semitransparent color?.a = 0.91f diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt index 2ffdf355b..c20c8e0c3 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIWallCalendar.kt @@ -1,6 +1,7 @@ package net.torvald.terrarum.modulebasegame.ui import com.badlogic.gdx.graphics.Camera +import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.App import net.torvald.terrarum.INGAME @@ -19,7 +20,8 @@ class UIWallCalendar : UICanvas( toggleKeyLiteral = App.getConfigInt("control_key_inventory"), toggleButtonLiteral = App.getConfigInt("control_gamepad_start"), ) { - private val cellWidth = 96 + private val yearCellWidth = 200 + private val cellWidth = 80 private val cellHeight = 24 override var width: Int = Toolkit.drawWidth @@ -37,43 +39,96 @@ class UIWallCalendar : UICanvas( else "${App.gamepadLabelStart} ${Lang["GAME_ACTION_CLOSE"]}" + + private var todayCell = -1 + + private val cellBackCols = listOf( + Color(0x3f1e22_C8), // OKLCh 14, 5, 18 + Color(0x022f3a_C8), // OKLCh 218, 5, 18 + Color(0x2d2b09_C8), // OKLCh 105, 5, 18 + Color(0x252934_C8) // OKLCh 265, 2, 18 + ) + private val seasonMarkers = listOf( + 7 to "CONTEXT_CALENDAR_SEASON_SPRING", + 39 to "CONTEXT_CALENDAR_SEASON_SUMMER", + 71 to "CONTEXT_CALENDAR_SEASON_AUTUMN", + 103 to "CONTEXT_CALENDAR_SEASON_WINTER" + ) + + private var mouseOverCell = -1 + override fun updateUI(delta: Float) { + mouseOverCell = if (relativeMouseX in drawStartX until drawStartX + 8 * (cellWidth + 1) && + relativeMouseY in cellsStartY - 1 until cellsStartY - 1 + 17 * (cellHeight + 3)) { + val x = (relativeMouseX - drawStartX) / (cellWidth + 1) + val y = (relativeMouseY - cellsStartY + 1) / (cellHeight + 3) + + // disable highlighting on invalid date (verddag and not winter 30) + if (x == 7 && y < 16) -1 + else y * 8 + x + } + else -1 } - override fun renderUI(batch: SpriteBatch, camera: Camera) { UIInventoryFull.drawBackground(batch, 1f) + val thisYear = INGAME.world.worldTime.years val today = INGAME.world.worldTime.ordinalDay + 1 val todayOfWeek = INGAME.world.worldTime.dayOfWeek // cell background - batch.color = UIInventoryFull.CELL_COL + batch.color = Toolkit.Theme.COL_CELL_FILL + Toolkit.fillArea(batch, (width - yearCellWidth) / 2, y - 34, yearCellWidth, 24) for (week in 0..7) { Toolkit.fillArea(batch, drawStartX + (cellWidth + 1) * week + 1, y, cellWidth - 2, 24) } for (cellNum in 0 until 17 * 8) { + batch.color = when (cellNum) { + in 0 until 34 -> cellBackCols[0] + in 34 until 68 -> cellBackCols[1] + in 68 until 102 -> cellBackCols[2] + else -> cellBackCols[3] + } + Toolkit.fillArea(batch, drawStartX + (cellWidth + 1) * (cellNum % 8) + 1, cellsStartY + (cellHeight + 3) * (cellNum / 8), cellWidth - 2, cellHeight) } // cell border batch.color = Toolkit.Theme.COL_INACTIVE + Toolkit.drawBoxBorder(batch, (width - yearCellWidth) / 2 - 1, y - 35, yearCellWidth + 2, 26) Toolkit.drawBoxBorder(batch, drawStartX, y - 1, 8 * (cellWidth + 1) - 1, 26) for (week in 0..7) { Toolkit.drawBoxBorder(batch, drawStartX + (cellWidth + 1) * week, y - 1, cellWidth, 26) } + // highlight a day name of mouse-up + batch.color = Toolkit.Theme.COL_MOUSE_UP + if (mouseOverCell >= 0) Toolkit.drawBoxBorder(batch, drawStartX + (cellWidth + 1) * (mouseOverCell % 8), y - 1, cellWidth, 26) + // highlight today's week name + batch.color = Toolkit.Theme.COL_SELECTED + Toolkit.drawBoxBorder(batch, drawStartX + (cellWidth + 1) * todayOfWeek, y - 1, cellWidth, 26) + + // draw days grid + batch.color = Toolkit.Theme.COL_INACTIVE Toolkit.drawBoxBorder(batch, drawStartX, cellsStartY - 1, 8 * (cellWidth + 1) - 1, 17 * (cellHeight + 3) - 1) for (cellNum in 0 until 17 * 8) { Toolkit.drawBoxBorder(batch, drawStartX + (cellWidth + 1) * (cellNum % 8), cellsStartY + (cellHeight + 3) * (cellNum / 8) - 1, cellWidth, cellHeight + 2) } + // highlight a day of mouse-up + batch.color = Toolkit.Theme.COL_MOUSE_UP + if (mouseOverCell >= 0) Toolkit.drawBoxBorder(batch, drawStartX + (cellWidth + 1) * (mouseOverCell % 8), cellsStartY + (cellHeight + 3) * (mouseOverCell / 8) - 1, cellWidth, cellHeight + 2) // cell texts + batch.color = Toolkit.Theme.COL_LIST_DEFAULT + Toolkit.drawTextCentered(batch, App.fontGame, Lang.getAndUseTemplate("CONTEXT_CALENDAR_DATE_FORMAT_Y", false, thisYear), yearCellWidth, (width - yearCellWidth) / 2, y - 34) for (week in 0..7) { - batch.color = if (week == todayOfWeek) Toolkit.Theme.COL_MOUSE_UP else Toolkit.Theme.COL_LIST_DEFAULT + // highlight this week and the mouse-up + batch.color = if (week == todayOfWeek) Toolkit.Theme.COL_SELECTED else if (week == mouseOverCell % 8) Toolkit.Theme.COL_MOUSE_UP else Toolkit.Theme.COL_LIST_DEFAULT + val t = WorldTime.getDayName(week) val tlen = App.fontGame.getWidth(t) App.fontGame.draw(batch, t, drawStartX + (cellWidth + 1) * week + (cellWidth - tlen) / 2, y) @@ -83,13 +138,31 @@ class UIWallCalendar : UICanvas( val day = if (cellNum == 17*8-1) 120 else if (cellNum % 8 == 7) 0 else dayAkku if (day > 0) { - batch.color = if (day == today) Toolkit.Theme.COL_SELECTED else Toolkit.Theme.COL_LIST_DEFAULT + // highlight today and the mouse-up + batch.color = if (day == today) Toolkit.Theme.COL_SELECTED else if (cellNum == mouseOverCell) Toolkit.Theme.COL_MOUSE_UP else Toolkit.Theme.COL_LIST_DEFAULT + val t = "${(day % MONTH_LENGTH).let { if (it == 0) MONTH_LENGTH else it }}".padStart(2, '\u2007') - App.fontGame.draw(batch, t, drawStartX + (cellWidth + 1) * (cellNum % 8) + 1 + cellWidth - 23, cellsStartY + (cellHeight + 3) * (cellNum / 8)) + App.fontGame.draw(batch, t, drawStartX + (cellWidth + 1) * (cellNum % 8) - 20 + cellWidth - 4, cellsStartY + (cellHeight + 3) * (cellNum / 8)) + + if (day == today) todayCell = cellNum + dayAkku += 1 } } + batch.color = Toolkit.Theme.COL_INACTIVE + seasonMarkers.forEach { (cellNum, key) -> + App.fontGame.draw(batch, Lang[key], drawStartX + (cellWidth + 1) * (cellNum % 8) + 1 + 4, cellsStartY + (cellHeight + 3) * (cellNum / 8)) + } + // highlight today cell + if (todayCell >= 0) { + batch.color = Toolkit.Theme.COL_SELECTED + Toolkit.drawBoxBorder(batch, drawStartX + (cellWidth + 1) * (todayCell % 8), cellsStartY + (cellHeight + 3) * (todayCell / 8) - 1, cellWidth, cellHeight + 2) + } + + // control hints + batch.color = Color.WHITE + App.fontGame.draw(batch, controlHelp, drawStartX + 2, cellsStartY+ 17 * (cellHeight + 3) + 6) } override fun doOpening(delta: Float) { diff --git a/src/net/torvald/terrarum/ui/UIHandler.kt b/src/net/torvald/terrarum/ui/UIHandler.kt index ef9fa9168..6e12f704d 100644 --- a/src/net/torvald/terrarum/ui/UIHandler.kt +++ b/src/net/torvald/terrarum/ui/UIHandler.kt @@ -30,7 +30,7 @@ class UIHandler(//var UI: UICanvas, // UI positions itself? (you must g.flush() yourself after the g.translate(Int, Int)) var customPositioning: Boolean = false, // mainly used by vital meter var doNotWarnConstant: Boolean = false, - internal var allowESCtoClose: Boolean = false, + internal var allowESCtoClose: Boolean = true, var uiTogglerFunctionDefault: ((UIHandler) -> Unit)? = null ): Disposable { @@ -214,7 +214,7 @@ void main() { } // ESC is a master key for closing - if (allowESCtoClose && Gdx.input.isKeyJustPressed(Input.Keys.ESCAPE) && isOpened) { + if (!alwaysVisible && allowESCtoClose && Gdx.input.isKeyJustPressed(Input.Keys.ESCAPE) && isOpened) { setAsClose() } }