mPlayerIndex = playerIndex;\r
\r
// Speed is the number of grid cells you can move through per second.\r
- mMotion = new MovementManager(position, 4.0f);\r
+ mMotion = new MovementManager(position, 25.0f);\r
}\r
public void causeDamageTo(int amount)\r
{\r
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>(3);\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