X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=CarFire%2FCarFire%2FCarFire%2FCharacter.cs;fp=CarFire%2FCarFire%2FCarFire%2FCharacter.cs;h=e2c8aedfba98afcee9f0d45a27dfe0c1a96b7c59;hb=65c7b1983e25cd16f2e00b83f23542854e8345af;hp=0000000000000000000000000000000000000000;hpb=2069ccccbb9dc0007f36555862615e684e93a8b2;p=chaz%2Fcarfire
diff --git a/CarFire/CarFire/CarFire/Character.cs b/CarFire/CarFire/CarFire/Character.cs
new file mode 100644
index 0000000..e2c8aed
--- /dev/null
+++ b/CarFire/CarFire/CarFire/Character.cs
@@ -0,0 +1,231 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Xna.Framework;
+using Microsoft.Xna.Framework.Content;
+using Microsoft.Xna.Framework.Graphics;
+using Microsoft.Xna.Framework.Input;
+
+namespace CarFire
+{
+ ///
+ /// Base class for all Characters,
+ /// includes: basic position information,
+ /// character Texture
+ /// health
+ /// damage
+ ///
+ public class Character
+ {
+ //Member Variables
+ Map theMap;
+ int movementSpeed;
+ int gridX;
+ int gridY;
+ Texture2D charModel;
+ int health;
+ int damage;
+ int range;
+ bool isMoving;
+ int pixelX;
+ int pixelY;
+
+ ///
+ /// Call this method to give the game a chance to load its content.
+ ///
+ /// The map that this character will interact with
+ /// The model for this character
+ /// How fast the character moves
+ /// The starting health of the character
+ /// The base damage of the character
+ /// The range of the character attack
+ public Character( Map _currentMap,
+ Texture2D _charModel,
+ int _baseMovementSpeed,
+ int _baseHealth,
+ int _baseDamage,
+ int _baseRange)
+ {
+ theMap = _currentMap;
+ movementSpeed = _baseMovementSpeed;
+ gridX = 10; //should be included in the map as a designated spawn point to begin map
+ gridY = 10; //
+ charModel = _charModel;
+ health = _baseHealth;
+ damage = _baseDamage;
+ range = _baseRange;
+ isMoving = false;
+ }
+
+ public void Draw(SpriteBatch spriteBatch)
+ {
+ spriteBatch.Draw(charModel, new Vector2(pixelX, pixelY), null, Color.White, 0, new Vector2(0f,0f), 1f, SpriteEffects.None, 0);
+ }
+
+ ///
+ /// Basic getters and setters
+ ///
+ public int GridX { get { return gridX; } set { gridX = value; } }
+ public int GridY { get { return gridY; } set { gridY = value; } }
+ public int PixelX { get { return pixelX; } set { pixelX = value; } }
+ public int PixelY { get { return pixelY; } set { pixelY = value; } }
+ public int Health { get { return health; } set { health = value; } }
+ public Map TheMap { get { return theMap; } }
+
+ ///
+ /// Get if player is Moveing - Getter only
+ ///
+ public bool IsMoving
+ {
+ get { return isMoving; }
+ }
+ }
+
+ ///
+ ///
+ ///
+ public class Player : Character
+ {
+ //Member Variables
+
+ public Player( Map _currentMap,
+ Texture2D _charModel,
+ int _baseMovementSpeed,
+ int _baseHealth,
+ int _baseDamage,
+ int _baseRange)
+ : base(_currentMap,_charModel,_baseMovementSpeed, _baseHealth, _baseDamage, _baseRange)
+ {
+ }
+
+ public void Update()
+ {
+
+
+ }
+ /*
+ ///
+ /// Updates the players position in the current window, the player is kept centered
+ /// in the window when possible. When the edge of the map is reached by one or more
+ /// of the edges of the window the player will then move towards the edges of the
+ /// window.
+ ///
+ /// Used to know how wide the current window is
+ /// Used to know how tall the current window is
+ public void updatePlayerScreenPosition(int ScreenWidth, int ScreenHeight)
+ {
+
+ // if left edge of map has been reached by screen
+ if (GridX * TheMap.GridToPixelRatio < ScreenWidth / 2)
+ {
+ PixelX = GridX * TheMap.GridToPixelRatio;
+ }
+ // if right edge of TheMap has been reached by screen
+ else if ((TheMap.MaxGridX - GridX) * TheMap.GridToPixelRatio < ScreenWidth / 2)
+ {
+ PixelX = ScreenWidth - (TheMap.MaxGridX - GridX) * TheMap.GridToPixelRatio;
+ }
+ // screen not touching left or right edge of map so center player horazontally on screen
+ else
+ {
+ PixelX = ScreenWidth / 2;
+ }
+
+ // if top edge of map is reached by screen edge
+ if (GridY * TheMap.GridToPixelRatio < ScreenHeight / 2)
+ {
+ PixelY = GridY * TheMap.GridToPixelRatio;
+ }
+ // if bottom edge of map has been reached by screen
+ else if ((TheMap.MaxGridY - GridY) * TheMap.GridToPixelRatio < ScreenHeight / 2)
+ {
+ PixelY = ScreenHeight - (TheMap.MaxGridY - GridY) * TheMap.GridToPixelRatio;
+ }
+ // screen not touching top or bottom edge of map so center player verticaly on screen
+ else
+ {
+ PixelY = ScreenHeight / 2;
+ }
+ }
+ */
+ ///
+ /// Moves the current player being controlled based on a given set of key presses.
+ /// The player can only move one Grid space per movePlayer call. Thus this method
+ /// is made to be called ever update. The player will only move if the Grid space
+ /// that is being moved to is an open space.
+ ///
+ /// A general list of keys that are pressed. Other keys can be included but only direction keys will be used
+ public void movePlayer(List keysPressed)
+ {
+ // move upleft
+ keysPressed.Contains(Keys.Left);
+ if (keysPressed.Contains(Keys.Up) && keysPressed.Contains(Keys.Left) && TheMap.IsCellOpen(GridX - 1, GridY - 1))
+ {
+ GridX -= 1;
+ GridY -= 1;
+ }
+ // move upright
+ else if (keysPressed.Contains(Keys.Up) && keysPressed.Contains(Keys.Right) && TheMap.IsCellOpen(GridX + 1, GridY - 1))
+ {
+ GridX += 1;
+ GridY -= 1;
+ }
+ // move downleft
+ else if (keysPressed.Contains(Keys.Down) && keysPressed.Contains(Keys.Left) && TheMap.IsCellOpen(GridX - 1, GridY + 1))
+ {
+ GridX -= 1;
+ GridY += 1;
+ }
+ // move downright
+ else if (keysPressed.Contains(Keys.Down) && keysPressed.Contains(Keys.Right) && TheMap.IsCellOpen(GridX + 1, GridY + 1))
+ {
+ GridX += 1;
+ GridY += 1;
+ }
+ // move up
+ else if (keysPressed.Contains(Keys.Up) && TheMap.IsCellOpen(GridX, GridY - 1))
+ {
+ GridY -= 1;
+ }
+ // move down
+ else if (keysPressed.Contains(Keys.Down) && TheMap.IsCellOpen(GridX, GridY + 1))
+ {
+ GridY += 1;
+ }
+ // move left
+ else if (keysPressed.Contains(Keys.Left) && TheMap.IsCellOpen(GridX - 1, GridY))
+ {
+ GridX -= 1;
+ }
+ // move right
+ else if (keysPressed.Contains(Keys.Right) && TheMap.IsCellOpen(GridX + 1, GridY))
+ {
+ GridX += 1;
+ }
+ }
+ }
+
+ ///
+ ///
+ ///
+ public class Monster : Character
+ {
+ //Member Variables
+ public Monster( Map _currentMap,
+ Texture2D _charModel,
+ int _baseMovementSpeed,
+ int _baseHealth,
+ int _baseDamage,
+ int _baseRange)
+ : base(_currentMap,_charModel,_baseMovementSpeed, _baseHealth, _baseDamage, _baseRange)
+ {
+
+ }
+
+ public void Update()
+ {
+
+ }
+ }
+}
\ No newline at end of file