[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / input / handler / mouse / CursorMouseInputHandler.kt
diff --git a/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CursorMouseInputHandler.kt b/core/src/ru/deadsoftware/cavedroid/game/input/handler/mouse/CursorMouseInputHandler.kt
index 9093680c299d7f46d68acf79c8236eba49a0b843..c1f2af584a8ea931c8ec5f0b5d9429507c18038b 100644 (file)
package ru.deadsoftware.cavedroid.game.input.handler.mouse
+import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindMouseInputHandler
import com.badlogic.gdx.math.MathUtils
import ru.deadsoftware.cavedroid.MainConfig
import ru.deadsoftware.cavedroid.game.GameItemsHolder
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.IMouseInputHandler
import ru.deadsoftware.cavedroid.game.input.action.MouseInputAction
import ru.deadsoftware.cavedroid.game.input.action.keys.MouseInputActionKey
import ru.deadsoftware.cavedroid.game.mobs.Mob
import javax.inject.Inject
@GameScope
+@BindMouseInputHandler
class CursorMouseInputHandler @Inject constructor(
private val mainConfig: MainConfig,
private val mobsController: MobsController,
private val gameWindowsManager: GameWindowsManager,
private val gameItemsHolder: GameItemsHolder,
private val tooltipManager: TooltipManager,
-) : IGameInputHandler<MouseInputAction> {
+) : IMouseInputHandler {
private val player get() = mobsController.player
private fun handleWalkTouch() {
player.cursorX = player.mapX + player.direction.basis
player.cursorY = player.upperMapY
+ player.headRotation = 0f
for (i in 1..2) {
if (gameWorld.isCurrentBlockAutoselectable()) {
}
private fun getPlayerHeadRotation(mouseWorldX: Float, mouseWorldY: Float): Float {
- val h = mouseWorldX - player.x
+ val h = mouseWorldX - (player.x + player.width / 2)
val v = mouseWorldY - player.y
return MathUtils.atan(v / h) * MathUtils.radDeg
player.cursorY = worldY.bl
player.headRotation = getPlayerHeadRotation(worldX, worldY)
+
+ if (worldX < player.x + player.width / 2) {
+ player.setDir(Mob.Direction.LEFT)
+ } else {
+ player.setDir(Mob.Direction.RIGHT)
+ }
}
private fun getCreativeTooltip(action: MouseInputAction): String? {
}
player.checkCursorBounds(gameWorld)
- setPlayerDirectionToCursor()
+
+ if (player.controlMode == Player.ControlMode.WALK && mainConfig.isTouch) {
+ setPlayerDirectionToCursor()
+ }
if (player.cursorX != pastCursorX || player.cursorY != pastCursorY) {
player.blockDamage = 0f