X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Finput%2Fhandler%2Fmouse%2FCloseGameWindowMouseInputHandler.kt;h=4fb0879ec4567481d1d09e7df42cc43db5595461;hb=3a443514027417133d7a7e18766720dfea028a87;hp=8a7fdb46ff4559af473fb7dc1a40bcbc287c7d6d;hpb=6b49d51c59f6d639d949d1e9c264f7f144a305ab;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 8a7fdb4..4fb0879 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 @@ -1,33 +1,37 @@ package ru.deadsoftware.cavedroid.game.input.handler.mouse +import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindMouseInputHandler import com.badlogic.gdx.graphics.g2d.TextureRegion import ru.deadsoftware.cavedroid.game.GameScope import ru.deadsoftware.cavedroid.game.GameUiWindow import ru.deadsoftware.cavedroid.game.ui.windows.GameWindowsManager -import ru.deadsoftware.cavedroid.game.input.IGameInputHandler +import ru.deadsoftware.cavedroid.game.input.IMouseInputHandler 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.game.objects.drop.DropController import ru.deadsoftware.cavedroid.misc.Assets import javax.inject.Inject @GameScope +@BindMouseInputHandler class CloseGameWindowMouseInputHandler @Inject constructor( private val gameWindowsManager: GameWindowsManager, private val mobsController: MobsController, private val dropController: DropController, -) : IGameInputHandler { +) : IMouseInputHandler { 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"]) + private val furnaceInventoryTexture get() = requireNotNull(Assets.textureRegions["furnace"]) + private val chestInventoryTexture get() = requireNotNull(Assets.textureRegions["chest"]) override fun checkConditions(action: MouseInputAction): Boolean { return gameWindowsManager.getCurrentWindow() != GameUiWindow.NONE && (action.actionKey is MouseInputActionKey.Left || action.actionKey is MouseInputActionKey.Screen) && - !action.actionKey.touchUp && + action.actionKey.touchUp && !isInsideWindow(action, getCurrentWindowTexture()) } @@ -36,6 +40,8 @@ class CloseGameWindowMouseInputHandler @Inject constructor( GameUiWindow.CREATIVE_INVENTORY -> creativeInventoryTexture GameUiWindow.SURVIVAL_INVENTORY -> survivalInventoryTexture GameUiWindow.CRAFTING_TABLE -> craftingInventoryTexture + GameUiWindow.FURNACE -> furnaceInventoryTexture + GameUiWindow.CHEST -> chestInventoryTexture else -> throw UnsupportedOperationException("Cant close window ${window.name}") } } @@ -43,13 +49,12 @@ class CloseGameWindowMouseInputHandler @Inject constructor( 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 + /* item = */ selectedItem.item, + /* count = */ selectedItem.amount, ) - } gameWindowsManager.currentWindow?.selectedItem = null } gameWindowsManager.closeWindow()