DEADSOFTWARE

Add my repo for automultibind
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / ui / windows / GameWindowsManager.kt
index 56d92d6f8a8de8f7dd381f7971eba99d08565a0c..8d32f94e098322301c342a0308e9c7b43208f1a9 100644 (file)
@@ -1,14 +1,14 @@
 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.DropController
+import ru.deadsoftware.cavedroid.game.objects.container.Chest
+import ru.deadsoftware.cavedroid.game.objects.drop.DropController
+import ru.deadsoftware.cavedroid.game.objects.container.Furnace
 import ru.deadsoftware.cavedroid.game.ui.TooltipManager
-import ru.deadsoftware.cavedroid.game.ui.windows.inventory.AbstractInventoryWindow
-import ru.deadsoftware.cavedroid.game.ui.windows.inventory.CraftingInventoryWindow
-import ru.deadsoftware.cavedroid.game.ui.windows.inventory.CreativeInventoryWindow
-import ru.deadsoftware.cavedroid.game.ui.windows.inventory.SurvivalInventoryWindow
+import ru.deadsoftware.cavedroid.game.ui.windows.inventory.*
 import javax.inject.Inject
 
 @GameScope
@@ -16,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,30 +31,28 @@ class GameWindowsManager @Inject constructor(
 
     fun openInventory() {
         if (mobsController.player.gameMode == 1) {
-            currentWindow = CreativeInventoryWindow(GameUiWindow.CREATIVE_INVENTORY)
+            currentWindow = CreativeInventoryWindow()
         } else {
-            currentWindow = SurvivalInventoryWindow(GameUiWindow.SURVIVAL_INVENTORY)
+            currentWindow = SurvivalInventoryWindow(gameItemsHolder)
         }
     }
 
+    fun openFurnace(furnace: Furnace) {
+        currentWindow = FurnaceInventoryWindow(furnace)
+    }
+
+    fun openChest(chest: Chest) {
+        currentWindow = ChestInventoryWindow(chest)
+    }
+
     fun openCrafting() {
-        currentWindow = CraftingInventoryWindow(GameUiWindow.CRAFTING_TABLE)
+        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)
             }
         }