mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-16 13:34:06 +09:00
LibGDX, here I am.
This commit is contained in:
@@ -1,12 +1,19 @@
|
||||
package net.torvald.terrarum.ui
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.gameactors.ActorHumanoid
|
||||
import net.torvald.terrarum.gameactors.Second
|
||||
import net.torvald.terrarum.gameactors.roundInt
|
||||
import net.torvald.terrarum.gameworld.WorldTime
|
||||
import net.torvald.terrarum.imagefont.Watch7SegMain
|
||||
import net.torvald.terrarum.imagefont.Watch7SegSmall
|
||||
import net.torvald.terrarum.imagefont.WatchDotAlph
|
||||
import net.torvald.terrarum.worlddrawer.LightmapRenderer
|
||||
import net.torvald.terrarum.worlddrawer.LightmapRenderer.normaliseToColour
|
||||
import org.newdawn.slick.*
|
||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2017-06-11.
|
||||
@@ -15,33 +22,33 @@ class UITierOneWatch(private val player: ActorHumanoid?) : UICanvas {
|
||||
override var width = 85
|
||||
override var height = 52
|
||||
override var handler: UIHandler? = null
|
||||
override var openCloseTime: Millisec = 0
|
||||
override var openCloseTime: Second = 0f
|
||||
|
||||
private var ELuptimer = 9999 // to make the light turned off by default
|
||||
private val ELuptime = 4000
|
||||
private var ELuptimer = 10f // to make the light turned off by default
|
||||
private val ELuptime = 4f
|
||||
private var ELon = false
|
||||
|
||||
private var atlas = SpriteSheet(ModMgr.getPath("basegame", "gui/watchface_atlas.tga"), width, height)
|
||||
private var atlas = TextureRegionPack(ModMgr.getPath("basegame", "gui/watchface_atlas.tga"), width, height)
|
||||
|
||||
private var littleFont = SpriteSheetFont(SpriteSheet(ModMgr.getPath("basegame", "fonts/7seg_small.tga"), 9, 12), ' ')
|
||||
private var timeFont = SpriteSheetFont(SpriteSheet(ModMgr.getPath("basegame", "fonts/7segnum.tga"), 11, 18), '/')
|
||||
private var textFont = SpriteSheetFont(SpriteSheet(ModMgr.getPath("basegame", "fonts/watch_dotalph.tga"), 12, 10), '@')
|
||||
private var moonDial = SpriteSheet(ModMgr.getPath("basegame", "fonts/watch_17pxmoondial.tga"), 17, 17)
|
||||
private var littleFont = Watch7SegSmall
|
||||
private var timeFont = Watch7SegMain
|
||||
private var textFont = WatchDotAlph
|
||||
private var moonDial = TextureRegionPack(ModMgr.getPath("basegame", "fonts/watch_17pxmoondial.tga"), 17, 17)
|
||||
private var moonDialCount = moonDial.horizontalCount
|
||||
|
||||
private val lcdLitCol = Color(20,20,20)
|
||||
private val lcdLitCol = Color(0x141414_ff)
|
||||
|
||||
private val worldTime: WorldTime
|
||||
get() = Terrarum.ingame!!.world.time
|
||||
get() = TerrarumGDX.ingame!!.world.time
|
||||
|
||||
|
||||
override fun update(gc: GameContainer, delta: Int) {
|
||||
override fun update(delta: Float) {
|
||||
if (ELon) {
|
||||
ELuptimer += delta
|
||||
}
|
||||
|
||||
if (mouseUp || gc.input.isKeyDown(Terrarum.getConfigInt("keyinteract"))) {
|
||||
ELuptimer = 0
|
||||
if (mouseUp || Gdx.input.isKeyPressed(TerrarumGDX.getConfigInt("keyinteract"))) {
|
||||
ELuptimer = 0f
|
||||
ELon = true
|
||||
}
|
||||
|
||||
@@ -50,80 +57,76 @@ class UITierOneWatch(private val player: ActorHumanoid?) : UICanvas {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun render(gc: GameContainer, g: Graphics) {
|
||||
atlas.startUse()
|
||||
|
||||
override fun render(batch: SpriteBatch) {
|
||||
// backplate
|
||||
g.drawImage(atlas.getSubImage(0, 0), 0f, 0f)
|
||||
batch.draw(atlas.get(0, 0), 0f, 0f)
|
||||
|
||||
// because what the fuck
|
||||
blendScreen()
|
||||
g.drawImage(atlas.getSubImage(0, 1), 0f, 0f, Color(12, 12, 12))
|
||||
// because what the fuck (rendered darker than what it supposed to be)
|
||||
/*blendScreen()
|
||||
batch.color = Color(0x0c0c0c_ff)
|
||||
batch.draw(atlas.get(0, 1), 0f, 0f)*/
|
||||
|
||||
// light overlay or EL
|
||||
if (ELon) {
|
||||
blendNormal()
|
||||
g.drawImage(atlas.getSubImage(0, 2), 0f, 0f)
|
||||
batch.draw(atlas.get(0, 2), 0f, 0f)
|
||||
}
|
||||
else {
|
||||
var lightLevel = Color.black
|
||||
val lightLevel: Color
|
||||
|
||||
if (player != null) {
|
||||
val playerPos = player.tilewiseHitbox
|
||||
lightLevel = (LightmapRenderer.getLight(playerPos.centeredX.toInt(), playerPos.centeredY.toInt()) ?:
|
||||
Terrarum.ingame!!.world.globalLight
|
||||
TerrarumGDX.ingame!!.world.globalLight
|
||||
).normaliseToColour()
|
||||
}
|
||||
else {
|
||||
lightLevel = Terrarum.ingame!!.world.globalLight.normaliseToColour()
|
||||
lightLevel = TerrarumGDX.ingame!!.world.globalLight.normaliseToColour()
|
||||
}
|
||||
blendMul()
|
||||
g.drawImage(atlas.getSubImage(0, 1), 0f, 0f, lightLevel)
|
||||
batch.color = lightLevel
|
||||
batch.draw(atlas.get(0, 1), 0f, 0f)
|
||||
}
|
||||
|
||||
// LCD back
|
||||
blendNormal()
|
||||
g.drawImage(atlas.getSubImage(0, 3), 0f, 0f)
|
||||
|
||||
atlas.endUse()
|
||||
batch.draw(atlas.get(0, 3), 0f, 0f)
|
||||
|
||||
|
||||
|
||||
// day name
|
||||
g.color = lcdLitCol
|
||||
g.font = textFont
|
||||
g.drawString(worldTime.getDayNameShort().toUpperCase(), 7f, 7f)
|
||||
batch.color = lcdLitCol
|
||||
textFont.draw(batch, worldTime.getDayNameShort().toUpperCase(), 7f, 7f)
|
||||
|
||||
// month
|
||||
g.font = littleFont
|
||||
g.drawString(worldTime.months.toString().padStart(2, ' '), 40f, 6f)
|
||||
littleFont.draw(batch, worldTime.months.toString().padStart(2, ' '), 40f, 6f)
|
||||
// day
|
||||
g.drawString(worldTime.days.toString().padStart(2, ' '), 62f, 6f)
|
||||
littleFont.draw(batch, worldTime.days.toString().padStart(2, ' '), 62f, 6f)
|
||||
|
||||
// hour
|
||||
g.font = timeFont
|
||||
g.drawString(worldTime.hours.toString().padStart(2, '/'), 30f, 28f)
|
||||
timeFont.draw(batch, worldTime.hours.toString().padStart(2, '/'), 30f, 28f)
|
||||
// minute
|
||||
g.drawString(worldTime.minutes.toString().padStart(2, '0'), 58f, 28f)
|
||||
timeFont.draw(batch, worldTime.minutes.toString().padStart(2, '0'), 58f, 28f)
|
||||
|
||||
|
||||
// moon dial
|
||||
val moonPhase = (worldTime.moonPhase * moonDialCount).roundInt() % moonDialCount
|
||||
g.drawImage(moonDial.getSubImage(moonPhase, 0), 4f, 22f, lcdLitCol)
|
||||
batch.color = lcdLitCol
|
||||
batch.draw(moonDial.get(moonPhase, 0), 4f, 22f)
|
||||
}
|
||||
|
||||
override fun processInput(gc: GameContainer, delta: Int, input: Input) {
|
||||
override fun processInput(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doOpening(gc: GameContainer, delta: Int) {
|
||||
override fun doOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun doClosing(gc: GameContainer, delta: Int) {
|
||||
override fun doClosing(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endOpening(gc: GameContainer, delta: Int) {
|
||||
override fun endOpening(delta: Float) {
|
||||
}
|
||||
|
||||
override fun endClosing(gc: GameContainer, delta: Int) {
|
||||
override fun endClosing(delta: Float) {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user