DEADSOFTWARE

Better touch inventory controls
[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.DropController
7 import ru.deadsoftware.cavedroid.game.ui.TooltipManager
8 import ru.deadsoftware.cavedroid.game.ui.windows.inventory.AbstractInventoryWindow
9 import ru.deadsoftware.cavedroid.game.ui.windows.inventory.CraftingInventoryWindow
10 import ru.deadsoftware.cavedroid.game.ui.windows.inventory.CreativeInventoryWindow
11 import ru.deadsoftware.cavedroid.game.ui.windows.inventory.SurvivalInventoryWindow
12 import javax.inject.Inject
14 @GameScope
15 class GameWindowsManager @Inject constructor(
16 private val tooltipManager: TooltipManager,
17 private val mobsController: MobsController,
18 private val dropController: DropController,
19 ) {
21 var creativeScrollAmount = 0
22 var isDragging = false
24 var currentWindow: AbstractInventoryWindow? = null
26 @JvmName("getCurrentWindowType")
27 fun getCurrentWindow(): GameUiWindow {
28 return currentWindow?.type ?: GameUiWindow.NONE
29 }
31 fun openInventory() {
32 if (mobsController.player.gameMode == 1) {
33 currentWindow = CreativeInventoryWindow()
34 } else {
35 currentWindow = SurvivalInventoryWindow()
36 }
37 }
39 fun openCrafting() {
40 currentWindow = CraftingInventoryWindow()
41 }
43 fun closeWindow() {
44 (currentWindow as? SurvivalInventoryWindow)?.let { window ->
45 window.craftingItems.forEach { item ->
46 item?.item?.let {
47 dropController.addDrop(mobsController.player.x, mobsController.player.y, it, item.amount)
48 }
49 }
50 }
52 (currentWindow as? CraftingInventoryWindow)?.let { window ->
53 window.craftingItems.forEach { item ->
54 item?.item?.let {
55 dropController.addDrop(mobsController.player.x, mobsController.player.y, it, item.amount)
56 }
57 }
58 }
60 currentWindow = null
61 tooltipManager.showMouseTooltip("")
62 }
64 }