]> Dogcows Code - chaz/carfire/blobdiff - CarFire/CarFire/CarFire/Character.cs
Moved some basic stuff around to remove the CharacterTestBed, everything should compi...
[chaz/carfire] / CarFire / CarFire / CarFire / Character.cs
diff --git a/CarFire/CarFire/CarFire/Character.cs b/CarFire/CarFire/CarFire/Character.cs
new file mode 100644 (file)
index 0000000..e2c8aed
--- /dev/null
@@ -0,0 +1,231 @@
+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
This page took 0.025813 seconds and 4 git commands to generate.