From 620932056c4501706e7afdf93b0185a9ea70e4a0 Mon Sep 17 00:00:00 2001
From: miepzerino <o.skotnik@gmail.com>
Date: Sat, 23 Dec 2023 01:59:24 +0000
Subject: [PATCH] Fixed drilling, touchingdirections and ruleTile tiles

---
 Assets/Scripts/PlayerController.cs |  131 +++++++++++++++++++++++--------------------
 1 files changed, 69 insertions(+), 62 deletions(-)

diff --git a/Assets/Scripts/PlayerController.cs b/Assets/Scripts/PlayerController.cs
index 1ab8309..ed9f0d7 100644
--- a/Assets/Scripts/PlayerController.cs
+++ b/Assets/Scripts/PlayerController.cs
@@ -85,7 +85,7 @@
     {
         get
         {
-            return animator.GetBool(AnimationStrings.canMove) && !PauseMenu.GameIsPaused;
+            return animator.GetBool(AnimationStrings.canMove) && !PauseMenu.GameIsPaused && !IsDrilling;
         }
     }
 
@@ -113,70 +113,74 @@
 
     private void FixedUpdate()
     {
-        if (moveInput.y == 0)
+        if (CanMove)
         {
-            if (rb.velocity.y <= maxFallSpeed)
+            if (moveInput.y == 0)
             {
-                // max fall speed, dont accelerate more
-                rb.velocity = new Vector2(moveInput.x * moveSpeed, maxFallSpeed);
+                if (rb.velocity.y <= maxFallSpeed)
+                {
+                    // max fall speed, dont accelerate more
+                    rb.velocity = new Vector2(moveInput.x * moveSpeed, maxFallSpeed);
+                }
+                else
+                {
+                    // normal fall
+                    rb.velocity = new Vector2(moveInput.x * moveSpeed, rb.velocity.y);
+                }
             }
             else
             {
-                // normal fall
-                rb.velocity = new Vector2(moveInput.x * moveSpeed, rb.velocity.y);
+                if (rb.velocity.y < 0 && moveInput.y > 0)
+                {
+                    // falling but moving upwards
+                    rb.velocity = new Vector2(moveInput.x * moveSpeed, (moveInput.y * moveSpeed) + rb.velocity.y);
+                }
+                else
+                {
+                    // moving upwards no falling
+                    rb.velocity = new Vector2(moveInput.x * moveSpeed, (moveInput.y * moveSpeed));
+                }
             }
-        }
-        else
-        {
-            if (rb.velocity.y < 0 && moveInput.y > 0)
+            if (touchingDirections.IsGrounded)
             {
-                // falling but moving upwards
-                rb.velocity = new Vector2(moveInput.x * moveSpeed, (moveInput.y * moveSpeed) + rb.velocity.y);
+                if (maxFallSpeedCurrent < maxFallSpeedDamge)
+                {
+                    TakeFallDamage(Math.Abs((int)maxFallSpeedCurrent));
+                    maxFallSpeedCurrent = 0;
+                }
             }
-            else
-            {
-                // moving upwards no falling
-                rb.velocity = new Vector2(moveInput.x * moveSpeed, (moveInput.y * moveSpeed));
-            }
-        }
-        if (touchingDirections.IsGrounded)
-        {
-            if (maxFallSpeedCurrent < maxFallSpeedDamge)
-            {
-                TakeFallDamage(Math.Abs((int)maxFallSpeedCurrent));
-                maxFallSpeedCurrent = 0;
-            }
-        }
-        else if (IsFlying)
-        {
-            maxFallSpeedCurrent = rb.velocity.y;
-        }
-        else
-        {
-            if (maxFallSpeedCurrent > rb.velocity.y)
+            else if (IsFlying)
             {
                 maxFallSpeedCurrent = rb.velocity.y;
             }
-        }
-        if (touchingDirections.IsGrounded && moveInput.y < 0 && !IsDrilling)
-        {
-            //IsDrilling = true;
-            Drill(DrillDirection.Down);
-        }
-        if (touchingDirections.IsGrounded && touchingDirections.IsAtWall && moveInput.x != 0 && !IsDrilling)
-        {
-            //IsDrilling = true;
-            if (touchingDirections.IsAtWallLeft)
+            else
             {
-                Drill(DrillDirection.Left);
+                if (maxFallSpeedCurrent > rb.velocity.y)
+                {
+                    maxFallSpeedCurrent = rb.velocity.y;
+                }
             }
-            else if (touchingDirections.IsAtWallRight)
+            if (touchingDirections.IsGrounded && moveInput.y < 0 && !IsDrilling)
             {
-                Drill(DrillDirection.Right);
+                //IsDrilling = true;
+                Drill(DrillDirection.Down);
+            }
+
+            if (touchingDirections.IsGrounded && moveInput.x != 0 && !IsDrilling)
+            {
+                if (touchingDirections.IsAtWallLeft && moveInput.x < 0)
+                {
+                    Drill(DrillDirection.Left);
+                }
+                else if (touchingDirections.IsAtWallRight && moveInput.x > 0)
+                {
+                    Drill(DrillDirection.Right);
+                }
             }
         }
         if (IsDrilling)
         {
+            rb.velocity = Vector2.zero;
             if (timeSinceDrill > drillingTime)
             {
                 IsDrilling = false;
@@ -191,22 +195,19 @@
 
     public void OnMove(InputAction.CallbackContext context)
     {
-        if (CanMove)
-        {
-            moveInput = context.ReadValue<Vector2>();
+        moveInput = context.ReadValue<Vector2>();
 
-            IsMoving = moveInput.x != 0;
+        IsMoving = moveInput.x != 0;
 
-            IsFlying = (moveInput.y != 0);
+        IsFlying = (moveInput.y != 0);
 
-            SetFacingDirection(moveInput);
-
-        }
-        else
+        SetFacingDirection(moveInput);
+        if (IsDrilling)
         {
             IsMoving = false;
             IsFlying = false;
-            moveInput = Vector2.zero;
+            //moveInput = Vector2.zero;
+
         }
     }
 
@@ -214,13 +215,19 @@
     {
         IsDrilling = true;
         ContactPoint2D[] contactPoints = new ContactPoint2D[1];
+        Debug.Log("drillDirection: " + drillDirection.ToString());
         //rb.GetContacts(contactPoints);
-        if (drillDirection == DrillDirection.Down)
+        switch (drillDirection)
         {
-            touchingDirections.groundHits[0].collider.GetContacts(contactPoints);
-        } else if (drillDirection == DrillDirection.Left || drillDirection == DrillDirection.Right)
-        {
-            touchingDirections.wallHits[0].collider.GetContacts(contactPoints);
+            case DrillDirection.Left:
+                touchingDirections.wallHitsLeft[0].collider.GetContacts(contactPoints);
+                break;
+            case DrillDirection.Right:
+                touchingDirections.wallHitsRight[0].collider.GetContacts(contactPoints);
+                break;
+            case DrillDirection.Down:
+                touchingDirections.groundHits[0].collider.GetContacts(contactPoints);
+                break;
         }
         CharacterEvents.characterDrill.Invoke(contactPoints[0], drillDirection);
     }

--
Gitblit v1.9.3