--- /dev/null
+using System;\r
+using System.Collections.Generic;\r
+using System.Linq;\r
+using System.Text;\r
+using Microsoft.Xna.Framework;\r
+using Microsoft.Xna.Framework.Content;\r
+using Microsoft.Xna.Framework.Graphics;\r
+using Microsoft.Xna.Framework.Input;\r
+\r
+namespace CarFire\r
+{\r
+ /// <summary>\r
+ /// Base class for all Characters, \r
+ /// includes: basic position information, \r
+ /// character Texture\r
+ /// health\r
+ /// damage\r
+ /// </summary>\r
+ public class Character\r
+ {\r
+ //Member Variables\r
+ Map theMap;\r
+ int movementSpeed;\r
+ int gridX;\r
+ int gridY;\r
+ Texture2D charModel;\r
+ int health;\r
+ int damage;\r
+ int range;\r
+ bool isMoving;\r
+ int pixelX;\r
+ int pixelY;\r
+\r
+ /// <summary>\r
+ /// Call this method to give the game a chance to load its content.\r
+ /// </summary>\r
+ /// <param name="_currentMap">The map that this character will interact with</param>\r
+ /// <param name="_charModel">The model for this character</param>\r
+ /// <param name="_baseMovementSpeed">How fast the character moves</param>\r
+ /// <param name="_baseHealth">The starting health of the character</param>\r
+ /// <param name="_baseDamage">The base damage of the character</param>\r
+ /// <param name="_baseRange">The range of the character attack</param>\r
+ public Character( Map _currentMap,\r
+ Texture2D _charModel,\r
+ int _baseMovementSpeed,\r
+ int _baseHealth,\r
+ int _baseDamage,\r
+ int _baseRange)\r
+ {\r
+ theMap = _currentMap;\r
+ movementSpeed = _baseMovementSpeed;\r
+ gridX = 10; //should be included in the map as a designated spawn point to begin map\r
+ gridY = 10; // \r
+ charModel = _charModel;\r
+ health = _baseHealth;\r
+ damage = _baseDamage;\r
+ range = _baseRange;\r
+ isMoving = false;\r
+ }\r
+\r
+ public void Draw(SpriteBatch spriteBatch)\r
+ {\r
+ spriteBatch.Draw(charModel, new Vector2(pixelX, pixelY), null, Color.White, 0, new Vector2(0f,0f), 1f, SpriteEffects.None, 0);\r
+ }\r
+\r
+ /// <summary>\r
+ /// Basic getters and setters\r
+ /// </summary>\r
+ public int GridX { get { return gridX; } set { gridX = value; } }\r
+ public int GridY { get { return gridY; } set { gridY = value; } }\r
+ public int PixelX { get { return pixelX; } set { pixelX = value; } }\r
+ public int PixelY { get { return pixelY; } set { pixelY = value; } }\r
+ public int Health { get { return health; } set { health = value; } }\r
+ public Map TheMap { get { return theMap; } }\r
+\r
+ /// <summary>\r
+ /// Get if player is Moveing - Getter only\r
+ /// </summary>\r
+ public bool IsMoving\r
+ {\r
+ get { return isMoving; }\r
+ }\r
+ }\r
+\r
+ /// <summary>\r
+ /// \r
+ /// </summary>\r
+ public class Player : Character\r
+ {\r
+ //Member Variables\r
+\r
+ public Player( Map _currentMap, \r
+ Texture2D _charModel,\r
+ int _baseMovementSpeed,\r
+ int _baseHealth,\r
+ int _baseDamage, \r
+ int _baseRange) \r
+ : base(_currentMap,_charModel,_baseMovementSpeed, _baseHealth, _baseDamage, _baseRange)\r
+ {\r
+ }\r
+\r
+ public void Update()\r
+ {\r
+\r
+\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
+\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.IsCellOpen(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.IsCellOpen(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.IsCellOpen(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.IsCellOpen(GridX + 1, GridY + 1))\r
+ {\r
+ GridX += 1;\r
+ GridY += 1;\r
+ }\r
+ // move up\r
+ else if (keysPressed.Contains<Keys>(Keys.Up) && TheMap.IsCellOpen(GridX, GridY - 1))\r
+ {\r
+ GridY -= 1;\r
+ }\r
+ // move down\r
+ else if (keysPressed.Contains<Keys>(Keys.Down) && TheMap.IsCellOpen(GridX, GridY + 1))\r
+ {\r
+ GridY += 1;\r
+ }\r
+ // move left\r
+ else if (keysPressed.Contains<Keys>(Keys.Left) && TheMap.IsCellOpen(GridX - 1, GridY))\r
+ {\r
+ GridX -= 1;\r
+ }\r
+ // move right\r
+ else if (keysPressed.Contains<Keys>(Keys.Right) && TheMap.IsCellOpen(GridX + 1, GridY))\r
+ {\r
+ GridX += 1;\r
+ }\r
+ }\r
+ }\r
+\r
+ /// <summary>\r
+ /// \r
+ /// </summary>\r
+ public class Monster : Character\r
+ {\r
+ //Member Variables\r
+ public Monster( Map _currentMap, \r
+ Texture2D _charModel,\r
+ int _baseMovementSpeed,\r
+ int _baseHealth,\r
+ int _baseDamage, \r
+ int _baseRange) \r
+ : base(_currentMap,_charModel,_baseMovementSpeed, _baseHealth, _baseDamage, _baseRange)\r
+ {\r
+\r
+ }\r
+\r
+ public void Update()\r
+ {\r
+\r
+ }\r
+ }\r
+}
\ No newline at end of file