mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-11 19:14:05 +09:00
114 lines
3.3 KiB
Kotlin
114 lines
3.3 KiB
Kotlin
package net.torvald.terrarum.modulebasegame.ui
|
|
|
|
import com.badlogic.gdx.Gdx
|
|
import com.badlogic.gdx.graphics.Camera
|
|
import com.badlogic.gdx.graphics.Color
|
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
|
import net.torvald.terrarum.*
|
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
|
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
|
|
import net.torvald.terrarum.modulebasegame.imagefont.Watch7SegSmall
|
|
import net.torvald.terrarum.modulebasegame.imagefont.WatchFont
|
|
import net.torvald.terrarum.ui.UICanvas
|
|
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
|
|
|
/**
|
|
* Created by minjaesong on 2017-06-10.
|
|
*/
|
|
class UIBasicInfo() : UICanvas() {
|
|
|
|
val player: ActorHumanoid?
|
|
get() = Terrarum.ingame?.actorNowPlaying
|
|
|
|
override var width = 93
|
|
override var height = 23
|
|
override var openCloseTime: Second = 0f
|
|
|
|
private var ELuptimer = 10f // to make the light turned off by default
|
|
private val ELuptime = 4f
|
|
private var ELon = false
|
|
|
|
private var watchFont = WatchFont
|
|
private var atlas = TextureRegionPack(ModMgr.getPath("basegame", "gui/basic_info1.tga"), width, height)
|
|
|
|
private var font = Watch7SegSmall
|
|
|
|
private val TEMP_AMERICAN = -1
|
|
private val TEMP_KELVIN = 0
|
|
private val TEMP_CELCIUS = 1
|
|
|
|
override fun updateUI(delta: Float) {
|
|
if (ELon) {
|
|
ELuptimer += delta
|
|
}
|
|
|
|
if (mouseUp || Gdx.input.isKeyPressed(AppLoader.getConfigInt("config_keyinteract"))) {
|
|
ELuptimer = 0f
|
|
ELon = true
|
|
}
|
|
|
|
if (ELuptimer >= ELuptime) {
|
|
ELon = false
|
|
}
|
|
}
|
|
|
|
private val temperature: Int
|
|
get() {
|
|
if (player != null) {
|
|
val playerTilePos = player!!.hIntTilewiseHitbox
|
|
val tempCelsius = -273f + ((Terrarum.ingame as? TerrarumIngame)?.world?.getTemperature(playerTilePos.centeredX.toInt(), playerTilePos.centeredY.toInt()) ?: 288f)
|
|
|
|
return if (tempCelsius < -10)
|
|
0
|
|
else if (tempCelsius < 10)
|
|
1
|
|
else if (tempCelsius < 30)
|
|
2
|
|
else if (tempCelsius < 50)
|
|
3
|
|
else
|
|
4
|
|
}
|
|
else {
|
|
return 2
|
|
}
|
|
}
|
|
private val mailCount: Int
|
|
get() = 0 // cap things at 99
|
|
|
|
private val drawCol = Color(1f, 1f, 1f, UIQuickslotBar.DISPLAY_OPACITY)
|
|
private val lcdLitColELoff = Color(0xc0c0c0ff.toInt()) mul drawCol
|
|
private val lcdLitColELon = Color(0x404040ff) mul drawCol
|
|
|
|
private val lcdLitCol: Color = lcdLitColELoff
|
|
|
|
override fun renderUI(batch: SpriteBatch, camera: Camera) {
|
|
batch.color = drawCol
|
|
batch.draw(atlas.get(0, 0), 0f, 0f)
|
|
|
|
// mail count
|
|
batch.color = lcdLitCol
|
|
watchFont.draw(batch, mailCount.toString().padStart(2, '0'), 69f, 7f)
|
|
|
|
// temperature
|
|
if (temperature != 0) {
|
|
batch.draw(atlas.get(1, temperature - 1), 0f, 0f)
|
|
}
|
|
}
|
|
|
|
override fun doOpening(delta: Float) {
|
|
}
|
|
|
|
override fun doClosing(delta: Float) {
|
|
}
|
|
|
|
override fun endOpening(delta: Float) {
|
|
}
|
|
|
|
override fun endClosing(delta: Float) {
|
|
}
|
|
|
|
override fun dispose() {
|
|
atlas.dispose()
|
|
}
|
|
} |