DEADSOFTWARE

Add crafting
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / input / handler / keyboard / CloseGameWindowKeyboardInputHandler.kt
index 0111949d495635c4ac0c5fd79483fbdbfe0a8cbb..705f9aa0e71a5ae60a64c8ac1e411c8cbf511a45 100644 (file)
@@ -5,12 +5,16 @@ import ru.deadsoftware.cavedroid.game.GameUiWindow
 import ru.deadsoftware.cavedroid.game.input.IGameInputHandler
 import ru.deadsoftware.cavedroid.game.input.action.KeyboardInputAction
 import ru.deadsoftware.cavedroid.game.input.action.keys.KeyboardInputActionKey
+import ru.deadsoftware.cavedroid.game.mobs.MobsController
+import ru.deadsoftware.cavedroid.game.objects.DropController
 import ru.deadsoftware.cavedroid.game.windows.GameWindowsManager
 import javax.inject.Inject
 
 @GameScope
 class CloseGameWindowKeyboardInputHandler @Inject constructor(
-    private val gameWindowsManager: GameWindowsManager
+    private val gameWindowsManager: GameWindowsManager,
+    private val mobsController: MobsController,
+    private val dropController: DropController,
 ) : IGameInputHandler<KeyboardInputAction> {
 
     override fun checkConditions(action: KeyboardInputAction): Boolean {
@@ -19,6 +23,17 @@ class CloseGameWindowKeyboardInputHandler @Inject constructor(
     }
 
     override fun handle(action: KeyboardInputAction) {
+        val selectedItem = gameWindowsManager.currentWindow?.selectedItem
+        if (selectedItem != null) {
+            for (i in 1 .. selectedItem.amount) {
+                dropController.addDrop(
+                    /* x = */ mobsController.player.x + (32f * mobsController.player.direction.basis),
+                    /* y = */ mobsController.player.y,
+                    /* item = */ selectedItem.item
+                )
+            }
+            gameWindowsManager.currentWindow?.selectedItem = null
+        }
         gameWindowsManager.closeWindow()
     }
 }
\ No newline at end of file