]> Dogcows Code - chaz/carfire/blobdiff - CarFire/CarFire/CarFire/Player.cs
better player movement (walls are no longer sticky)
[chaz/carfire] / CarFire / CarFire / CarFire / Player.cs
index b84b04846158bd63d4f04830a4759c6cd7bc61c2..124851cac0b1e55a356362823a5d6afe9fb8cfae 100644 (file)
@@ -88,22 +88,23 @@ namespace CarFire
             bool moveRight = keysPressed.Contains(Keys.Right);\r
             bool moveUp = keysPressed.Contains(Keys.Up);\r
             bool moveDown = keysPressed.Contains(Keys.Down);\r
-            Point destination = MovementManager.GetNeighborCell(mMotion.Coordinates, moveLeft, moveRight, moveUp, moveDown);\r
-            if (!keysPressed.Contains(Keys.LeftControl))\r
+\r
+            List<Point> possibleDestinations = new List<Point>();\r
+            possibleDestinations.Add(MovementManager.GetNeighbor(mMotion.Coordinates, moveLeft, moveRight, moveUp, moveDown));\r
+            possibleDestinations.AddRange(MovementManager.GetNeighbors(mMotion.Coordinates, possibleDestinations[0]));\r
+\r
+            Direction direction = Direction.None;\r
+            foreach (Point destination in possibleDestinations)\r
             {\r
                 if (game.IsCellOpen(destination))\r
                 {\r
-                    mMotion.Update(timeSpan, moveLeft, moveRight, moveUp, moveDown);\r
-                }\r
-                else\r
-                {\r
-                    mMotion.Update(timeSpan);\r
+                    direction = MovementManager.GetDirection(mMotion.Coordinates, destination);\r
+                    break;\r
                 }\r
             }\r
-            else\r
-            {\r
-                mMotion.LockUpdate(timeSpan, moveLeft, moveRight, moveUp, moveDown);\r
-            }\r
+\r
+            if (direction != Direction.None && !keysPressed.Contains(Keys.LeftControl)) mMotion.Update(timeSpan, direction);\r
+            else mMotion.LockUpdate(timeSpan, moveLeft, moveRight, moveUp, moveDown);\r
         }\r
         \r
         public void powerUp(int amount)\r
This page took 0.02047 seconds and 4 git commands to generate.