DEADSOFTWARE

Add food
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / mobs / player / Inventory.kt
index c6dea8bc878f0d523be0fc447979961080fc94df..43f298c876e9702fb5e675e5b429602b22fbf13d 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) {
@@ -126,4 +133,10 @@ class Inventory(
     fun decreaseCurrentItemAmount(count: Int = 1) {
         decreaseItemAmount(activeSlot, count)
     }
+
+    fun clear() {
+        for (i in _items.indices) {
+            _items[i] = fallbackItem
+        }
+    }
 }
\ No newline at end of file