DEADSOFTWARE

Update version script
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / input / handler / mouse / UseItemMouseInputHandler.kt
diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/UseItemMouseInputHandler.kt b/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/UseItemMouseInputHandler.kt
deleted file mode 100644 (file)
index 04bc619..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-package ru.deadsoftware.cavedroid.game.input.handler.mouse
-
-import com.badlogic.gdx.Gdx
-import com.badlogic.gdx.utils.Timer
-import ru.deadsoftware.cavedroid.game.GameScope
-import ru.deadsoftware.cavedroid.game.GameUiWindow
-import ru.deadsoftware.cavedroid.game.actions.placeToBackgroundAction
-import ru.deadsoftware.cavedroid.game.actions.placeToForegroundAction
-import ru.deadsoftware.cavedroid.game.actions.placeblock.IPlaceBlockAction
-import ru.deadsoftware.cavedroid.game.actions.useblock.IUseBlockAction
-import ru.deadsoftware.cavedroid.game.actions.useitem.IUseItemAction
-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.isInsideHotbar
-import ru.deadsoftware.cavedroid.game.mobs.MobsController
-import ru.deadsoftware.cavedroid.game.model.item.Item
-import ru.deadsoftware.cavedroid.game.ui.windows.GameWindowsManager
-import ru.deadsoftware.cavedroid.game.world.GameWorld
-import javax.inject.Inject
-
-@GameScope
-class UseItemMouseInputHandler @Inject constructor(
-    private val mobsController: MobsController,
-    private val useItemActionMap: Map<String, @JvmSuppressWildcards IUseItemAction>,
-    private val placeBlockActionMap: Map<String, @JvmSuppressWildcards IPlaceBlockAction>,
-    private val useBlockActionMap: Map<String, @JvmSuppressWildcards IUseBlockAction>,
-    private val gameWindowsManager: GameWindowsManager,
-    private val gameWorld: GameWorld,
-) : IGameInputHandler<MouseInputAction> {
-
-    private var buttonHoldTask: Timer.Task? = null
-
-    override fun checkConditions(action: MouseInputAction): Boolean {
-        return buttonHoldTask?.isScheduled == true ||
-                !isInsideHotbar(action) &&
-                gameWindowsManager.getCurrentWindow() == GameUiWindow.NONE &&
-                action.actionKey is MouseInputActionKey.Right
-    }
-
-    private fun cancelHold() {
-        buttonHoldTask?.cancel()
-        buttonHoldTask = null
-    }
-
-    private fun handleHold(action: MouseInputAction) {
-        cancelHold()
-
-        val player = mobsController.player
-        val item = player.inventory.activeItem.item
-        player.startHitting(false)
-        player.stopHitting()
-
-        if (item is Item.Placeable) {
-            placeBlockActionMap.placeToBackgroundAction(
-                item = item,
-                x = player.cursorX,
-                y = player.cursorY
-            )
-        }
-    }
-
-    private fun handleDown(action: MouseInputAction) {
-        cancelHold()
-        buttonHoldTask = object : Timer.Task() {
-            override fun run() {
-                handleHold(action)
-            }
-
-        }
-        Timer.schedule(buttonHoldTask, TOUCH_HOLD_TIME_SEC)
-    }
-
-    private fun tryUseBlock() {
-        val block = gameWorld.getForeMap(mobsController.player.cursorX, mobsController.player.cursorY)
-            .takeIf { !it.isNone() }
-            ?: gameWorld.getBackMap(mobsController.player.cursorX, mobsController.player.cursorY)
-                .takeIf { !it.isNone() }
-            ?: return
-
-        useBlockActionMap[block.params.key]?.perform(
-            block = block,
-            x = mobsController.player.cursorX,
-            y = mobsController.player.cursorY
-        )
-    }
-
-    private fun handleUp(action: MouseInputAction) {
-        val player = mobsController.player
-        val item = player.inventory.activeItem.item
-        cancelHold()
-
-        player.startHitting(false)
-        player.stopHitting()
-
-        if (item is Item.Placeable) {
-            placeBlockActionMap.placeToForegroundAction(
-                item = item,
-                x = player.cursorX,
-                y = player.cursorY
-            )
-        } else if (item is Item.Usable) {
-            useItemActionMap[item.useActionKey]?.perform(item, player.cursorX, player.cursorY)
-                ?: Gdx.app.error(TAG, "use item action ${item.useActionKey} not found");
-        } else {
-            tryUseBlock()
-        }
-    }
-
-    override fun handle(action: MouseInputAction) {
-        if (action.actionKey !is MouseInputActionKey.Right) {
-            if (buttonHoldTask?.isScheduled == true) {
-                cancelHold()
-            }
-            return
-        }
-
-        if (action.actionKey.touchUp && buttonHoldTask?.isScheduled == true) {
-            handleUp(action)
-        } else if (!action.actionKey.touchUp) {
-            handleDown(action)
-        }
-    }
-
-    companion object {
-        private const val TAG = "UseItemMouseInputActionHandler"
-        private const val TOUCH_HOLD_TIME_SEC = 0.5f
-    }
-}
\ No newline at end of file