From 07d609ca720c5768998a63a703cc644e8d6fac70 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 24 Oct 2017 07:25:05 +0900 Subject: [PATCH] fixed uiItem stupidity with uiCanvas; it activated even if its parent is invisible --- assets/testimage2.png | Bin 20725 -> 0 bytes .../torvald/terrarum/UIItemInventoryCatBar.kt | 10 ++- .../terrarum/UIItemInventoryElemSimple.kt | 7 +- src/net/torvald/terrarum/ui/UICanvas.kt | 63 ++++++++++++------ .../torvald/terrarum/ui/UIInventoryFull.kt | 13 ++++ src/net/torvald/terrarum/ui/UIItem.kt | 20 +++--- .../terrarum/ui/UIItemInventoryDynamicList.kt | 33 ++++++++- 7 files changed, 110 insertions(+), 36 deletions(-) delete mode 100644 assets/testimage2.png diff --git a/assets/testimage2.png b/assets/testimage2.png deleted file mode 100644 index 266935e75f211255290aebc33bb78e12ffab2d64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20725 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 diff --git a/src/net/torvald/terrarum/UIItemInventoryCatBar.kt b/src/net/torvald/terrarum/UIItemInventoryCatBar.kt index 647b03f8b..70640fc37 100644 --- a/src/net/torvald/terrarum/UIItemInventoryCatBar.kt +++ b/src/net/torvald/terrarum/UIItemInventoryCatBar.kt @@ -75,9 +75,9 @@ class UIItemInventoryCatBar( // procedurally generate texture val pixmap = Pixmap(catIcons.tileW + buttonGapSize.floorInt(), 1, Pixmap.Format.RGBA8888) for (x in 0 until pixmap.width.plus(1).ushr(1)) { // eqv. of ceiling the half-int - val col = if (x == 0) 0xffffff_80.toInt() - else if (x == 1) 0xffffff_c0.toInt() - else 0xffffff_ff.toInt() + val col = /*if (x == 0)*/ /*0xffffff_80.toInt()*/ + /*else if (x == 1)*/ /*0xffffff_c0.toInt()*/ + /*else */ 0xffffff_ff.toInt() pixmap.drawPixel(x, 0, col) pixmap.drawPixel(pixmap.width - (x + 1), 0, col) @@ -143,6 +143,10 @@ class UIItemInventoryCatBar( // colour determined by UI items themselves buttons.forEach { it.render(batch, camera) } + + blendNormal(batch) + + // underline batch.color = underlineColour batch.drawStraightLine(posX.toFloat(), posY + height - 1f, posX + width.toFloat(), 1f, false) diff --git a/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt b/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt index 6bdccb193..f5a5b171f 100644 --- a/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt +++ b/src/net/torvald/terrarum/UIItemInventoryElemSimple.kt @@ -111,9 +111,12 @@ class UIItemInventoryElemSimple( override fun keyDown(keycode: Int): Boolean { if (item != null && Terrarum.ingame != null && keycode in Input.Keys.NUM_1..Input.Keys.NUM_0) { + println("keydown elemgrid") + + val inventory = Terrarum.ingame!!.player.inventory val slot = if (keycode == Input.Keys.NUM_0) 9 else keycode - Input.Keys.NUM_1 - val currentSlotItem = inventory?.getQuickBar(slot) + val currentSlotItem = inventory.getQuickBar(slot) inventory.setQuickBar( @@ -137,6 +140,8 @@ class UIItemInventoryElemSimple( } override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { + //println("touchdown elemgrid") + if (item != null && Terrarum.ingame != null) { // equip da shit diff --git a/src/net/torvald/terrarum/ui/UICanvas.kt b/src/net/torvald/terrarum/ui/UICanvas.kt index 8c57dc378..776026cde 100644 --- a/src/net/torvald/terrarum/ui/UICanvas.kt +++ b/src/net/torvald/terrarum/ui/UICanvas.kt @@ -111,39 +111,60 @@ abstract class UICanvas( } open fun mouseMoved(screenX: Int, screenY: Int): Boolean { - uiItems.forEach { it.mouseMoved(screenX, screenY) } - handler.subUIs.forEach { it.mouseMoved(screenX, screenY) } - return true + if (this.isVisible) { + uiItems.forEach { it.mouseMoved(screenX, screenY) } + handler.subUIs.forEach { it.mouseMoved(screenX, screenY) } + return true + } + else return false } open fun touchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean { - uiItems.forEach { it.touchDragged(screenX, screenY, pointer) } - handler.subUIs.forEach { it.touchDragged(screenX, screenY, pointer) } - return true + if (this.isVisible) { + uiItems.forEach { it.touchDragged(screenX, screenY, pointer) } + handler.subUIs.forEach { it.touchDragged(screenX, screenY, pointer) } + return true + } + else return false } open fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { - uiItems.forEach { it.touchDown(screenX, screenY, pointer, button) } - handler.subUIs.forEach { it.touchDown(screenX, screenY, pointer, button) } - return true + if (this.isVisible) { + uiItems.forEach { it.touchDown(screenX, screenY, pointer, button) } + handler.subUIs.forEach { it.touchDown(screenX, screenY, pointer, button) } + return true + } + else return false } open fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { - uiItems.forEach { it.touchUp(screenX, screenY, pointer, button) } - handler.subUIs.forEach { it.touchUp(screenX, screenY, pointer, button) } - return true + if (this.isVisible) { + uiItems.forEach { it.touchUp(screenX, screenY, pointer, button) } + handler.subUIs.forEach { it.touchUp(screenX, screenY, pointer, button) } + return true + } + else return false } open fun scrolled(amount: Int): Boolean { - uiItems.forEach { it.scrolled(amount) } - handler.subUIs.forEach { it.scrolled(amount) } - return true + if (this.isVisible) { + uiItems.forEach { it.scrolled(amount) } + handler.subUIs.forEach { it.scrolled(amount) } + return true + } + else return false } open fun keyDown(keycode: Int): Boolean { - uiItems.forEach { it.keyDown(keycode) } - handler.subUIs.forEach { it.keyDown(keycode) } - return true + if (this.isVisible) { + uiItems.forEach { it.keyDown(keycode) } + handler.subUIs.forEach { it.keyDown(keycode) } + return true + } + else return false } open fun keyUp(keycode: Int): Boolean { - uiItems.forEach { it.keyUp(keycode) } - handler.subUIs.forEach { it.keyUp(keycode) } - return true + if (this.isVisible) { + uiItems.forEach { it.keyUp(keycode) } + handler.subUIs.forEach { it.keyUp(keycode) } + return true + } + else return false } open fun keyTyped(character: Char): Boolean { return false diff --git a/src/net/torvald/terrarum/ui/UIInventoryFull.kt b/src/net/torvald/terrarum/ui/UIInventoryFull.kt index 5f5caf870..434b54374 100644 --- a/src/net/torvald/terrarum/ui/UIInventoryFull.kt +++ b/src/net/torvald/terrarum/ui/UIInventoryFull.kt @@ -1,6 +1,8 @@ package net.torvald.terrarum.ui +import com.badlogic.gdx.Gdx import com.badlogic.gdx.graphics.Camera +import com.badlogic.gdx.graphics.GL20 import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.terrarum.RunningEnvironment import net.torvald.terrarum.Terrarum @@ -89,10 +91,21 @@ class UIInventoryFull( addItem(it) } + + catBar.selectionChangeListener = { old, new -> rebuildList() } + + + + rebuildList() } override fun updateUI(delta: Float) { + if (handler.openFired) { + rebuildList() + } + + catBar.update(delta) itemList?.update(delta) } diff --git a/src/net/torvald/terrarum/ui/UIItem.kt b/src/net/torvald/terrarum/ui/UIItem.kt index 50e34a606..94821da9b 100644 --- a/src/net/torvald/terrarum/ui/UIItem.kt +++ b/src/net/torvald/terrarum/ui/UIItem.kt @@ -61,17 +61,17 @@ abstract class UIItem(var parentUI: UICanvas) { // do not replace parentUI to UI // kind of listener implementation - var updateListener: ((Float) -> Unit)? = null - var keyDownListener: ((Int) -> Unit)? = null - var keyUpListener: ((Int) -> Unit)? = null - var mouseMovedListener: ((Int, Int) -> Unit)? = null - var touchDraggedListener: ((Int, Int, Int) -> Unit)? = null - var touchDownListener: ((Int, Int, Int, Int) -> Unit)? = null - var touchUpListener: ((Int, Int, Int, Int) -> Unit)? = null - var scrolledListener: ((Int) -> Unit)? = null + open var updateListener: ((Float) -> Unit)? = null + open var keyDownListener: ((Int) -> Unit)? = null + open var keyUpListener: ((Int) -> Unit)? = null + open var mouseMovedListener: ((Int, Int) -> Unit)? = null + open var touchDraggedListener: ((Int, Int, Int) -> Unit)? = null + open var touchDownListener: ((Int, Int, Int, Int) -> Unit)? = null + open var touchUpListener: ((Int, Int, Int, Int) -> Unit)? = null + open var scrolledListener: ((Int) -> Unit)? = null - var clickOnceListener: ((Int, Int, Int) -> Unit)? = null - var clickOnceListenerFired = false + open var clickOnceListener: ((Int, Int, Int) -> Unit)? = null + open var clickOnceListenerFired = false diff --git a/src/net/torvald/terrarum/ui/UIItemInventoryDynamicList.kt b/src/net/torvald/terrarum/ui/UIItemInventoryDynamicList.kt index 5da035cea..71360e361 100644 --- a/src/net/torvald/terrarum/ui/UIItemInventoryDynamicList.kt +++ b/src/net/torvald/terrarum/ui/UIItemInventoryDynamicList.kt @@ -59,7 +59,7 @@ class UIItemInventoryDynamicList( private val selectedIcon: Int get() = inventoryUI.catSelectedIcon - private val compactViewCat = setOf(4, 6, 7, 9) // potions, blocks, walls, all (spritesheet order) + private val compactViewCat = setOf(3, 4, 6, 7, 9) // ingredients, potions, blocks, walls, all (spritesheet order) var itemPage = 0 var itemPageCount = 1 // TODO total size of current category / items.size @@ -190,4 +190,35 @@ class UIItemInventoryDynamicList( itemList.forEach { it.dispose() } itemGrid.forEach { it.dispose() } } + + override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { + super.touchDown(screenX, screenY, pointer, button) + + items.forEach { if (it.mouseUp) it.touchDown(screenX, screenY, pointer, button) } + return true + } + + override fun touchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { + items.forEach { if (it.mouseUp) it.touchUp(screenX, screenY, pointer, button) } + + return true + } + + override fun keyDown(keycode: Int): Boolean { + super.keyDown(keycode) + + items.forEach { if (it.mouseUp) it.keyDown(keycode) } + rebuild() + + return true + } + + override fun keyUp(keycode: Int): Boolean { + super.keyUp(keycode) + + items.forEach { if (it.mouseUp) it.keyUp(keycode) } + rebuild() + + return true + } }