DEADSOFTWARE

Change generated modules package and move annotations
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / input / handler / touch / JoystickInputHandler.kt
index d4fb451ee761a1033aafeb6f661fe918afb76bf9..d717c1850807a74ae32b86e045239db845f713b2 100644 (file)
@@ -1,14 +1,13 @@
 package ru.deadsoftware.cavedroid.game.input.handler.touch
 
+import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindMouseInputHandler
 import com.badlogic.gdx.utils.TimeUtils
 import ru.deadsoftware.cavedroid.MainConfig
 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.Joystick
+import ru.deadsoftware.cavedroid.game.input.*
 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.Mob
 import ru.deadsoftware.cavedroid.game.mobs.MobsController
 import ru.deadsoftware.cavedroid.game.mobs.player.Player
@@ -17,12 +16,13 @@ import ru.deadsoftware.cavedroid.game.world.GameWorld
 import javax.inject.Inject
 
 @GameScope
+@BindMouseInputHandler
 class JoystickInputHandler @Inject constructor(
     private val mainConfig: MainConfig,
     private val mobsController: MobsController,
     private val gameWindowsManager: GameWindowsManager,
     private val gameWorld: GameWorld,
-) : IGameInputHandler<MouseInputAction> {
+) : IMouseInputHandler {
 
     private var activateTimeMs = 0L
     private var cursorTimeoutMs = 100L
@@ -31,7 +31,7 @@ class JoystickInputHandler @Inject constructor(
         set(value) {
             if (!value) {
                 resetVelocity()
-                if (TimeUtils.timeSinceMillis(activateTimeMs) < 100L &&
+                if (TimeUtils.timeSinceMillis(activateTimeMs) < 200L &&
                     mobsController.player.controlMode != Player.ControlMode.CURSOR) {
                     mobsController.player.jump()
                 }
@@ -76,10 +76,13 @@ class JoystickInputHandler @Inject constructor(
     private fun handleCursor() {
         val joystick = mainConfig.joystick ?: return
 
-        if (TimeUtils.timeSinceMillis(cursorTimeoutMs) < 200L) {
+        if (TimeUtils.timeSinceMillis(cursorTimeoutMs) < 150L) {
             return
         }
 
+        val pastCursorX = mobsController.player.cursorX
+        val pastCursorY = mobsController.player.cursorY
+
         if (Math.abs(joystick.activeX - joystick.centerX) >= Joystick.RADIUS / 2) {
             mobsController.player.cursorX += if (joystick.activeX > joystick.centerX) 1 else -1
             cursorTimeoutMs = TimeUtils.millis()
@@ -91,6 +94,10 @@ class JoystickInputHandler @Inject constructor(
         }
 
         mobsController.player.checkCursorBounds(gameWorld)
+
+        if (mobsController.player.cursorX != pastCursorX || mobsController.player.cursorY != pastCursorY) {
+            mobsController.player.blockDamage = 0f
+        }
     }
 
     private fun handleDragged() {
@@ -106,6 +113,10 @@ class JoystickInputHandler @Inject constructor(
         val joystick = mainConfig.joystick ?: return
         val joyVector = joystick.getVelocityVector()
 
+        if (mobsController.player.isFlyMode) {
+            joyVector.scl(2f);
+        }
+
         mobsController.player.velocity.x = joyVector.x
 
         mobsController.player.setDir(