DEADSOFTWARE

Add preferences
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / input / handler / mouse / CursorMouseInputHandler.kt
index 9093680c299d7f46d68acf79c8236eba49a0b843..454337eefb744f6f8a4803283299ddd28a2e694a 100644 (file)
@@ -56,6 +56,7 @@ class CursorMouseInputHandler @Inject constructor(
     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()) {
@@ -70,7 +71,7 @@ class CursorMouseInputHandler @Inject constructor(
     }
 
     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
@@ -87,6 +88,12 @@ class CursorMouseInputHandler @Inject constructor(
         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? {
@@ -124,7 +131,10 @@ class CursorMouseInputHandler @Inject constructor(
         }
 
         player.checkCursorBounds(gameWorld)
-        setPlayerDirectionToCursor()
+
+        if (player.controlMode == Player.ControlMode.WALK && mainConfig.isTouch) {
+            setPlayerDirectionToCursor()
+        }
 
         if (player.cursorX != pastCursorX || player.cursorY != pastCursorY) {
             player.blockDamage = 0f