zooming properly with z key (with some async artefacts)

This commit is contained in:
minjaesong
2019-08-11 21:33:12 +09:00
parent 22916ebcec
commit 7077bf9fcf
4 changed files with 132 additions and 1 deletions

View File

@@ -0,0 +1,63 @@
package net.torvald.terrarum
import com.badlogic.gdx.Input
/**
* Created by minjaesong on 2019-08-11.
*/
private val keyToIcon = hashMapOf(
Input.Keys.NUM_0 to 0xE010.toChar(),
Input.Keys.NUM_1 to 0xE011.toChar(),
Input.Keys.NUM_2 to 0xE012.toChar(),
Input.Keys.NUM_3 to 0xE013.toChar(),
Input.Keys.NUM_4 to 0xE014.toChar(),
Input.Keys.NUM_5 to 0xE015.toChar(),
Input.Keys.NUM_6 to 0xE016.toChar(),
Input.Keys.NUM_7 to 0xE017.toChar(),
Input.Keys.NUM_8 to 0xE018.toChar(),
Input.Keys.NUM_9 to 0xE019.toChar(),
Input.Keys.A to 0xE021.toChar(),
Input.Keys.B to 0xE022.toChar(),
Input.Keys.C to 0xE023.toChar(),
Input.Keys.D to 0xE024.toChar(),
Input.Keys.E to 0xE025.toChar(),
Input.Keys.F to 0xE026.toChar(),
Input.Keys.G to 0xE027.toChar(),
Input.Keys.H to 0xE028.toChar(),
Input.Keys.I to 0xE029.toChar(),
Input.Keys.J to 0xE02A.toChar(),
Input.Keys.K to 0xE02B.toChar(),
Input.Keys.L to 0xE02C.toChar(),
Input.Keys.M to 0xE02D.toChar(),
Input.Keys.N to 0xE02E.toChar(),
Input.Keys.O to 0xE02E.toChar(),
Input.Keys.P to 0xE030.toChar(),
Input.Keys.Q to 0xE031.toChar(),
Input.Keys.R to 0xE032.toChar(),
Input.Keys.S to 0xE033.toChar(),
Input.Keys.T to 0xE034.toChar(),
Input.Keys.U to 0xE035.toChar(),
Input.Keys.V to 0xE036.toChar(),
Input.Keys.W to 0xE037.toChar(),
Input.Keys.X to 0xE038.toChar(),
Input.Keys.Y to 0xE039.toChar(),
Input.Keys.Z to 0xE03A.toChar()
)
fun keyToIcon(key: Int) = keyToIcon[key]!!
const val F1 = "${0xE090.toChar()}${0xE091.toChar()}"
const val F2 = "${0xE090.toChar()}${0xE092.toChar()}"
const val F3 = "${0xE090.toChar()}${0xE093.toChar()}"
const val F4 = "${0xE090.toChar()}${0xE094.toChar()}"
const val F5 = "${0xE090.toChar()}${0xE095.toChar()}"
const val F6 = "${0xE090.toChar()}${0xE096.toChar()}"
const val F7 = "${0xE090.toChar()}${0xE097.toChar()}"
const val F8 = "${0xE090.toChar()}${0xE098.toChar()}"
const val F9 = "${0xE090.toChar()}${0xE099.toChar()}"
const val F10 = "${0xE09D.toChar()}${0xE09A.toChar()}"
const val F11 = "${0xE09D.toChar()}${0xE09B.toChar()}"
const val F12 = "${0xE09D.toChar()}${0xE09C.toChar()}"

View File

@@ -21,7 +21,7 @@ object CommandDict {
"togglenoclip" to ToggleNoClip,
"nc" to ToggleNoClip,
"setlocale" to SetLocale,
"zoom" to Zoom,
//"zoom" to Zoom,
"teleport" to Teleport,
"tp" to Teleport,
"cat" to CatStdout,

View File

@@ -132,6 +132,7 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
private lateinit var uiBasicInfo: UICanvas
private lateinit var uiWatchTierOne: UICanvas
/** For in-world text overlays? e.g. cursor on the ore block and tooltip will say "Malachite" or something */
private lateinit var uiTooltip: UITooltip
lateinit var uiCheatMotherfuckerNootNoot: UICheatDetected
@@ -370,6 +371,7 @@ open class TerrarumIngame(batch: SpriteBatch) : IngameInstance(batch) {
uiQuickBar,
uiBasicInfo,
uiWatchTierOne,
UIScreenZoom(),
uiTooltip
// drawn last
)

View File

@@ -0,0 +1,66 @@
package net.torvald.terrarum.modulebasegame.ui
import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.EMDASH
import net.torvald.terrarum.AppLoader
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.keyToIcon
import net.torvald.terrarum.ui.Movement
import net.torvald.terrarum.ui.UICanvas
/**
* Created by minjaesong on 2019-08-11.
*/
class UIScreenZoom : UICanvas(
AppLoader.getConfigInt("keyzoom")
) {
val zoomText = "${keyToIcon(handler.toggleKeyLiteral!!)} $EMDASH Zoom Out"
override var width = AppLoader.fontGame.getWidth(zoomText)
override var height = AppLoader.fontGame.lineHeight.toInt()
override var openCloseTime = 0.3f
override val mouseUp = false
private val zoomMin = 1f
private val zoomMax = 2f
override fun updateUI(delta: Float) {
}
override fun renderUI(batch: SpriteBatch, camera: Camera) {
batch.color = handler.opacityColour
AppLoader.fontGame.draw(
batch, zoomText,
(AppLoader.screenW * AppLoader.TV_SAFE_GRAPHICS + 1).toInt().toFloat(),
(AppLoader.screenH - height - AppLoader.getTvSafeGraphicsHeight()).toFloat()
)
}
override fun dispose() {
}
override fun doOpening(delta: Float) {
Terrarum.ingame?.screenZoom = Movement.fastPullOut(handler.openCloseCounter / openCloseTime, zoomMin, zoomMax)
handler.opacity = Terrarum.ingame?.screenZoom!! - zoomMin
}
override fun doClosing(delta: Float) {
Terrarum.ingame?.screenZoom = Movement.fastPullOut(handler.openCloseCounter / openCloseTime, zoomMax, zoomMin)
handler.opacity = Terrarum.ingame?.screenZoom!! - zoomMin
}
override fun endOpening(delta: Float) {
Terrarum.ingame?.screenZoom = zoomMax
handler.opacity = 1f
}
override fun endClosing(delta: Float) {
Terrarum.ingame?.screenZoom = zoomMin
handler.opacity = 0f
}
}