X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Finput%2Fhandler%2Fmouse%2FCloseGameWindowMouseInputHandler.kt;h=bee22dc621d77b89b2029dbfec40eb6b05935cdc;hb=13157246344c2b94d24354040f0f2d2fb5beb7ea;hp=1f76039c78fe1575c5fcf6c878e1f69d68cfb30d;hpb=ab3f0bb705ce7d243f5732ae9e2c1dcf917a8963;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CloseGameWindowMouseInputHandler.kt b/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CloseGameWindowMouseInputHandler.kt index 1f76039..bee22dc 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CloseGameWindowMouseInputHandler.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CloseGameWindowMouseInputHandler.kt @@ -3,21 +3,26 @@ package ru.deadsoftware.cavedroid.game.input.handler.mouse import com.badlogic.gdx.graphics.g2d.TextureRegion import ru.deadsoftware.cavedroid.game.GameScope import ru.deadsoftware.cavedroid.game.GameUiWindow -import ru.deadsoftware.cavedroid.game.windows.GameWindowsManager +import ru.deadsoftware.cavedroid.game.ui.windows.GameWindowsManager import ru.deadsoftware.cavedroid.game.input.IGameInputHandler import ru.deadsoftware.cavedroid.game.input.action.MouseInputAction import ru.deadsoftware.cavedroid.game.input.action.keys.MouseInputActionKey import ru.deadsoftware.cavedroid.game.input.isInsideWindow +import ru.deadsoftware.cavedroid.game.mobs.MobsController +import ru.deadsoftware.cavedroid.game.objects.DropController import ru.deadsoftware.cavedroid.misc.Assets import javax.inject.Inject @GameScope class CloseGameWindowMouseInputHandler @Inject constructor( private val gameWindowsManager: GameWindowsManager, + private val mobsController: MobsController, + private val dropController: DropController, ) : IGameInputHandler { private val creativeInventoryTexture get() = requireNotNull(Assets.textureRegions["creative"]) private val survivalInventoryTexture get() = requireNotNull(Assets.textureRegions["survival"]) + private val craftingInventoryTexture get() = requireNotNull(Assets.textureRegions["crafting_table"]) override fun checkConditions(action: MouseInputAction): Boolean { return gameWindowsManager.getCurrentWindow() != GameUiWindow.NONE && @@ -30,11 +35,23 @@ class CloseGameWindowMouseInputHandler @Inject constructor( return when (val window = gameWindowsManager.getCurrentWindow()) { GameUiWindow.CREATIVE_INVENTORY -> creativeInventoryTexture GameUiWindow.SURVIVAL_INVENTORY -> survivalInventoryTexture + GameUiWindow.CRAFTING_TABLE -> craftingInventoryTexture else -> throw UnsupportedOperationException("Cant close window ${window.name}") } } override fun handle(action: MouseInputAction) { + 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() }