+\r
+ }\r
+\r
+ /// <summary>\r
+ /// Updates the players position in the current window, the player is kept centered\r
+ /// in the window when possible. When the edge of the map is reached by one or more\r
+ /// of the edges of the window the player will then move towards the edges of the\r
+ /// window.\r
+ /// </summary>\r
+ /// <param name="ScreenWidth">Used to know how wide the current window is</param>\r
+ /// <param name="ScreenHeight">Used to know how tall the current window is</param>\r
+ public void updatePlayerScreenPosition(int ScreenWidth, int ScreenHeight)\r
+ {\r
+ // if left edge of map has been reached by screen\r
+ if (GridX * TheMap.GridToPixelRatio < ScreenWidth / 2)\r
+ {\r
+ PixelX = GridX * TheMap.GridToPixelRatio;\r
+ }\r
+ // if right edge of TheMap has been reached by screen\r
+ else if ((TheMap.MaxGridX - GridX) * TheMap.GridToPixelRatio < ScreenWidth / 2)\r
+ {\r
+ PixelX = ScreenWidth - (TheMap.MaxGridX - GridX) * TheMap.GridToPixelRatio;\r
+ }\r
+ // screen not touching left or right edge of map so center player horazontally on screen\r
+ else\r
+ {\r
+ PixelX = ScreenWidth / 2;\r
+ }\r
+\r
+ // if top edge of map is reached by screen edge\r
+ if (GridY * TheMap.GridToPixelRatio < ScreenHeight / 2)\r
+ {\r
+ PixelY = GridY * TheMap.GridToPixelRatio;\r
+ }\r
+ // if bottom edge of map has been reached by screen\r
+ else if ((TheMap.MaxGridY - GridY) * TheMap.GridToPixelRatio < ScreenHeight / 2)\r
+ {\r
+ PixelY = ScreenHeight - (TheMap.MaxGridY - GridY) * TheMap.GridToPixelRatio;\r
+ } \r
+ // screen not touching top or bottom edge of map so center player verticaly on screen\r
+ else\r
+ {\r
+ PixelY = ScreenHeight / 2;\r
+ }\r
+ }\r
+\r
+ /// <summary>\r
+ /// Moves the current player being controlled based on a given set of key presses.\r
+ /// The player can only move one Grid space per movePlayer call. Thus this method\r
+ /// is made to be called ever update. The player will only move if the Grid space\r
+ /// that is being moved to is an open space.\r
+ /// </summary>\r
+ /// <param name="keysPressed">A general list of keys that are pressed. Other keys can be included but only direction keys will be used</param>\r
+ public void movePlayer(List<Keys> keysPressed)\r
+ {\r
+ // move upleft\r
+ keysPressed.Contains<Keys>(Keys.Left);\r
+ if (keysPressed.Contains<Keys>(Keys.Up) && keysPressed.Contains<Keys>(Keys.Left) && TheMap.isOpenSquare(GridX - 1, GridY - 1))\r
+ {\r
+ GridX -= 1;\r
+ GridY -= 1;\r
+ }\r
+ // move upright\r
+ else if (keysPressed.Contains<Keys>(Keys.Up) && keysPressed.Contains<Keys>(Keys.Right) && TheMap.isOpenSquare(GridX + 1, GridY - 1))\r
+ {\r
+ GridX += 1;\r
+ GridY -= 1;\r
+ }\r
+ // move downleft\r
+ else if (keysPressed.Contains<Keys>(Keys.Down) && keysPressed.Contains<Keys>(Keys.Left) && TheMap.isOpenSquare(GridX - 1, GridY + 1))\r
+ {\r
+ GridX -= 1;\r
+ GridY += 1;\r
+ }\r
+ // move downright\r
+ else if (keysPressed.Contains<Keys>(Keys.Down) && keysPressed.Contains<Keys>(Keys.Right) && TheMap.isOpenSquare(GridX + 1, GridY + 1))\r
+ {\r
+ GridX += 1;\r
+ GridY += 1;\r
+ }\r
+ // move up\r
+ else if (keysPressed.Contains<Keys>(Keys.Up) && TheMap.isOpenSquare(GridX, GridY - 1))\r
+ {\r
+ GridY -= 1;\r
+ }\r
+ // move down\r
+ else if (keysPressed.Contains<Keys>(Keys.Down) && TheMap.isOpenSquare(GridX, GridY + 1))\r
+ {\r
+ GridY += 1;\r
+ }\r
+ // move left\r
+ else if (keysPressed.Contains<Keys>(Keys.Left) && TheMap.isOpenSquare(GridX - 1, GridY))\r
+ {\r
+ GridX -= 1;\r
+ }\r
+ // move right\r
+ else if (keysPressed.Contains<Keys>(Keys.Right) && TheMap.isOpenSquare(GridX + 1, GridY))\r
+ {\r
+ GridX += 1;\r
+ }\r