From d1a6873bc0109f3287967100b7a3f5f7624f5d5e Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 30 Jan 2024 23:35:16 +0900 Subject: [PATCH] smelter: clicking on the navbar no longer resets the cell selection --- .../modulebasegame/ui/UIItemInventoryItemGrid.kt | 8 ++++++++ .../modulebasegame/ui/UIItemListNavBarVertical.kt | 5 +++++ .../terrarum/modulebasegame/ui/UISmelterBasic.kt | 11 ++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt index b9d3d93bc..896232889 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt @@ -29,6 +29,8 @@ import kotlin.math.floor * Number of grids: 10x7 * Number of lists: 2x7 * + * `mouseUp()` will be false if the mouse is on the mode/scroll/etc bar, use `navRemoCon.mouseUp()` for that. + * * Created by minjaesong on 2017-10-21. */ open class UIItemInventoryItemGrid( @@ -209,11 +211,17 @@ open class UIItemInventoryItemGrid( var items: Array = itemList + /** + * @param mode 0 if mode has changed to non-compact mode, 1 if compact + */ + var setListModeCallback = { mode: Int ->} + open var isCompactMode = false // this is INIT code set(value) { field = value items = if (value) itemGrid else itemList rebuild(currentFilter, currentAppendix) + setListModeCallback(value.toInt()) } private val iconPosX = if (drawScrollOnRightside) diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemListNavBarVertical.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemListNavBarVertical.kt index e394a6d50..4e6670797 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemListNavBarVertical.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemListNavBarVertical.kt @@ -25,6 +25,10 @@ class UIItemListNavBarVertical( override val width = UIItemListNavBarVertical.WIDTH + override val mouseUp: Boolean + get() = itemRelativeMouseX - 8 in 0 until width && + itemRelativeMouseY + 8 in 0 until height + companion object { const val WIDTH = 28 const val LIST_TO_CONTROL_GAP = 12 @@ -128,6 +132,7 @@ class UIItemListNavBarVertical( batch.color = Toolkit.Theme.COL_CELL_FILL Toolkit.fillArea(batch, iconPosX - 4, getIconPosY(0) - 8, width, height) // cell border +// batch.color = if (mouseUp) colourTheme.cellHighlightMouseUpCol else colourTheme.cellHighlightNormalCol // just to test the mouseUp batch.color = colourTheme.cellHighlightNormalCol Toolkit.drawBoxBorder(batch, iconPosX - 4, getIconPosY(0) - 8, width, height) diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt b/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt index c886ab1af..3cc0f7fc1 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UISmelterBasic.kt @@ -72,6 +72,8 @@ class UISmelterBasic(val smelter: FixtureSmelterBasic) : UICanvas( fun getPlayerInventory(): FixtureInventory = INGAME.actorNowPlaying!!.inventory + private var listModeButtonPushed = false + init { CommonResourcePool.addToLoadingList("basegame_gui_smelter_icons") { TextureRegionPack(ModMgr.getGdxFile("basegame", "gui/smelter_icons.tga"), 20, 20) @@ -289,8 +291,15 @@ class UISmelterBasic(val smelter: FixtureSmelterBasic) : UICanvas( override fun touchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean { super.touchDown(screenX, screenY, pointer, button) - if (!oreItemSlot.mouseUp && !fireboxItemSlot.mouseUp && !productItemslot.mouseUp && !playerThings.itemList.mouseUp) { + if (!oreItemSlot.mouseUp && + !fireboxItemSlot.mouseUp && + !productItemslot.mouseUp && + !playerThings.itemList.mouseUp && + !playerThings.itemList.navRemoCon.mouseUp + ) { + clickedOn = 0 + oreItemSlot.forceHighlighted = false fireboxItemSlot.forceHighlighted = false itemListUpdate()