X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fgame%2Finput%2Fhandler%2Ftouch%2FJoystickInputHandler.kt;h=d717c1850807a74ae32b86e045239db845f713b2;hb=456e76ce31c05500ab7d9e78e2b02019143929a4;hp=d4fb451ee761a1033aafeb6f661fe918afb76bf9;hpb=f353e00257a70bb9cdee0e783558c68f5cb0d3d6;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/touch/JoystickInputHandler.kt b/core/src/ru/deadsoftware/cavedroid/game/input/handler/touch/JoystickInputHandler.kt index d4fb451..d717c18 100644 --- a/core/src/ru/deadsoftware/cavedroid/game/input/handler/touch/JoystickInputHandler.kt +++ b/core/src/ru/deadsoftware/cavedroid/game/input/handler/touch/JoystickInputHandler.kt @@ -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 { +) : 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(