text input pane wip

This commit is contained in:
minjaesong
2021-10-20 23:00:25 +09:00
parent 8a8e97d4b2
commit 9326b87909
34 changed files with 320 additions and 163 deletions

View File

@@ -1,4 +1,4 @@
[[""],[undefined], {"n":"US Colemak","t":[[""],[undefined],
[undefined], [undefined],
["<HOME>"], ["<HOME>"],
[undefined], [undefined],
@@ -253,4 +253,4 @@
[undefined], [undefined],
[undefined], [undefined],
["<:CIRCLE:>"] ["<:CIRCLE:>"]
] ]}

View File

@@ -1,4 +1,4 @@
[[""],[undefined], {"n":"US Qwerty","t":[[""],[undefined],
[undefined], [undefined],
["<HOME>"], ["<HOME>"],
[undefined], [undefined],
@@ -253,4 +253,4 @@
[undefined], [undefined],
[undefined], [undefined],
["<:CIRCLE:>"] ["<:CIRCLE:>"]
] ]}

View File

@@ -234,9 +234,6 @@ public class App implements ApplicationListener {
private static Screen currentScreen; private static Screen currentScreen;
private static LoadScreenBase currentSetLoadScreen; private static LoadScreenBase currentSetLoadScreen;
public static Texture textureWhiteSquare;
public static Texture textureWhiteCircle;
private void initViewPort(int width, int height) { private void initViewPort(int width, int height) {
// Set Y to point downwards // Set Y to point downwards
camera.setToOrtho(true, width, height); // some elements are pre-flipped, while some are not. The statement itself is absolutely necessary to make edge of the screen as the origin camera.setToOrtho(true, width, height); // some elements are pre-flipped, while some are not. The statement itself is absolutely necessary to make edge of the screen as the origin
@@ -748,8 +745,6 @@ public class App implements ApplicationListener {
fontSmallNumbers.dispose(); fontSmallNumbers.dispose();
ItemSlotImageFactory.INSTANCE.dispose(); ItemSlotImageFactory.INSTANCE.dispose();
textureWhiteSquare.dispose();
textureWhiteCircle.dispose();
logo.getTexture().dispose(); logo.getTexture().dispose();
disposables.forEach((it) -> { disposables.forEach((it) -> {
@@ -830,13 +825,6 @@ public class App implements ApplicationListener {
private void postInit() { private void postInit() {
Terrarum.initialise(); Terrarum.initialise();
textureWhiteSquare = new Texture(Gdx.files.internal("assets/graphics/ortho_line_tex_2px.tga"));
textureWhiteSquare.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest);
textureWhiteCircle = new Texture(Gdx.files.internal("assets/graphics/circle_512.tga"));
textureWhiteCircle.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
TextureRegionPack.Companion.setGlobalFlipY(true); TextureRegionPack.Companion.setGlobalFlipY(true);
fontSmallNumbers = TinyAlphNum.INSTANCE; fontSmallNumbers = TinyAlphNum.INSTANCE;

View File

@@ -27,4 +27,5 @@ public class FrameBufferManager {
stack.peek().begin(); stack.peek().begin();
} }
} }
} }

View File

@@ -8,6 +8,7 @@ import com.badlogic.gdx.graphics.glutils.FrameBuffer
import com.jme3.math.FastMath import com.jme3.math.FastMath
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.ui.Toolkit
/** /**
* Created by minjaesong on 2017-07-13. * Created by minjaesong on 2017-07-13.
@@ -141,7 +142,7 @@ object SanicLoadScreen : LoadScreenBase() {
// almost black background // almost black background
it.color = Color(0x181818ff) it.color = Color(0x181818ff)
it.fillRect(0f, 0f, App.scr.wf, App.scr.hf) Toolkit.fillArea(it, 0, 0, App.scr.width, App.scr.height)
it.color = Color.WHITE it.color = Color.WHITE
@@ -184,7 +185,7 @@ object SanicLoadScreen : LoadScreenBase() {
// message backgrounds // message backgrounds
it.color = messageBackgroundColour it.color = messageBackgroundColour
it.fillRect(0f, 60f, App.scr.wf, 40f + (messages.size) * App.fontGame.lineHeight) Toolkit.fillArea(it, 0, 60, App.scr.width, 40 + (messages.size) * App.fontGame.lineHeight.toInt())
// log messages // log messages
it.color = messageForegroundColour it.color = messageForegroundColour
@@ -209,7 +210,7 @@ object SanicLoadScreen : LoadScreenBase() {
// message backgrounds // message backgrounds
it.color = messageBackgroundColour it.color = messageBackgroundColour
it.fillRect(0f, 60f, App.scr.wf, 40f + (messages.size) * App.fontGame.lineHeight) Toolkit.fillArea(it, 0, 60, App.scr.width, 40 + (messages.size) * App.fontGame.lineHeight.toInt())
// log messages // log messages
it.color = messageForegroundColour it.color = messageForegroundColour

View File

@@ -26,9 +26,9 @@ import net.torvald.terrarum.gamecontroller.IngameController
import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.itemproperties.MaterialCodex import net.torvald.terrarum.itemproperties.MaterialCodex
import net.torvald.terrarum.serialise.Common
import net.torvald.terrarum.savegame.ByteArray64Reader import net.torvald.terrarum.savegame.ByteArray64Reader
import net.torvald.terrarum.savegame.DiskSkimmer import net.torvald.terrarum.savegame.DiskSkimmer
import net.torvald.terrarum.serialise.Common
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.worlddrawer.WorldCamera import net.torvald.terrarum.worlddrawer.WorldCamera
import net.torvald.terrarumsansbitmap.gdx.GameFontBase import net.torvald.terrarumsansbitmap.gdx.GameFontBase
@@ -358,21 +358,6 @@ inline fun FrameBuffer.inAction(camera: OrthographicCamera?, batch: SpriteBatch?
} }
// ShapeRenderer alternative for rects
fun SpriteBatch.fillRect(x: Float, y: Float, w: Float, h: Float) {
this.draw(App.textureWhiteSquare, x, y, w, h)
}
fun SpriteBatch.fillCircle(x: Float, y: Float, w: Float, h: Float) {
this.draw(App.textureWhiteCircle, x, y, w, h)
}
fun SpriteBatch.drawStraightLine(x: Float, y: Float, otherEnd: Float, thickness: Float, isVertical: Boolean) {
if (!isVertical)
this.fillRect(x, y, otherEnd - x, thickness)
else
this.fillRect(x, y, thickness, otherEnd - y)
}
infix fun Color.mul(other: Color): Color = this.cpy().mul(other) infix fun Color.mul(other: Color): Color = this.cpy().mul(other)
infix fun Color.mulAndAssign(other: Color): Color { infix fun Color.mulAndAssign(other: Color): Color {

View File

@@ -89,7 +89,7 @@ class UIFakeBlurOverlay(val blurRadius: Float, val nodarken: Boolean) : UICanvas
if (!nodarken) { if (!nodarken) {
blendMul(batch) blendMul(batch)
batch.color = darken batch.color = darken
batch.fillRect(0f, 0f, width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, 0, 0, width, height)
blendNormal(batch) blendNormal(batch)
} }

View File

@@ -6,10 +6,7 @@ import com.badlogic.gdx.graphics.Pixmap
import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.Texture
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.ui.Movement import net.torvald.terrarum.ui.*
import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UIItem
import net.torvald.terrarum.ui.UIItemImageButton
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import kotlin.math.roundToInt import kotlin.math.roundToInt
@@ -270,7 +267,7 @@ class UIItemInventoryCatBar(
// underline // underline
batch.color = underlineColour batch.color = underlineColour
batch.drawStraightLine(posX.toFloat(), posY + height - 1f, posX + width.toFloat(), 1f, false) Toolkit.drawStraightLine(batch, posX, posY + height - 1, posX + width, 1, false)
// indicator // indicator
if (selectedPanel == 1) { if (selectedPanel == 1) {

View File

@@ -12,6 +12,7 @@ import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.Toolkit.DEFAULT_BOX_BORDER_COL import net.torvald.terrarum.ui.Toolkit.DEFAULT_BOX_BORDER_COL
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UIItemTextButton import net.torvald.terrarum.ui.UIItemTextButton
import kotlin.math.roundToInt
/** /**
* Created by minjaesong on 2017-10-20. * Created by minjaesong on 2017-10-20.
@@ -92,16 +93,16 @@ class UIItemInventoryElemSimple(
if (item!!.maxDurability > 0.0) { if (item!!.maxDurability > 0.0) {
// draw durability metre // draw durability metre
val barFullLen = width val barFullLen = width
val barOffset = posX.toFloat() val barOffset = posX
val thickness = UIItemInventoryElemWide.durabilityBarThickness val thickness = UIItemInventoryElemWide.durabilityBarThickness
val percentage = item!!.durability / item!!.maxDurability val percentage = item!!.durability / item!!.maxDurability
val durabilityCol = UIItemInventoryCellCommonRes.getHealthMeterColour(percentage, 0f, 1f) val durabilityCol = UIItemInventoryCellCommonRes.getHealthMeterColour(percentage, 0f, 1f)
val durabilityBack = durabilityCol mul UIItemInventoryCellCommonRes.meterBackDarkening val durabilityBack = durabilityCol mul UIItemInventoryCellCommonRes.meterBackDarkening
if (item!!.maxDurability > 0.0) { if (item!!.maxDurability > 0.0) {
batch.color = durabilityBack batch.color = durabilityBack
batch.drawStraightLine(barOffset, posY + height - thickness, barOffset + barFullLen, thickness, false) Toolkit.drawStraightLine(batch, barOffset, posY + height - thickness, barOffset + barFullLen, thickness, false)
batch.color = durabilityCol batch.color = durabilityCol
batch.drawStraightLine(barOffset, posY + height - thickness, barOffset + barFullLen * percentage, thickness, false) Toolkit.drawStraightLine(batch, barOffset, posY + height - thickness, barOffset + (barFullLen * percentage).roundToInt(), thickness, false)
} }
} }
// draw item count when applicable // draw item count when applicable

View File

@@ -13,6 +13,7 @@ import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.Toolkit.DEFAULT_BOX_BORDER_COL import net.torvald.terrarum.ui.Toolkit.DEFAULT_BOX_BORDER_COL
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UIItemTextButton import net.torvald.terrarum.ui.UIItemTextButton
import kotlin.math.roundToInt
/*** /***
* Note that the UI will not render if either item or itemImage is null. * Note that the UI will not render if either item or itemImage is null.
@@ -44,7 +45,7 @@ class UIItemInventoryElemWide(
val height = 48 val height = 48
val UNIQUE_ITEM_HAS_NO_AMOUNT = -1 val UNIQUE_ITEM_HAS_NO_AMOUNT = -1
internal val durabilityBarThickness = 3f internal val durabilityBarThickness = 3
} }
override val height = UIItemInventoryElemWide.height override val height = UIItemInventoryElemWide.height
@@ -59,7 +60,7 @@ class UIItemInventoryElemWide(
private val durabilityBarOffY = 35f private val durabilityBarOffY = 35
@@ -125,16 +126,16 @@ class UIItemInventoryElemWide(
// durability metre // durability metre
val barFullLen = (width - 8f) - textOffsetX val barFullLen = (width - 8) - textOffsetX.toInt()
val barOffset = posX + textOffsetX val barOffset = posX + textOffsetX.toInt()
val percentage = if (item!!.maxDurability < 0.00001f) 0f else item!!.durability / item!!.maxDurability val percentage = if (item!!.maxDurability < 0.00001f) 0f else item!!.durability / item!!.maxDurability
val durabilityCol = UIItemInventoryCellCommonRes.getHealthMeterColour(percentage, 0f, 1f) val durabilityCol = UIItemInventoryCellCommonRes.getHealthMeterColour(percentage, 0f, 1f)
val durabilityBack = durabilityCol mul UIItemInventoryCellCommonRes.meterBackDarkening val durabilityBack = durabilityCol mul UIItemInventoryCellCommonRes.meterBackDarkening
if (item!!.maxDurability > 0.0) { if (item!!.maxDurability > 0.0) {
batch.color = durabilityBack batch.color = durabilityBack
batch.drawStraightLine(barOffset, posY + durabilityBarOffY, barOffset + barFullLen, durabilityBarThickness, false) Toolkit.drawStraightLine(batch, barOffset, posY + durabilityBarOffY, barOffset + barFullLen, durabilityBarThickness, false)
batch.color = durabilityCol batch.color = durabilityCol
batch.drawStraightLine(barOffset, posY + durabilityBarOffY, barOffset + barFullLen * percentage, durabilityBarThickness, false) Toolkit.drawStraightLine(batch, barOffset, posY + durabilityBarOffY, barOffset + (barFullLen * percentage).roundToInt(), durabilityBarThickness, false)
} }
@@ -144,7 +145,7 @@ class UIItemInventoryElemWide(
if (quickslot != null) { if (quickslot != null) {
val label = quickslot!!.plus(0xE010).toChar() val label = quickslot!!.plus(0xE010).toChar()
val labelW = App.fontGame.getWidth("$label") val labelW = App.fontGame.getWidth("$label")
App.fontGame.draw(batch, "$label", barOffset + barFullLen - labelW, posY + textOffsetY) App.fontGame.draw(batch, "$label", barOffset + barFullLen - labelW.toFloat(), posY + textOffsetY)
} }
} }

View File

@@ -1,11 +1,18 @@
package net.torvald.terrarum.gamecontroller package net.torvald.terrarum.gamecontroller
import com.badlogic.gdx.Gdx import com.badlogic.gdx.Gdx
import net.torvald.terrarum.App.printdbg
typealias TerrarumKeyLayout = Array<Array<String?>> data class TerrarumKeyLayout(
val name: String,
val symbols: Array<Array<String?>>?,
val acceptChar: ((Int) -> String?)? = null
)
/** /**
* Key Layout File Structure for Low Layer:
* - n: Displayed name of the keyboard layout
* - t: Key symbols in 256R4C string array (C1: unshifted, C2: Shift, C3: AltGr, C4: Shift-AltGr)
*
* IME consists of two keyboard layers: * IME consists of two keyboard layers:
* - Low layer: "english" keyboard (qwerty, colemak, etc), stateless * - Low layer: "english" keyboard (qwerty, colemak, etc), stateless
* - High layer: chinese/japanese/korean/etc. keyboard, stateful * - High layer: chinese/japanese/korean/etc. keyboard, stateful
@@ -36,10 +43,11 @@ object IME {
private fun parseKeylayoutFile(path: String): TerrarumKeyLayout { private fun parseKeylayoutFile(path: String): TerrarumKeyLayout {
val file = Gdx.files.internal(path) val file = Gdx.files.internal(path)
val src = file.readString("UTF-8") val src = file.readString("UTF-8")
val jsval = context.eval("js", src) val jsval = context.eval("js", "let t=$src;Object.freeze(t)")
val name = jsval.getMember("n").asString()
val out = Array(256) { Array<String?>(4) { null } } val out = Array(256) { Array<String?>(4) { null } }
for (keycode in 0L until 256L) { for (keycode in 0L until 256L) {
val a = jsval.getArrayElement(keycode) val a = jsval.getMember("t").getArrayElement(keycode)
if (!a.isNull) { if (!a.isNull) {
for (layer in 0L until 4L) { for (layer in 0L until 4L) {
if (a.arraySize > layer) { if (a.arraySize > layer) {
@@ -52,9 +60,9 @@ object IME {
} }
} }
//println("[IME] Test Keymap print:"); for (keycode in 0 until 256) { print("$keycode:\t"); println(out[keycode].joinToString("\t")) } // println("[IME] Test Keymap print for $name:"); for (keycode in 0 until 256) { print("$keycode:\t"); println(out[keycode].joinToString("\t")) }
return out return TerrarumKeyLayout(name, out)
} }
} }

View File

@@ -283,13 +283,19 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
private const val KEY_DOWN = 0 private const val KEY_DOWN = 0
private const val KEY_CHANGE = 1 private const val KEY_CHANGE = 1
const val N_KEY_ROLLOVER = 8 const val N_KEY_ROLLOVER = 8
var KEYBOARD_DELAYS = floatArrayOf(0.25f, 0.025f) var KEYBOARD_DELAYS = longArrayOf(0L,250000000L,0L,25000000L,0L)
private var stroboTime = 0L private var stroboTime = 0L
private var stroboStatus = 0 private var stroboStatus = 0
private var repeatCount = 0 private var repeatCount = 0
private var oldKeys = IntArray(N_KEY_ROLLOVER) { 0 } private var oldKeys = IntArray(N_KEY_ROLLOVER) { 0 }
/** always Low Layer */
private var keymap = IME.getLowLayerByName(App.getConfigString("basekeyboardlayout")) private var keymap = IME.getLowLayerByName(App.getConfigString("basekeyboardlayout"))
fun resetKeyboardStrobo() {
stroboStatus = 0
repeatCount = 0
}
// code proudly stolen from tsvm's TVDOS.SYS // code proudly stolen from tsvm's TVDOS.SYS
fun withKeyboardEvent(callback: (TerrarumKeyboardEvent) -> Unit) { fun withKeyboardEvent(callback: (TerrarumKeyboardEvent) -> Unit) {
val keys = strobeKeys() val keys = strobeKeys()
@@ -337,8 +343,9 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
} }
private fun keysToStr(keys: IntArray): Array<String?>? { private fun keysToStr(keys: IntArray): Array<String?>? {
if (keys.size == 0) return null
val headkey = keys[0] val headkey = keys[0]
return if (keymap[headkey] == null) null else keymap[headkey] return if (keymap.symbols!![headkey] == null) null else keymap.symbols!![headkey]
} }
private fun strobeKeys(): IntArray { private fun strobeKeys(): IntArray {
@@ -356,8 +363,8 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
} }
private fun arrayEq(a: IntArray, b: IntArray): Boolean { private fun arrayEq(a: IntArray, b: IntArray): Boolean {
for (i in 0..a.size) { for (i in 0 until a.size) {
if (a[i] != b[i]) return false if (a[i] != b.getOrNull(i)) return false
} }
return true return true
} }

View File

@@ -18,6 +18,7 @@ import net.torvald.terrarum.gamecontroller.KeyToggler
import net.torvald.terrarum.gameparticles.ParticleBase import net.torvald.terrarum.gameparticles.ParticleBase
import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.weather.WeatherMixer import net.torvald.terrarum.weather.WeatherMixer
import net.torvald.terrarum.worlddrawer.BlocksDrawer import net.torvald.terrarum.worlddrawer.BlocksDrawer
import net.torvald.terrarum.worlddrawer.FeaturesDrawer import net.torvald.terrarum.worlddrawer.FeaturesDrawer
@@ -295,11 +296,11 @@ object IngameRenderer : Disposable {
// indicator // indicator
batch.color = Color.RED batch.color = Color.RED
batch.fillRect(0f, 0f, 6f, 10f) Toolkit.fillArea(batch, 0, 0, 6, 10)
batch.color = Color.LIME batch.color = Color.LIME
batch.fillRect(6f, 0f, 6f, 10f) Toolkit.fillArea(batch, 6, 0, 6, 10)
batch.color = Color.ROYAL batch.color = Color.ROYAL
batch.fillRect(12f, 0f, 6f, 10f) Toolkit.fillArea(batch, 12, 0, 6, 10)
batch.color = Color.WHITE batch.color = Color.WHITE
} }
@@ -322,7 +323,7 @@ object IngameRenderer : Disposable {
// indicator // indicator
batch.color = Color.WHITE batch.color = Color.WHITE
batch.fillRect(18f, 0f, 18f, 10f) Toolkit.fillArea(batch, 18, 0, 18, 10)
} }
// works as intended // works as intended

View File

@@ -9,7 +9,6 @@ import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameitem.GameItem import net.torvald.terrarum.gameitem.GameItem
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory.Companion.CAPACITY_MODE_COUNT import net.torvald.terrarum.modulebasegame.gameactors.FixtureInventory.Companion.CAPACITY_MODE_COUNT
import net.torvald.terrarum.modulebasegame.ui.* import net.torvald.terrarum.modulebasegame.ui.*
import net.torvald.terrarum.modulebasegame.ui.UIInventoryCells.Companion.weightBarWidth import net.torvald.terrarum.modulebasegame.ui.UIInventoryCells.Companion.weightBarWidth
@@ -21,6 +20,7 @@ import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.controlH
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalHeight import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalHeight
import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalWidth import net.torvald.terrarum.modulebasegame.ui.UIInventoryFull.Companion.internalWidth
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryItemGrid.Companion.listGap import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryItemGrid.Companion.listGap
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
@@ -225,13 +225,13 @@ internal class UIStorageChest : UICanvas(
// encumbrance bar background // encumbrance bar background
batch.color = encumbBack batch.color = encumbBack
batch.fillRect( Toolkit.fillArea(batch,
encumbBarXPos, encumbBarYPos, encumbBarXPos, encumbBarYPos,
weightBarWidth, controlHelpHeight - 6f weightBarWidth, controlHelpHeight - 6f
) )
// encumbrance bar // encumbrance bar
batch.color = encumbCol batch.color = encumbCol
batch.fillRect( Toolkit.fillArea(batch,
encumbBarXPos, encumbBarYPos, encumbBarXPos, encumbBarYPos,
if (getPlayerInventory().capacityMode == FixtureInventory.CAPACITY_MODE_NO_ENCUMBER) if (getPlayerInventory().capacityMode == FixtureInventory.CAPACITY_MODE_NO_ENCUMBER)
1f 1f

View File

@@ -1,20 +1,20 @@
package net.torvald.terrarum.modulebasegame.ui package net.torvald.terrarum.modulebasegame.ui
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.App import net.torvald.terrarum.BlockCodex
import net.torvald.terrarum.ItemCodex
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.blendNormal import net.torvald.terrarum.blendNormal
import net.torvald.terrarum.fillRect
import net.torvald.terrarum.modulebasegame.BuildingMaker import net.torvald.terrarum.modulebasegame.BuildingMaker
import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory.CELLCOLOUR_WHITE import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory.CELLCOLOUR_WHITE
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UIItemImageButton import net.torvald.terrarum.ui.UIItemImageButton
import net.torvald.terrarum.ui.UIItemTextButtonList import net.torvald.terrarum.ui.UIItemTextButtonList
import net.torvald.terrarum.ui.UIItemTextButtonList.Companion.DEFAULT_BACKGROUNDCOL import net.torvald.terrarum.ui.UIItemTextButtonList.Companion.DEFAULT_BACKGROUNDCOL
import kotlin.math.roundToInt import kotlin.math.roundToInt
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2019-02-14. * Created by minjaesong on 2019-02-14.
@@ -132,15 +132,15 @@ class UIBuildingMakerBlockChooser(val parent: BuildingMaker): UICanvas() {
// gaps between tabs and close button // gaps between tabs and close button
batch.color = DEFAULT_BACKGROUNDCOL batch.color = DEFAULT_BACKGROUNDCOL
batch.fillRect(0f, tabs.height.toFloat(), MENUBAR_SIZE.toFloat(), height.toFloat() - (tabs.height + closeButton.height)) Toolkit.fillArea(batch, 0f, tabs.height.toFloat(), MENUBAR_SIZE.toFloat(), height.toFloat() - (tabs.height + closeButton.height))
// scrollbar back // scrollbar back
batch.color = DEFAULT_BACKGROUNDCOL batch.color = DEFAULT_BACKGROUNDCOL
batch.fillRect(width - SCROLLBAR_SIZE.toFloat(), 0f, SCROLLBAR_SIZE.toFloat(), height.toFloat()) Toolkit.fillArea(batch, width - SCROLLBAR_SIZE.toFloat(), 0f, SCROLLBAR_SIZE.toFloat(), height.toFloat())
batch.color = scrollbarBackCol batch.color = scrollbarBackCol
batch.fillRect(width - SCROLLBAR_SIZE.toFloat(), 0f, SCROLLBAR_SIZE.toFloat(), height.toFloat()) Toolkit.fillArea(batch, width - SCROLLBAR_SIZE.toFloat(), 0f, SCROLLBAR_SIZE.toFloat(), height.toFloat())
// scrollbar // scrollbar
batch.color = CELLCOLOUR_WHITE batch.color = CELLCOLOUR_WHITE
batch.fillRect(width - SCROLLBAR_SIZE.toFloat(), scrollBarPos.toFloat(), SCROLLBAR_SIZE.toFloat(), scrollBarHeight) Toolkit.fillArea(batch, width - SCROLLBAR_SIZE.toFloat(), scrollBarPos.toFloat(), SCROLLBAR_SIZE.toFloat(), scrollBarHeight)
// the actual buttons // the actual buttons
tabs.render(batch, camera) tabs.render(batch, camera)

View File

@@ -8,6 +8,7 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.* import net.torvald.terrarum.*
import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.modulebasegame.BuildingMaker import net.torvald.terrarum.modulebasegame.BuildingMaker
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UIItemImageButton import net.torvald.terrarum.ui.UIItemImageButton
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
@@ -22,18 +23,19 @@ class UIBuildingMakerPenMenu(val parent: BuildingMaker): UICanvas() {
companion object { companion object {
const val SIZE = 330 const val SIZE = 330
const val RADIUS = SIZE / 2.0 const val RADIUS = SIZE / 2.0
const val RADIUSI = RADIUS.toInt()
const val RADIUSF = RADIUS.toFloat() const val RADIUSF = RADIUS.toFloat()
const val BLOCKS_ROW_RADIUS = 120.0 const val BLOCKS_ROW_RADIUS = 120.0
const val TOOLS_ROW_RADIUS = 56.0 const val TOOLS_ROW_RADIUS = 56.0
const val BLOCK_BACK_SIZE = 72 const val BLOCK_BACK_SIZE = 72
const val BLOCK_BACK_RADIUS = BLOCK_BACK_SIZE / 2f const val BLOCK_BACK_RADIUS = BLOCK_BACK_SIZE / 2
const val ICON_SIZE = 38 const val ICON_SIZE = 38
const val ICON_SIZEH = ICON_SIZE / 2f const val ICON_SIZEH = ICON_SIZE / 2f
const val CLOSE_BUTTON_SIZE = 48 const val CLOSE_BUTTON_SIZE = 48
const val CLOSE_BUTTON_RADIUS = CLOSE_BUTTON_SIZE / 2f const val CLOSE_BUTTON_RADIUS = CLOSE_BUTTON_SIZE / 2
const val PALETTE_SIZE = 10 const val PALETTE_SIZE = 10
const val TOOLS_SIZE = 5 const val TOOLS_SIZE = 5
@@ -135,7 +137,7 @@ class UIBuildingMakerPenMenu(val parent: BuildingMaker): UICanvas() {
// primary click // primary click
if (Terrarum.mouseDown) { if (Terrarum.mouseDown) {
// close by clicking close button or out-of-boud // close by clicking close button or out-of-boud
if (mouseVec.distanceSquared(RADIUS, RADIUS) !in CLOSE_BUTTON_RADIUS.sqr()..RADIUSF.sqr()) { if (mouseVec.distanceSquared(RADIUS, RADIUS) !in CLOSE_BUTTON_RADIUS.toFloat().sqr()..RADIUSF.sqr()) {
closeGracefully() closeGracefully()
} }
} }
@@ -149,7 +151,7 @@ class UIBuildingMakerPenMenu(val parent: BuildingMaker): UICanvas() {
override fun renderUI(batch: SpriteBatch, camera: Camera) { override fun renderUI(batch: SpriteBatch, camera: Camera) {
// draw back // draw back
batch.color = backCol batch.color = backCol
batch.fillCircle(0f, 0f, SIZE.toFloat(), SIZE.toFloat()) Toolkit.fillCircle(batch,0, 0, SIZE, SIZE)
// draw blocks slot // draw blocks slot
batch.color = blockCellCol batch.color = blockCellCol
@@ -167,12 +169,12 @@ class UIBuildingMakerPenMenu(val parent: BuildingMaker): UICanvas() {
"wall@" + Block.GLASS_CRUDE "wall@" + Block.GLASS_CRUDE
)//AppLoader.getConfigStringArray("buildingmakerfavs") )//AppLoader.getConfigStringArray("buildingmakerfavs")
for (i in 0 until PALETTE_SIZE) { for (i in 0 until PALETTE_SIZE) {
val x = blockCellPos[i].x.roundToInt().toFloat() val x = blockCellPos[i].x.roundToInt()
val y = blockCellPos[i].y.roundToInt().toFloat() val y = blockCellPos[i].y.roundToInt()
batch.color = blockCellCol batch.color = blockCellCol
repeat((i == mouseOnBlocksSlot).toInt() + 1) { batch.fillCircle(x - BLOCK_BACK_RADIUS, y - BLOCK_BACK_RADIUS, BLOCK_BACK_SIZE.toFloat(), BLOCK_BACK_SIZE.toFloat()) } repeat((i == mouseOnBlocksSlot).toInt() + 1) { Toolkit.fillCircle(batch, x - BLOCK_BACK_RADIUS, y - BLOCK_BACK_RADIUS, BLOCK_BACK_SIZE, BLOCK_BACK_SIZE) }
batch.color = Color.WHITE batch.color = Color.WHITE
batch.draw(ItemCodex.getItemImage(slotConfig[i]), x - 16, y - 16, 32f, 32f) batch.draw(ItemCodex.getItemImage(slotConfig[i]), x - 16f, y - 16f, 32f, 32f)
// update as well while looping // update as well while looping
if (i == mouseOnBlocksSlot && Terrarum.mouseDown) { if (i == mouseOnBlocksSlot && Terrarum.mouseDown) {
@@ -183,7 +185,7 @@ class UIBuildingMakerPenMenu(val parent: BuildingMaker): UICanvas() {
// draw close button // draw close button
batch.color = blockCellCol batch.color = blockCellCol
repeat(mouseOnCloseButton.toInt() + 1) { batch.fillCircle(RADIUSF - CLOSE_BUTTON_RADIUS, RADIUSF - CLOSE_BUTTON_RADIUS, CLOSE_BUTTON_SIZE.toFloat(), CLOSE_BUTTON_SIZE.toFloat()) } repeat(mouseOnCloseButton.toInt() + 1) { Toolkit.fillCircle(batch, RADIUSI - CLOSE_BUTTON_RADIUS, RADIUSI - CLOSE_BUTTON_RADIUS, CLOSE_BUTTON_SIZE, CLOSE_BUTTON_SIZE) }
batch.color = if (mouseOnCloseButton) toolButtons[0].activeCol else toolButtons[0].inactiveCol batch.color = if (mouseOnCloseButton) toolButtons[0].activeCol else toolButtons[0].inactiveCol
batch.draw(toolIcons.get(5, 0), RADIUSF - ICON_SIZEH, RADIUSF - ICON_SIZEH) batch.draw(toolIcons.get(5, 0), RADIUSF - ICON_SIZEH, RADIUSF - ICON_SIZEH)

View File

@@ -34,7 +34,7 @@ class UICheatDetected : UICanvas() {
Toolkit.blurEntireScreen(batch, camera as OrthographicCamera, 2f, 0, 0, width, height) Toolkit.blurEntireScreen(batch, camera as OrthographicCamera, 2f, 0, 0, width, height)
batch.color = backgroundCol batch.color = backgroundCol
batch.fillRect(0f, 0f, width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, 0f, 0f, width.toFloat(), height.toFloat())
batch.color = Color.WHITE batch.color = Color.WHITE
val txt = Lang["ERROR_GENERIC_CHEATING"] val txt = Lang["ERROR_GENERIC_CHEATING"]

View File

@@ -217,13 +217,13 @@ package net.torvald.terrarum.modulebasegame.ui
// background // background
blendNormal() blendNormal()
batch.color = backgroundColour batch.color = backgroundColour
batch.fillRect(0f, 0f, width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, 0f, 0f, width.toFloat(), height.toFloat())
// cat bar background // cat bar background
blendMul() blendMul()
batch.color = Color(0xcccccc_ff.toInt()) batch.color = Color(0xcccccc_ff.toInt())
batch.fillRect(0f, 0f, catButtons.width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, 0f, 0f, catButtons.width.toFloat(), height.toFloat())
catButtons.render(batch, camera) catButtons.render(batch, camera)
@@ -255,7 +255,7 @@ package net.torvald.terrarum.modulebasegame.ui
// encumbrance bar background // encumbrance bar background
blendMul() blendMul()
batch.color = Color(0xa0a0a0_ff.toInt()) batch.color = Color(0xa0a0a0_ff.toInt())
batch.fillRect( Toolkit.fillArea(batch,
width - 3 - weightBarWidth, width - 3 - weightBarWidth,
height - controlHelpHeight + 3f, height - controlHelpHeight + 3f,
weightBarWidth, weightBarWidth,
@@ -264,7 +264,7 @@ package net.torvald.terrarum.modulebasegame.ui
// encumbrance bar // encumbrance bar
blendNormal() blendNormal()
batch.color = if (isEncumbered) Color(0xff0000_cc.toInt()) else Color(0x00ff00_cc.toInt()) batch.color = if (isEncumbered) Color(0xff0000_cc.toInt()) else Color(0x00ff00_cc.toInt())
batch.fillRect( Toolkit.fillArea(batch,
width - 3 - weightBarWidth, width - 3 - weightBarWidth,
height - controlHelpHeight + 3f, height - controlHelpHeight + 3f,
if (actor?.inventory?.capacityMode == CAPACITY_MODE_NO_ENCUMBER) if (actor?.inventory?.capacityMode == CAPACITY_MODE_NO_ENCUMBER)

View File

@@ -120,13 +120,13 @@ internal class UIInventoryCells(
val encumbCol = UIItemInventoryCellCommonRes.getHealthMeterColour(1f - encumbrancePerc, 0f, 1f) val encumbCol = UIItemInventoryCellCommonRes.getHealthMeterColour(1f - encumbrancePerc, 0f, 1f)
val encumbBack = encumbCol mul UIItemInventoryCellCommonRes.meterBackDarkening val encumbBack = encumbCol mul UIItemInventoryCellCommonRes.meterBackDarkening
batch.color = encumbBack batch.color = encumbBack
batch.fillRect( Toolkit.fillArea(batch,
encumbBarXPos, encumbBarYPos, encumbBarXPos, encumbBarYPos,
weightBarWidth, controlHelpHeight - 6f weightBarWidth, controlHelpHeight - 6f
) )
// encumbrance bar // encumbrance bar
batch.color = encumbCol batch.color = encumbCol
batch.fillRect( Toolkit.fillArea(batch,
encumbBarXPos, encumbBarYPos, encumbBarXPos, encumbBarYPos,
if (full.actor.inventory.capacityMode == FixtureInventory.CAPACITY_MODE_NO_ENCUMBER) if (full.actor.inventory.capacityMode == FixtureInventory.CAPACITY_MODE_NO_ENCUMBER)
1f 1f

View File

@@ -108,7 +108,7 @@ class UIInventoryMinimap(val full: UIInventoryFull) : UICanvas() {
// sky background // sky background
batch.color = MINIMAP_SKYCOL batch.color = MINIMAP_SKYCOL
batch.fillRect(0f, 0f, MINIMAP_WIDTH, MINIMAP_HEIGHT) Toolkit.fillArea(batch, 0f, 0f, MINIMAP_WIDTH, MINIMAP_HEIGHT)
// the actual image // the actual image
batch.color = Color.WHITE batch.color = Color.WHITE
batch.draw(MinimapComposer.tempTex, tx, ty + MinimapComposer.totalHeight * minimapZoom, MinimapComposer.totalWidth * minimapZoom, -MinimapComposer.totalHeight * minimapZoom) batch.draw(MinimapComposer.tempTex, tx, ty + MinimapComposer.totalHeight * minimapZoom, MinimapComposer.totalWidth * minimapZoom, -MinimapComposer.totalHeight * minimapZoom)
@@ -124,10 +124,10 @@ class UIInventoryMinimap(val full: UIInventoryFull) : UICanvas() {
batch.projectionMatrix = camera.combined batch.projectionMatrix = camera.combined
// 1px stroke // 1px stroke
batch.color = Color.WHITE batch.color = Color.WHITE
batch.fillRect((width - MINIMAP_WIDTH) / 2, -1 + cellOffY.toFloat(), MINIMAP_WIDTH, 1f) Toolkit.fillArea(batch, (width - MINIMAP_WIDTH) / 2, -1 + cellOffY.toFloat(), MINIMAP_WIDTH, 1f)
batch.fillRect((width - MINIMAP_WIDTH) / 2, cellOffY + MINIMAP_HEIGHT, MINIMAP_WIDTH, 1f) Toolkit.fillArea(batch, (width - MINIMAP_WIDTH) / 2, cellOffY + MINIMAP_HEIGHT, MINIMAP_WIDTH, 1f)
batch.fillRect(-1 + (width - MINIMAP_WIDTH) / 2, cellOffY.toFloat(), 1f, MINIMAP_HEIGHT) Toolkit.fillArea(batch, -1 + (width - MINIMAP_WIDTH) / 2, cellOffY.toFloat(), 1f, MINIMAP_HEIGHT)
batch.fillRect((width - MINIMAP_WIDTH) / 2 + MINIMAP_WIDTH, cellOffY.toFloat(), 1f, MINIMAP_HEIGHT) Toolkit.fillArea(batch, (width - MINIMAP_WIDTH) / 2 + MINIMAP_WIDTH, cellOffY.toFloat(), 1f, MINIMAP_HEIGHT)
// control hints // control hints
batch.color = Color.WHITE batch.color = Color.WHITE

View File

@@ -130,6 +130,8 @@ class UIKeyboardControlPanel(remoCon: UIRemoCon?) : UICanvas() {
private val controlPalette = UIItemControlPaletteBaloon(this, (Toolkit.drawWidth - 480) / 2, kby + 219) private val controlPalette = UIItemControlPaletteBaloon(this, (Toolkit.drawWidth - 480) / 2, kby + 219)
private val textInputPanel = UIItemTextLineInput(this, drawX, 360, width)
init { init {
keycaps.values.forEach { addUIitem(it) } keycaps.values.forEach { addUIitem(it) }
updateKeycaps() updateKeycaps()
@@ -139,6 +141,8 @@ class UIKeyboardControlPanel(remoCon: UIRemoCon?) : UICanvas() {
resetKeyConfig() resetKeyConfig()
updateKeycaps() updateKeycaps()
} }
addUIitem(textInputPanel)
} }
private fun resetKeyConfig() { private fun resetKeyConfig() {

View File

@@ -6,15 +6,15 @@ import com.badlogic.gdx.graphics.Pixmap
import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.Texture
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.App import net.torvald.terrarum.App
import net.torvald.terrarum.ItemCodex
import net.torvald.terrarum.blendNormal import net.torvald.terrarum.blendNormal
import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.fillRect
import net.torvald.terrarum.gameitem.ItemID import net.torvald.terrarum.gameitem.ItemID
import net.torvald.terrarum.modulebasegame.BuildingMaker import net.torvald.terrarum.modulebasegame.BuildingMaker
import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory.CELLCOLOUR_BLACK import net.torvald.terrarum.modulebasegame.ui.ItemSlotImageFactory.CELLCOLOUR_BLACK
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UICanvas import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UINSMenu import net.torvald.terrarum.ui.UINSMenu
import net.torvald.terrarum.*
/** /**
* Created by minjaesong on 2019-02-03. * Created by minjaesong on 2019-02-03.
@@ -75,7 +75,7 @@ class UIPaletteSelector(val parent: BuildingMaker) : UICanvas() {
// draw title bar // draw title bar
batch.color = UINSMenu.DEFAULT_TITLEBACKCOL batch.color = UINSMenu.DEFAULT_TITLEBACKCOL
blendNormal(batch) blendNormal(batch)
batch.fillRect(0f, 0f, width.toFloat(), LINE_HEIGHT.toFloat()) Toolkit.fillArea(batch, 0, 0, width, LINE_HEIGHT)
// draw "Pal." // draw "Pal."
batch.color = UINSMenu.DEFAULT_TITLETEXTCOL batch.color = UINSMenu.DEFAULT_TITLETEXTCOL
@@ -83,7 +83,7 @@ class UIPaletteSelector(val parent: BuildingMaker) : UICanvas() {
// draw background // draw background
batch.color = CELLCOLOUR_BLACK batch.color = CELLCOLOUR_BLACK
batch.fillRect(0f, LINE_HEIGHT.toFloat(), 36f, 48f) Toolkit.fillArea(batch, 0, LINE_HEIGHT, 36, 48)
// draw back and fore selection // draw back and fore selection
batch.color = Color.WHITE batch.color = Color.WHITE

View File

@@ -2,7 +2,7 @@ package net.torvald.terrarum.tests
import com.badlogic.gdx.ApplicationAdapter import com.badlogic.gdx.ApplicationAdapter
import com.badlogic.gdx.Gdx import com.badlogic.gdx.Gdx
import com.badlogic.gdx.Input import com.badlogic.gdx.InputAdapter
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration
import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Camera
@@ -11,11 +11,13 @@ import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.Texture import com.badlogic.gdx.graphics.Texture
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.glutils.ShaderProgram import com.badlogic.gdx.graphics.glutils.ShaderProgram
import com.badlogic.gdx.graphics.glutils.ShapeRenderer import net.torvald.EMDASH
import com.jme3.math.FastMath
import net.torvald.terrarum.* import net.torvald.terrarum.*
import net.torvald.terrarum.ui.* import net.torvald.terrarum.ui.Toolkit
import kotlin.math.roundToInt import net.torvald.terrarum.ui.UICanvas
import net.torvald.terrarum.ui.UIItemTextLineInput
import net.torvald.terrarum.ui.UIItemToggleButton
import net.torvald.terrarumsansbitmap.gdx.GameFontBase
/** /**
* Created by Torvald on 2019-10-16. * Created by Torvald on 2019-10-16.
@@ -29,18 +31,66 @@ class UIElemTest : ApplicationAdapter() {
private lateinit var ui: UICanvas private lateinit var ui: UICanvas
override fun create() { override fun create() {
App.fontGame = GameFontBase(App.FONT_DIR, false, true, false,
Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest, false,
256, false, 0.5f, false
)
batch = SpriteBatch() batch = SpriteBatch()
camera = OrthographicCamera() camera = OrthographicCamera()
camera.setToOrtho(false, 800f, 600f) camera.setToOrtho(true, 800f, 600f)
camera.update() camera.update()
Gdx.gl20.glViewport(0, 0, 800, 600)
ui = DummyTogglePane() ui = DummyTogglePane()
ui.isVisible = true ui.isVisible = true
Gdx.input.inputProcessor = object : InputAdapter() {
override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
ui.touchUp(screenX, screenY, pointer, button)
return true
}
override fun keyTyped(character: Char): Boolean {
ui.keyTyped(character)
return true
}
override fun scrolled(amountX: Float, amountY: Float): Boolean {
ui.scrolled(amountX, amountY)
return true
}
override fun keyUp(keycode: Int): Boolean {
ui.keyUp(keycode)
return true
}
override fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
ui.touchDragged(screenX, screenY, pointer)
return true
}
override fun keyDown(keycode: Int): Boolean {
ui.keyDown(keycode)
return true
}
override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
ui.touchDown(screenX, screenY, pointer, button)
return true
}
}
} }
override fun render() { override fun render() {
gdxClearAndSetBlend(0.1f, 0.1f, 0.1f, 1f)
ui.update(Gdx.graphics.deltaTime) ui.update(Gdx.graphics.deltaTime)
ui.render(batch, camera) ui.render(batch, camera)
Gdx.graphics.setTitle("Terrarum UIElemTest $EMDASH F: ${Gdx.graphics.framesPerSecond}")
} }
@@ -51,46 +101,63 @@ class UIElemTest : ApplicationAdapter() {
} }
class DummyTogglePane : UICanvas() { class DummyTogglePane : UICanvas() {
private val button1 = UIItemToggleButton(this, 0, 0) private val button1 = UIItemToggleButton(this, 400, 100)
private val textin = UIItemTextLineInput(this, 400, 160, 400)
private val key1 = UIItemConfigKeycap(this, 0, 20, 4, Input.Keys.A) override var width = 800
private val key2 = UIItemConfigKeycap(this, 36, 20, 4, Input.Keys.S) override var height = 600
private val key3 = UIItemConfigKeycap(this, 36*2, 20, 4, Input.Keys.D)
private val key4 = UIItemConfigKeycap(this, 36*3, 20, 4, Input.Keys.F)
override var width = 100
override var height = 25
override var openCloseTime: Second = 0f override var openCloseTime: Second = 0f
private var timer = 0f private var timer = 0f
init { init {
button1.clickOnceListener = { _,_,_ ->
button1.toggle()
}
uiItems.add(button1) uiItems.add(button1)
uiItems.add(key1) uiItems.add(textin)
uiItems.add(key2)
uiItems.add(key3)
uiItems.add(key4)
} }
override fun updateUI(delta: Float) { override fun updateUI(delta: Float) {
timer += delta
if (timer >= 1f) {
timer -= 1f
button1.toggle()
}
uiItems.forEach { it.update(delta) } uiItems.forEach { it.update(delta) }
} }
override fun renderUI(batch: SpriteBatch, camera: Camera) { override fun renderUI(batch: SpriteBatch, camera: Camera) {
batch.inUse { batch.inUse {
batch.color = Color.CORAL
Toolkit.fillArea(batch, 0f, 0f, 800f, 600f)
batch.color = Color.WHITE
uiItems.forEach { it.render(batch, camera) } uiItems.forEach { it.render(batch, camera) }
} }
} }
override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
uiItems.forEach { it.touchDown(screenX, screenY, pointer, button) }
return true
}
override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
uiItems.forEach { it.touchUp(screenX, screenY, pointer, button) }
return true
}
override fun keyDown(keycode: Int): Boolean {
uiItems.forEach { it.keyDown(keycode) }
return true
}
override fun keyUp(keycode: Int): Boolean {
uiItems.forEach { it.keyUp(keycode) }
return true
}
override fun keyTyped(character: Char): Boolean {
uiItems.forEach { it.keyTyped(character) }
return true
}
override fun doOpening(delta: Float) { override fun doOpening(delta: Float) {
} }
@@ -115,6 +182,8 @@ fun main(args: Array<String>) {
appConfig.setResizable(false) appConfig.setResizable(false)
appConfig.setWindowedMode(800, 600) appConfig.setWindowedMode(800, 600)
appConfig.setForegroundFPS(60) appConfig.setForegroundFPS(60)
App.scr = TerrarumScreenSize(800, 600)
Lwjgl3Application(UIElemTest(), appConfig) Lwjgl3Application(UIElemTest(), appConfig)
} }

View File

@@ -9,8 +9,12 @@ import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.glutils.ShaderProgram import com.badlogic.gdx.graphics.glutils.ShaderProgram
import net.torvald.terrarum.* import net.torvald.terrarum.App
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.Yaml
import net.torvald.terrarum.inUse
import net.torvald.terrarum.modulebasegame.TerrarumIngame import net.torvald.terrarum.modulebasegame.TerrarumIngame
import net.torvald.terrarum.ui.Toolkit
import net.torvald.terrarum.ui.UINSMenu import net.torvald.terrarum.ui.UINSMenu
val UITEST1_WIDTH = 1280 val UITEST1_WIDTH = 1280
@@ -98,7 +102,7 @@ class UITestPad1 : ScreenAdapter() {
batch.inUse { batch.inUse {
batch.color = bgCol batch.color = bgCol
batch.fillRect(0f, 0f, 2048f, 2048f) Toolkit.fillArea(batch, 0, 0, 2048, 2048)
nsMenu.render(batch, camera) nsMenu.render(batch, camera)

View File

@@ -300,7 +300,7 @@ class BasicDebugInfoWindow : UICanvas() {
val histogramMax = histogram.screen_tiles.toFloat() val histogramMax = histogram.screen_tiles.toFloat()
batch.color = uiColour batch.color = uiColour
batch.fillRect(x.toFloat(), y.toFloat(), w.plus(1), h) Toolkit.fillArea(batch, x.toFloat(), y.toFloat(), w.plus(1), h)
batch.color = Color.GRAY batch.color = Color.GRAY
App.fontSmallNumbers.draw(batch, "0", x.toFloat(), y.toFloat() + h + 2) App.fontSmallNumbers.draw(batch, "0", x.toFloat(), y.toFloat() + h + 2)
App.fontSmallNumbers.draw(batch, "255", x.toFloat() + w + 1 - 8 * 3, y.toFloat() + h + 2) App.fontSmallNumbers.draw(batch, "255", x.toFloat() + w + 1 - 8 * 3, y.toFloat() + h + 2)
@@ -322,7 +322,7 @@ class BasicDebugInfoWindow : UICanvas() {
val bar_w = 1f val bar_w = 1f
batch.color = barColour[c] batch.color = barColour[c]
batch.fillRect(bar_x, bar_y, bar_w, -bar_h) Toolkit.fillArea(batch, bar_x, bar_y, bar_w, -bar_h)
} }
} }
blendNormal(batch) blendNormal(batch)

View File

@@ -5,7 +5,10 @@ import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.EMDASH import net.torvald.EMDASH
import net.torvald.terrarum.* import net.torvald.terrarum.App
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.TerrarumAppConfiguration
import net.torvald.terrarum.ccE
import net.torvald.terrarum.console.Authenticator import net.torvald.terrarum.console.Authenticator
import net.torvald.terrarum.console.CommandInterpreter import net.torvald.terrarum.console.CommandInterpreter
import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.AVKey
@@ -73,8 +76,8 @@ class ConsoleWindow : UICanvas() {
override fun renderUI(batch: SpriteBatch, camera: Camera) { override fun renderUI(batch: SpriteBatch, camera: Camera) {
// background // background
batch.color = UIColour batch.color = UIColour
batch.fillRect(drawOffX, drawOffY, width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, drawOffX, drawOffY, width.toFloat(), height.toFloat())
batch.fillRect(drawOffX, drawOffY, width.toFloat(), LINE_HEIGHT.toFloat()) Toolkit.fillArea(batch, drawOffX, drawOffY, width.toFloat(), LINE_HEIGHT.toFloat())
val input = commandInputPool!!.toString() val input = commandInputPool!!.toString()
val inputDrawWidth = App.fontGame.getWidth(input) val inputDrawWidth = App.fontGame.getWidth(input)
@@ -85,9 +88,9 @@ class ConsoleWindow : UICanvas() {
App.fontGame.draw(batch, input, 1f + drawOffX, drawOffY) App.fontGame.draw(batch, input, 1f + drawOffX, drawOffY)
batch.color = Color(0x7f7f7f_ff) batch.color = Color(0x7f7f7f_ff)
batch.fillRect(inputDrawWidth.toFloat() + drawOffX + 1, drawOffY, 2f, inputDrawHeight) Toolkit.fillArea(batch, inputDrawWidth.toFloat() + drawOffX + 1, drawOffY, 2f, inputDrawHeight)
batch.color = Color.WHITE batch.color = Color.WHITE
batch.fillRect(inputDrawWidth.toFloat() + drawOffX + 1, drawOffY, 1f, inputDrawHeight - 1) Toolkit.fillArea(batch, inputDrawWidth.toFloat() + drawOffX + 1, drawOffY, 1f, inputDrawHeight - 1)
// messages // messages

View File

@@ -12,7 +12,6 @@ import com.badlogic.gdx.utils.Disposable
import net.torvald.random.HQRNG import net.torvald.random.HQRNG
import net.torvald.terrarum.App import net.torvald.terrarum.App
import net.torvald.terrarum.CommonResourcePool import net.torvald.terrarum.CommonResourcePool
import net.torvald.terrarum.fillRect
import net.torvald.terrarum.modulebasegame.IngameRenderer import net.torvald.terrarum.modulebasegame.IngameRenderer
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import org.lwjgl.opengl.GL20 import org.lwjgl.opengl.GL20
@@ -30,10 +29,15 @@ object Toolkit : Disposable {
val baloonTile = TextureRegionPack("assets/graphics/gui/message_black_tileable.tga", 36, 36, flipY = true) val baloonTile = TextureRegionPack("assets/graphics/gui/message_black_tileable.tga", 36, 36, flipY = true)
val textureWhiteSquare = Texture(Gdx.files.internal("assets/graphics/ortho_line_tex_2px.tga"))
val textureWhiteCircle = Texture(Gdx.files.internal("assets/graphics/circle_512.tga"))
init { init {
App.disposables.add(this) App.disposables.add(this)
textureWhiteSquare.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest)
textureWhiteCircle.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear)
CommonResourcePool.addToLoadingList("toolkit_box_border") { CommonResourcePool.addToLoadingList("toolkit_box_border") {
TextureRegionPack(Gdx.files.internal("./assets/graphics/gui/box_border_flat_tileable.tga"), 1, 1) TextureRegionPack(Gdx.files.internal("./assets/graphics/gui/box_border_flat_tileable.tga"), 1, 1)
} }
@@ -44,6 +48,8 @@ object Toolkit : Disposable {
override fun dispose() { override fun dispose() {
baloonTile.dispose() baloonTile.dispose()
textureWhiteSquare.dispose()
textureWhiteCircle.dispose()
} }
val drawWidth: Int val drawWidth: Int
@@ -72,7 +78,19 @@ object Toolkit : Disposable {
} }
fun fillArea(batch: SpriteBatch, x: Int, y: Int, w: Int, h: Int) { fun fillArea(batch: SpriteBatch, x: Int, y: Int, w: Int, h: Int) {
batch.fillRect(x.toFloat(), y.toFloat(), w.toFloat(), h.toFloat()) batch.draw(textureWhiteSquare, x.toFloat(), y.toFloat(), w.toFloat(), h.toFloat())
}
fun fillArea(batch: SpriteBatch, x: Float, y: Float, w: Float, h: Float) {
batch.draw(textureWhiteSquare, x, y, w, h)
}
fun fillCircle(batch: SpriteBatch, x: Int, y: Int, w: Int, h: Int) {
batch.draw(textureWhiteCircle, x.toFloat(), y.toFloat(), w.toFloat(), h.toFloat())
}
fun drawStraightLine(batch: SpriteBatch, x: Int, y: Int, otherEnd: Int, thickness: Int, isVertical: Boolean) {
if (!isVertical)
fillArea(batch, x, y, otherEnd - x, thickness)
else
fillArea(batch, x, y, thickness, otherEnd - y)
} }
/** /**

View File

@@ -6,7 +6,6 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.g2d.TextureRegion import com.badlogic.gdx.graphics.g2d.TextureRegion
import net.torvald.terrarum.BlendMode import net.torvald.terrarum.BlendMode
import net.torvald.terrarum.blendNormal import net.torvald.terrarum.blendNormal
import net.torvald.terrarum.fillRect
/** /**
* Created by minjaesong on 2017-07-16. * Created by minjaesong on 2017-07-16.
@@ -48,17 +47,17 @@ open class UIItemImageButton(
if (highlighted) { if (highlighted) {
BlendMode.resolve(highlightBackBlendMode, batch) BlendMode.resolve(highlightBackBlendMode, batch)
batch.color = highlightBackCol batch.color = highlightBackCol
batch.fillRect(posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat())
} }
else if (mouseUp) { else if (mouseUp) {
BlendMode.resolve(activeBackBlendMode, batch) BlendMode.resolve(activeBackBlendMode, batch)
batch.color = activeBackCol batch.color = activeBackCol
batch.fillRect(posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat())
} }
else { else {
batch.color = backgroundCol batch.color = backgroundCol
BlendMode.resolve(backgroundBlendMode, batch) BlendMode.resolve(backgroundBlendMode, batch)
batch.fillRect(posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat())
} }

View File

@@ -5,7 +5,6 @@ import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import net.torvald.terrarum.BlendMode import net.torvald.terrarum.BlendMode
import net.torvald.terrarum.Second import net.torvald.terrarum.Second
import net.torvald.terrarum.fillRect
/** /**
@@ -107,12 +106,12 @@ class UIItemList<Item: UIItem>(
override fun render(batch: SpriteBatch, camera: Camera) { override fun render(batch: SpriteBatch, camera: Camera) {
batch.color = backgroundCol batch.color = backgroundCol
BlendMode.resolve(backgroundBlendMode, batch) BlendMode.resolve(backgroundBlendMode, batch)
batch.fillRect(posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat())
batch.color = highlightBackCol batch.color = highlightBackCol
BlendMode.resolve(highlightBackBlendMode, batch) BlendMode.resolve(highlightBackBlendMode, batch)
if (highlightY != null) { if (highlightY != null) {
batch.fillRect(posX.toFloat(), highlightY!!.toFloat(), width.toFloat(), UIItemTextButton.height.toFloat()) Toolkit.fillArea(batch, posX.toFloat(), highlightY!!.toFloat(), width.toFloat(), UIItemTextButton.height.toFloat())
} }
itemList.forEach { it.render(batch, camera) } itemList.forEach { it.render(batch, camera) }

View File

@@ -84,17 +84,17 @@ open class UIItemTextButton(
/*if (highlighted) { /*if (highlighted) {
BlendMode.resolve(highlightBackBlendMode, batch) BlendMode.resolve(highlightBackBlendMode, batch)
batch.color = highlightBackCol batch.color = highlightBackCol
batch.fillRect(posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat())
} }
else if (mouseUp) { else if (mouseUp) {
BlendMode.resolve(activeBackBlendMode, batch) BlendMode.resolve(activeBackBlendMode, batch)
batch.color = activeBackCol batch.color = activeBackCol
batch.fillRect(posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat())
} }
else { else {
batch.color = backgroundCol batch.color = backgroundCol
BlendMode.resolve(backgroundBlendMode, batch) BlendMode.resolve(backgroundBlendMode, batch)
batch.fillRect(posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat())
}*/ }*/

View File

@@ -232,12 +232,12 @@ class UIItemTextButtonList(
if (kinematic) { if (kinematic) {
batch.color = backgroundCol batch.color = backgroundCol
BlendMode.resolve(backgroundBlendMode, batch) BlendMode.resolve(backgroundBlendMode, batch)
batch.fillRect(posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat()) Toolkit.fillArea(batch, posX.toFloat(), posY.toFloat(), width.toFloat(), height.toFloat())
batch.color = highlightBackCol batch.color = highlightBackCol
BlendMode.resolve(highlightBackBlendMode, batch) BlendMode.resolve(highlightBackBlendMode, batch)
if (highlightY != null) { if (highlightY != null) {
batch.fillRect(posX.toFloat(), highlightY!!.toFloat(), width.toFloat(), itemHitboxSize.toFloat()) Toolkit.fillArea(batch, posX.toFloat(), highlightY!!.toFloat(), width.toFloat(), itemHitboxSize.toFloat())
} }
} }

View File

@@ -1,13 +1,14 @@
package net.torvald.terrarum.ui package net.torvald.terrarum.ui
import com.badlogic.gdx.Gdx import com.badlogic.gdx.Input
import com.badlogic.gdx.graphics.Camera import com.badlogic.gdx.graphics.Camera
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.Pixmap import com.badlogic.gdx.graphics.Pixmap
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.glutils.FrameBuffer import com.badlogic.gdx.graphics.glutils.FrameBuffer
import net.torvald.terrarum.App import net.torvald.terrarum.*
import net.torvald.terrarum.Terrarum import net.torvald.terrarum.gamecontroller.IngameController
import java.awt.Color
/** /**
* @param width width of the text input where the text gets drawn, not the entire item * @param width width of the text input where the text gets drawn, not the entire item
@@ -19,7 +20,7 @@ class UIItemTextLineInput(
parentUI: UICanvas, parentUI: UICanvas,
initialX: Int, initialY: Int, initialX: Int, initialY: Int,
override val width: Int, override val width: Int,
override val height: Int, override val height: Int = 24,
var placeholder: String? = null, var placeholder: String? = null,
val enablePasteButton: Boolean = true, val enablePasteButton: Boolean = true,
val enableLanguageButton: Boolean = false val enableLanguageButton: Boolean = false
@@ -28,33 +29,96 @@ class UIItemTextLineInput(
companion object { companion object {
val TEXTINPUT_COL_TEXT = Color.WHITE val TEXTINPUT_COL_TEXT = Color.WHITE
val TEXTINPUT_COL_GREY = Color.GRAY val TEXTINPUT_COL_GREY = Color.GRAY
val TEXTINPUT_COL_BACKGROUND = Color(0x28282888)
const val CURSOR_BLINK_TIME = 1f / 3f
} }
private val fbo = FrameBuffer(Pixmap.Format.RGBA8888, width, height, true) private val fbo = FrameBuffer(Pixmap.Format.RGBA8888, width - 4, height - 4, true)
var isActive = true var isActive = true
var isGreyedOut = false var isGreyedOut = false
val cursorX = 0 var cursorX = 0 // 1 per code point
var cursorDrawX = 0 // pixelwise point
var cursorBlinkCounter = 0f
var cursorOn = true
val keybuf = StringBuilder() val keybuf = StringBuilder()
private var fboUpdateLatch = false
override fun update(delta: Float) { override fun update(delta: Float) {
super.update(delta) super.update(delta)
if (Terrarum.mouseDown) { if (Terrarum.mouseDown) {
isActive = mouseUp //isActive = mouseUp
} }
// process keypresses // process keypresses
if (isActive) { if (isActive) {
IngameController.withKeyboardEvent { (_, char, _, keycodes) ->
fboUpdateLatch = true
if (keycodes.contains(Input.Keys.BACKSPACE) && cursorX > 0) {
cursorX -= 1
val charLen = Character.charCount(keybuf.codePointAt(cursorX))
keybuf.delete(keybuf.length - charLen, keybuf.length)
cursorDrawX = App.fontGame.getWidth("$keybuf")
}
// accept:
// - literal "<"
// - keysymbol that does not start with "<" (not always has length of 1 because UTF-16)
else if (char != null && char[0].code >= 32 && (char == "<" || !char.startsWith("<"))) {
keybuf.append(char)
cursorDrawX = App.fontGame.getWidth("$keybuf")
cursorX += 1
}
}
cursorBlinkCounter += delta
while (cursorBlinkCounter >= CURSOR_BLINK_TIME) {
cursorBlinkCounter -= CURSOR_BLINK_TIME
cursorOn = !cursorOn
}
} }
} }
override fun render(batch: SpriteBatch, camera: Camera) { override fun render(batch: SpriteBatch, camera: Camera) {
batch.end()
if (fboUpdateLatch) {
fboUpdateLatch = false
fbo.inAction(camera as OrthographicCamera, batch) { batch.inUse {
gdxClearAndSetBlend(0f, 0f, 0f, 0f)
it.color = Color.WHITE
App.fontGame.draw(it, "$keybuf", 0f, 0f)
} }
}
batch.begin()
batch.color = TEXTINPUT_COL_BACKGROUND
Toolkit.fillArea(batch, posX, posY, width, height)
batch.color = if (isActive) TEXTINPUT_COL_TEXT else TEXTINPUT_COL_GREY
Toolkit.drawBoxBorder(batch, posX - 1, posY - 1, width + 2, height + 2)
batch.draw(fbo.colorBufferTexture, posX + 2f, posY + 2f, fbo.width.toFloat(), fbo.height.toFloat())
if (cursorOn) {
val oldBatchCol = batch.color.cpy()
batch.color = batch.color.mul(0.5f,0.5f,0.5f,1f)
Toolkit.fillArea(batch, posX + cursorDrawX + 3, posY, 2, 24)
batch.color = oldBatchCol
Toolkit.fillArea(batch, posX + cursorDrawX + 3, posY, 1, 23)
}
super.render(batch, camera) super.render(batch, camera)
} }

View File

@@ -171,7 +171,7 @@ class UINSMenu(
// draw title bar // draw title bar
batch.color = titleBackCol batch.color = titleBackCol
BlendMode.resolve(titleBlendMode, batch) BlendMode.resolve(titleBlendMode, batch)
batch.fillRect(it.ui.posX.toFloat(), it.ui.posY.toFloat() - LINE_HEIGHT, it.ui.width.toFloat(), LINE_HEIGHT.toFloat()) Toolkit.fillArea(batch, it.ui.posX.toFloat(), it.ui.posY.toFloat() - LINE_HEIGHT, it.ui.width.toFloat(), LINE_HEIGHT.toFloat())
batch.color = titleTextCol batch.color = titleTextCol
blendNormal(batch) blendNormal(batch)

View File

@@ -3,11 +3,16 @@ package net.torvald.terrarum.worlddrawer
import com.badlogic.gdx.graphics.g2d.SpriteBatch import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.jme3.math.FastMath import com.jme3.math.FastMath
import net.torvald.colourutil.ColourTemp import net.torvald.colourutil.ColourTemp
import net.torvald.terrarum.* import net.torvald.terrarum.App
import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZEF import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZEF
import net.torvald.terrarum.blendMul
import net.torvald.terrarum.blendNormal
import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.blockstats.BlockStats import net.torvald.terrarum.blockstats.BlockStats
import net.torvald.terrarum.gameworld.GameWorld import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.ui.Toolkit
import kotlin.math.roundToInt
/** /**
* Created by minjaesong on 2015-12-31. * Created by minjaesong on 2015-12-31.
@@ -58,9 +63,9 @@ object FeaturesDrawer {
blendMul(batch) blendMul(batch)
batch.color = ColourTemp(colTemp) batch.color = ColourTemp(colTemp)
batch.fillRect(0f, 0f, Toolkit.fillArea(batch, 0, 0,
App.scr.width * if (zoom < 1) 1f / zoom else zoom, (App.scr.width * if (zoom < 1) 1f / zoom else zoom).roundToInt(),
App.scr.height * if (zoom < 1) 1f / zoom else zoom (App.scr.height * if (zoom < 1) 1f / zoom else zoom).roundToInt()
) )
blendNormal(batch) blendNormal(batch)