DEADSOFTWARE

Abstract falling block
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / mobs / player / Inventory.kt
index c6dea8bc878f0d523be0fc447979961080fc94df..3012d6675a3346bed978a5183b342120d31ab0b9 100644 (file)
@@ -65,7 +65,7 @@ class Inventory(
         for (i in _items.indices) {
             val inventoryItem = _items[i]
 
-            if (item == inventoryItem.item && inventoryItem.canBeAdded(drop.amount)) {
+            if (item == inventoryItem.item && inventoryItem.canBeAdded()) {
                 return i
             }
         }
@@ -90,15 +90,22 @@ class Inventory(
         val inventoryItem = _items[slot]
 
         if (inventoryItem.item == drop.item) {
-            inventoryItem.add(drop.amount)
+            if (inventoryItem.canBeAdded(drop.amount)) {
+                inventoryItem.add(drop.amount)
+                drop.pickedUp = true
+            } else {
+                val addCount = inventoryItem.item.params.maxStack - inventoryItem.amount
+                inventoryItem.add(addCount)
+                drop.subtract(addCount)
+                pickDrop(drop)
+            }
         } else {
             _items[slot] = drop.item.toInventoryItem(drop.amount)
             if (slot == activeSlot) {
                 showCurrentItemTooltip()
             }
+            drop.pickedUp = true
         }
-
-        drop.pickedUp = true
     }
 
     fun addItem(item: Item) {