DEADSOFTWARE

Fix furnace bugs
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / ui / windows / GameWindowsManager.kt
1 package ru.deadsoftware.cavedroid.game.ui.windows
3 import ru.deadsoftware.cavedroid.game.GameScope
4 import ru.deadsoftware.cavedroid.game.GameUiWindow
5 import ru.deadsoftware.cavedroid.game.mobs.MobsController
6 import ru.deadsoftware.cavedroid.game.objects.drop.DropController
7 import ru.deadsoftware.cavedroid.game.objects.furnace.Furnace
8 import ru.deadsoftware.cavedroid.game.ui.TooltipManager
9 import ru.deadsoftware.cavedroid.game.ui.windows.inventory.*
10 import javax.inject.Inject
12 @GameScope
13 class GameWindowsManager @Inject constructor(
14 private val tooltipManager: TooltipManager,
15 private val mobsController: MobsController,
16 private val dropController: DropController,
17 ) {
19 var creativeScrollAmount = 0
20 var isDragging = false
22 var currentWindow: AbstractInventoryWindow? = null
24 @JvmName("getCurrentWindowType")
25 fun getCurrentWindow(): GameUiWindow {
26 return currentWindow?.type ?: GameUiWindow.NONE
27 }
29 fun openInventory() {
30 if (mobsController.player.gameMode == 1) {
31 currentWindow = CreativeInventoryWindow()
32 } else {
33 currentWindow = SurvivalInventoryWindow()
34 }
35 }
37 fun openFurnace(furnace: Furnace) {
38 currentWindow = FurnaceInventoryWindow(furnace)
39 }
41 fun openCrafting() {
42 currentWindow = CraftingInventoryWindow()
43 }
45 fun closeWindow() {
46 (currentWindow as? SurvivalInventoryWindow)?.let { window ->
47 window.craftingItems.forEach { item ->
48 item?.item?.let {
49 dropController.addDrop(mobsController.player.x, mobsController.player.y, it, item.amount)
50 }
51 }
52 }
54 (currentWindow as? CraftingInventoryWindow)?.let { window ->
55 window.craftingItems.forEach { item ->
56 item?.item?.let {
57 dropController.addDrop(mobsController.player.x, mobsController.player.y, it, item.amount)
58 }
59 }
60 }
62 currentWindow = null
63 tooltipManager.showMouseTooltip("")
64 }
66 }