X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fcarfire;a=blobdiff_plain;f=CarFire%2FCarFire%2FCarFire%2FPlayer.cs;fp=CarFire%2FCarFire%2FCarFire%2FPlayer.cs;h=f1d121c1907a0395ddeb2cab037a5b202bf4ad3f;hp=0000000000000000000000000000000000000000;hb=0470a7b148c79aaacf0d8107b5bd40fa1e81ac0a;hpb=f31fe51445e412355ef197ea87da3b07f7fc1c70
diff --git a/CarFire/CarFire/CarFire/Player.cs b/CarFire/CarFire/CarFire/Player.cs
new file mode 100644
index 0000000..f1d121c
--- /dev/null
+++ b/CarFire/CarFire/CarFire/Player.cs
@@ -0,0 +1,126 @@
+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
+{
+ public class Player : ICharacter
+ {
+ #region Member variables
+ //The number of frames between each projectile is spawned.
+ const int shootCoolDown = 18;
+ String CharName;
+ Game game;
+ int playerHealth;
+ int playerDamage;
+ int score;
+ MovementManager mMotion;
+ int mPlayerIndex;
+ #endregion
+
+
+ public Player(Game theGame, String Name, Point position, int playerIndex, int health, int damage)
+ {
+ game = theGame;
+ CharName = Name;
+ score = 0;
+ playerHealth = health;
+ playerDamage = damage;
+ mPlayerIndex = playerIndex;
+
+ // Speed is the number of grid cells you can move through per second.
+ mMotion = new MovementManager(position, 4.0f);
+ }
+
+ public virtual void LoadContent(ContentManager contentManager)
+ {
+
+ }
+ ///
+ /// This method will draw a character to the screen.
+ ///
+ ///
+ public virtual void Draw(SpriteBatch spriteBatch)
+ {
+ }
+
+ public int Health { get { return playerHealth; } }
+ public int Score { get { return score; } }
+ public bool alive { get { return playerHealth > 0; } }
+ public Game Game { get { return game; } }
+ public MovementManager Motion { get { return mMotion; } }
+ public int PlayerIndex { get { return mPlayerIndex; } }
+ public Vector2 Position { get { return mMotion.Position; } }
+ public Point Coordinates { get { return mMotion.Coordinates; } }
+ public int Damage { get { return playerDamage; } }
+
+ public void causeDamageTo(int amount)
+ {
+ playerHealth -= amount;
+ }
+
+ public void Update(TimeSpan timeSpan)
+ {
+
+ }
+ ///
+ /// 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 UpdateInput(TimeSpan timeSpan, List keysPressed)
+ {
+
+ UpdatePosition(timeSpan, keysPressed);
+ Attack(keysPressed);
+
+ }
+ public void UpdatePosition(TimeSpan timeSpan, List keysPressed)
+ {
+ bool moveLeft = keysPressed.Contains(Keys.Left);
+ bool moveRight = keysPressed.Contains(Keys.Right);
+ bool moveUp = keysPressed.Contains(Keys.Up);
+ bool moveDown = keysPressed.Contains(Keys.Down);
+ Point destination = MovementManager.GetNeighborCell(mMotion.Coordinates, moveLeft, moveRight, moveUp, moveDown);
+ if (!keysPressed.Contains(Keys.LeftControl))
+ {
+ if (game.IsCellOpen(destination))
+ {
+ mMotion.Update(timeSpan, moveLeft, moveRight, moveUp, moveDown);
+ }
+ else
+ {
+ mMotion.Update(timeSpan);
+ }
+ }
+ else
+ {
+ mMotion.LockUpdate(timeSpan, moveLeft, moveRight, moveUp, moveDown);
+ }
+ }
+ public virtual void Attack(List keysPressed)
+ {
+
+ }
+ public void powerUp(int amount)
+ {
+ playerHealth += amount;
+ }
+
+ public void Spawn(Vector2 spawn)
+ {
+
+ }
+
+
+ }
+
+}