DEADSOFTWARE

Drop items on Q and add empty hearts to health bar
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / mobs / player / Inventory.kt
index 31f4c7801a4b35c4756879ca5a60d762975ca89a..b82aa44bcb775991b4ff12e175a511925620c28b 100644 (file)
@@ -12,7 +12,11 @@ class Inventory(
     gameItemsHolder: GameItemsHolder
 ) : Serializable {
 
+    @Transient
+    private lateinit var fallbackItem: InventoryItem
+
     init {
+        fallbackItem = gameItemsHolder.fallbackItem.toInventoryItem()
         if (size < 0 || hotbarSize < 0 || hotbarSize > size) {
             throw IllegalArgumentException("Invalid inventory sizes: hotbarSize=$hotbarSize; size=$size")
         }
@@ -34,6 +38,7 @@ class Inventory(
     val activeItem get() = items[activeSlot]
 
     fun initItems(gameItemsHolder: GameItemsHolder) {
+        fallbackItem = gameItemsHolder.fallbackItem.toInventoryItem()
         items.forEach { item ->
             item.init(gameItemsHolder)
         }
@@ -80,6 +85,14 @@ class Inventory(
             endIndex = size - 1
         )
 
-        _items[0] = item.toInventoryItem()
+        _items[0] = item.toInventoryItem(item.params.maxStack)
+    }
+
+    @JvmOverloads
+    fun decreaseCurrentItemAmount(count: Int = 1) {
+        activeItem.subtract(count)
+        if (activeItem.amount <= 0) {
+            _items[activeSlot] = fallbackItem
+        }
     }
 }
\ No newline at end of file