zooming properly with z key (with some async artefacts)

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

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
}
}