DEADSOFTWARE

Add my repo for automultibind
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / ui / windows / GameWindowsManager.kt
index 1b6611af1e06601615ebc4d6802801c6491cee86..8d32f94e098322301c342a0308e9c7b43208f1a9 100644 (file)
@@ -1,10 +1,12 @@
 package ru.deadsoftware.cavedroid.game.ui.windows
 
+import ru.deadsoftware.cavedroid.game.GameItemsHolder
 import ru.deadsoftware.cavedroid.game.GameScope
 import ru.deadsoftware.cavedroid.game.GameUiWindow
 import ru.deadsoftware.cavedroid.game.mobs.MobsController
+import ru.deadsoftware.cavedroid.game.objects.container.Chest
 import ru.deadsoftware.cavedroid.game.objects.drop.DropController
-import ru.deadsoftware.cavedroid.game.objects.furnace.Furnace
+import ru.deadsoftware.cavedroid.game.objects.container.Furnace
 import ru.deadsoftware.cavedroid.game.ui.TooltipManager
 import ru.deadsoftware.cavedroid.game.ui.windows.inventory.*
 import javax.inject.Inject
@@ -14,6 +16,7 @@ class GameWindowsManager @Inject constructor(
     private val tooltipManager: TooltipManager,
     private val mobsController: MobsController,
     private val dropController: DropController,
+    private val gameItemsHolder: GameItemsHolder,
 ) {
 
     var creativeScrollAmount = 0
@@ -30,7 +33,7 @@ class GameWindowsManager @Inject constructor(
         if (mobsController.player.gameMode == 1) {
             currentWindow = CreativeInventoryWindow()
         } else {
-            currentWindow = SurvivalInventoryWindow()
+            currentWindow = SurvivalInventoryWindow(gameItemsHolder)
         }
     }
 
@@ -38,24 +41,18 @@ class GameWindowsManager @Inject constructor(
         currentWindow = FurnaceInventoryWindow(furnace)
     }
 
+    fun openChest(chest: Chest) {
+        currentWindow = ChestInventoryWindow(chest)
+    }
+
     fun openCrafting() {
-        currentWindow = CraftingInventoryWindow()
+        currentWindow = CraftingInventoryWindow(gameItemsHolder)
     }
 
     fun closeWindow() {
-        (currentWindow as? SurvivalInventoryWindow)?.let { window ->
-            window.craftingItems.forEach { item ->
-                item?.item?.let {
-                    dropController.addDrop(mobsController.player.x, mobsController.player.y, it, item.amount)
-                }
-            }
-        }
-
-        (currentWindow as? CraftingInventoryWindow)?.let { window ->
+        (currentWindow as? AbstractInventoryWindowWithCraftGrid)?.let { window ->
             window.craftingItems.forEach { item ->
-                item?.item?.let {
-                    dropController.addDrop(mobsController.player.x, mobsController.player.y, it, item.amount)
-                }
+                dropController.addDrop(mobsController.player.x, mobsController.player.y, item)
             }
         }