From 263298a18dab6378af97a933d8c6dcacb14cdf0c Mon Sep 17 00:00:00 2001 From: minjaesong Date: Wed, 29 Jun 2022 17:44:38 +0900 Subject: [PATCH] seemingly working crafting window --- .../modulebasegame/gameactors/UICrafting.kt | 39 +++++++++++-------- .../ui/UIItemCraftingCandidateGrid.kt | 4 +- .../ui/UIItemInventoryItemGrid.kt | 4 +- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/net/torvald/terrarum/modulebasegame/gameactors/UICrafting.kt b/src/net/torvald/terrarum/modulebasegame/gameactors/UICrafting.kt index c0649b928..5917458df 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameactors/UICrafting.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameactors/UICrafting.kt @@ -4,7 +4,6 @@ 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.App.printdbg import net.torvald.terrarum.UIItemInventoryCatBar.Companion.CAT_ALL import net.torvald.terrarum.gameitems.GameItem import net.torvald.terrarum.itemproperties.CraftingCodex @@ -142,13 +141,12 @@ class UICrafting(val full: UIInventoryFull) : UICanvas(), HasInventory { ) buttonCraft = UIItemTextButton(this, "GAME_ACTION_CRAFT", thisOffsetX + 3 + buttonWidth + listGap, craftButtonsY, buttonWidth, true, alignment = UIItemTextButton.Companion.Alignment.CENTRE, hasBorder = true) spinnerCraftCount = UIItemSpinner(this, thisOffsetX + 1, craftButtonsY, 1, 1, 100, 1, buttonWidth, numberToTextFunction = {"×\u200A${it.toInt()}"}) - - buttonCraft.touchDownListener = { _,_,_,_ -> - printdbg(this, "Recipe to go: ${recipeClicked}") + spinnerCraftCount.selectionChangeListener = { + itemListIngredients.numberMultiplier = it.toLong() + itemListIngredients.rebuild(catAll) + itemListCraftable.numberMultiplier = it.toLong() + itemListCraftable.rebuild(catAll) } - // make grid mode buttons work together -// itemListCraftable.gridModeButtons[0].touchDownListener = { _,_,_,_ -> setCompact(false) } -// itemListCraftable.gridModeButtons[1].touchDownListener = { _,_,_,_ -> setCompact(true) } // player inventory to the right itemListPlayer = UIItemInventoryItemGrid( @@ -172,6 +170,22 @@ class UICrafting(val full: UIInventoryFull) : UICanvas(), HasInventory { // itemListPlayer.gridModeButtons[0].touchDownListener = { _,_,_,_ -> setCompact(false) } // itemListPlayer.gridModeButtons[1].touchDownListener = { _,_,_,_ -> setCompact(true) } + buttonCraft.touchDownListener = { _,_,_,_ -> + getPlayerInventory().let { player -> recipeClicked?.let { recipe -> + val mult = spinnerCraftCount.value.toLong() + itemListIngredients.getInventory().itemList.forEach { (itm, qty) -> + player.remove(itm, qty * mult) + } + player.add(recipe.product, recipe.moq * mult) + itemListPlayer.rebuild(catAll) + itemListIngredients.rebuild(catAll) + itemListCraftable.rebuild(catAll) + } } + } + // make grid mode buttons work together +// itemListCraftable.gridModeButtons[0].touchDownListener = { _,_,_,_ -> setCompact(false) } +// itemListCraftable.gridModeButtons[1].touchDownListener = { _,_,_,_ -> setCompact(true) } + handler.allowESCtoClose = true addUIitem(itemListCraftable) @@ -190,6 +204,8 @@ class UICrafting(val full: UIInventoryFull) : UICanvas(), HasInventory { // reset spinner spinnerCraftCount.value = 1 spinnerCraftCount.fboUpdateLatch = true + itemListIngredients.numberMultiplier = 1L + itemListCraftable.numberMultiplier = 1L // reset selected recipe status recipeClicked = null highlightCraftingCandidateButton(null) @@ -205,15 +221,6 @@ class UICrafting(val full: UIInventoryFull) : UICanvas(), HasInventory { openingClickLatched = Terrarum.mouseDown - // reset spinner - /*spinnerCraftCount.value = 1 - spinnerCraftCount.fboUpdateLatch = true - // reset selected recipe status - recipeClicked = null - highlightCraftingCandidateButton(null) - ingredients.clear() - itemListIngredients.rebuild(catAll)*/ - UIItemInventoryItemGrid.tooltipShowing.clear() INGAME.setTooltipMessage(null) } diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemCraftingCandidateGrid.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemCraftingCandidateGrid.kt index e5b4ab322..a20d4608e 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemCraftingCandidateGrid.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemCraftingCandidateGrid.kt @@ -32,8 +32,6 @@ class UIItemCraftingCandidateGrid( val craftingRecipes = ArrayList() - init { - } internal val recipesSortList = ArrayList() // a dual to the [inventorySortList] which contains the actual recipes instead of crafting recipes @@ -61,7 +59,7 @@ class UIItemCraftingCandidateGrid( try { val sortListItem = recipesSortList[k + itemPage * items.size] items[k].item = ItemCodex[sortListItem.product] - items[k].amount = sortListItem.moq + items[k].amount = sortListItem.moq * numberMultiplier items[k].itemImage = ItemCodex.getItemImage(sortListItem.product) items[k].extraInfo = sortListItem diff --git a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt index 37581a02f..304e4bf32 100644 --- a/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt +++ b/src/net/torvald/terrarum/modulebasegame/ui/UIItemInventoryItemGrid.kt @@ -50,6 +50,8 @@ open class UIItemInventoryItemGrid( //override var oldPosX = posX //override var oldPosY = posY + var numberMultiplier = 1L + private val hash = System.nanoTime() override val width = horizontalCells * UIItemInventoryElemSimple.height + (horizontalCells - 1) * listGap @@ -425,7 +427,7 @@ open class UIItemInventoryItemGrid( try { val sortListItem = inventorySortList[k + itemPage * items.size] items[k].item = ItemCodex[sortListItem.itm] - items[k].amount = sortListItem.qty + items[k].amount = sortListItem.qty * numberMultiplier items[k].itemImage = ItemCodex.getItemImage(sortListItem.itm) // set quickslot number