X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Finput%2Fhandler%2Fkeyboard%2FCloseGameWindowKeyboardInputHandler.kt;h=8bf9b1c25d666408b1c3c1a70ac1e9f14bd9dd23;hb=0d6ab84418440a30f2de555cb30ce21af8dac12e;hp=0111949d495635c4ac0c5fd79483fbdbfe0a8cbb;hpb=cf4113d5bfd3fca7c3815bf14a214eebd822216c;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/CloseGameWindowKeyboardInputHandler.kt b/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/CloseGameWindowKeyboardInputHandler.kt index 0111949..8bf9b1c 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/CloseGameWindowKeyboardInputHandler.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/input/handler/keyboard/CloseGameWindowKeyboardInputHandler.kt @@ -2,23 +2,40 @@ package ru.deadsoftware.cavedroid.game.input.handler.keyboard import ru.deadsoftware.cavedroid.game.GameScope import ru.deadsoftware.cavedroid.game.GameUiWindow -import ru.deadsoftware.cavedroid.game.input.IGameInputHandler +import ru.deadsoftware.cavedroid.game.input.IKeyboardInputHandler import ru.deadsoftware.cavedroid.game.input.action.KeyboardInputAction import ru.deadsoftware.cavedroid.game.input.action.keys.KeyboardInputActionKey -import ru.deadsoftware.cavedroid.game.windows.GameWindowsManager +import ru.deadsoftware.cavedroid.game.mobs.MobsController +import ru.deadsoftware.cavedroid.game.objects.drop.DropController +import ru.deadsoftware.cavedroid.game.ui.windows.GameWindowsManager +import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindKeyboardInputHandler import javax.inject.Inject @GameScope +@BindKeyboardInputHandler class CloseGameWindowKeyboardInputHandler @Inject constructor( - private val gameWindowsManager: GameWindowsManager -) : IGameInputHandler { + private val gameWindowsManager: GameWindowsManager, + private val mobsController: MobsController, + private val dropController: DropController, +) : IKeyboardInputHandler { override fun checkConditions(action: KeyboardInputAction): Boolean { return action.actionKey is KeyboardInputActionKey.OpenInventory && - action.isKeyDown && gameWindowsManager.getCurrentWindow() != GameUiWindow.NONE + !action.isKeyDown && gameWindowsManager.getCurrentWindow() != GameUiWindow.NONE } 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