X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=CarFire%2FCarFire%2FCarFire%2FHuman.cs;h=d1746e388b4a15f68ed8128327e5cd7ef2a9525a;hb=24421b10105ddc8a33d95c5e4ccb3d6380916fa8;hp=07b4222f97a6fff7c3a0b36072ea9d27b0a24110;hpb=0b53fe63e2a9354e4c52506e2012065d15bbcff1;p=chaz%2Fcarfire
diff --git a/CarFire/CarFire/CarFire/Human.cs b/CarFire/CarFire/CarFire/Human.cs
index 07b4222..d1746e3 100644
--- a/CarFire/CarFire/CarFire/Human.cs
+++ b/CarFire/CarFire/CarFire/Human.cs
@@ -25,23 +25,14 @@ namespace CarFire
State state;
String CharName;
Map theMap;
- int gridX;
- int gridY;
Texture2D charModel;
Texture2D projectileModel;
int health;
int damage;
int range;
int score;
-
- //Used to smooth animations
- bool isMoving;
- float pixelX;
- float pixelY;
- int movementSteps;
- int movementCoolDown;
- float changeX;
- float changeY;
+
+ MovementManager mMotion;
bool visible;
Display theDisplay;
@@ -51,7 +42,7 @@ namespace CarFire
int projectileCoolDown;
- public Human(Map _theMap, String Name, Texture2D model, Texture2D projectile, Display mDisplay)
+ public Human(Map _theMap, String Name, Texture2D model, Texture2D projectile, Display mDisplay, Point position)
{
theMap = _theMap;
CharName = Name;
@@ -64,9 +55,9 @@ namespace CarFire
charModel = model;
projectileModel = projectile;
projectileSpeed = 30;
- //The number of animation steps between each square movement.
- movementSteps = moveCoolDown -2;
-
+
+ // Speed is the number of grid cells you can move through per second.
+ mMotion = new MovementManager(position, 5.0f);
}
public void LoadContent(ContentManager contentManager)
@@ -93,38 +84,18 @@ namespace CarFire
///
public long Draw(SpriteBatch spriteBatch)
{
- //If the sprite is moving there are still movement animations to do.
- if (isMoving && movementSteps > 0)
- {
- movementSteps--;
- pixelX = pixelX + changeX;
- pixelY = pixelY + changeY;
- Rectangle position3 = theMap.GetRectangleFromCoordinates(new Vector2(pixelX / Map.PixelsToUnitSquares, pixelY / Map.PixelsToUnitSquares));
- spriteBatch.Draw(charModel, position3, Color.White);
- }
- // If the sprite is not moving then just draw it.
- else
- {
- pixelX = gridX * Map.PixelsToUnitSquares;
- pixelY = gridY * Map.PixelsToUnitSquares;
- changeX = 0;
- changeY = 0;
- isMoving = false;
- movementSteps = moveCoolDown - 2;
- spriteBatch.Draw(charModel, theMap.GetRectangleFromCoordinates(gridX, gridY), Color.White);
- }
+ Rectangle position = theMap.GetRectangleFromCoordinates(mMotion.Position);
+ spriteBatch.Draw(charModel, position, Color.White);
return 0;
}
- public int GridX { get { return gridX; } set { gridX = value; } }
- public int GridY { get { return gridY; } set { gridY = value; } }
- public float PixelX { get { return pixelX; } }
- public float PixelY { get { return pixelY; } }
public int Health { get { return health; } }
- public bool IsMoving { get { return isMoving; } }
public int Score { get { return score; } }
public bool alive { get { return health > 0; } }
+ public Vector2 Position { get { return mMotion.Position; } }
+ public Point Coordinates { get { return mMotion.Coordinates; } }
+
public void causeDamageTo(int amount)
{
health -= amount;
@@ -137,104 +108,32 @@ namespace CarFire
/// 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)
+ public void MovePlayer(TimeSpan timeSpan, List keysPressed)
{
- if(movementCoolDown > 0)
- movementCoolDown--;
- else if (movementCoolDown == 0)
+ bool moveLeft = keysPressed.Contains(Keys.Left);
+ bool moveRight = keysPressed.Contains(Keys.Right);
+ bool moveUp = keysPressed.Contains(Keys.Up);
+ bool moveDown = keysPressed.Contains(Keys.Down);
+ if (moveLeft)
+ state = State.left;
+ else if (moveRight)
+ state = State.right;
+ else if (moveUp)
+ state = State.up;
+ else if (moveDown)
+ state = State.down;
+
+ Point destination = MovementManager.GetNeighborCell(mMotion.Coordinates, moveLeft, moveRight, moveUp, moveDown);
+ if (theMap.IsCellOpen(destination))
{
- // move upleft
- keysPressed.Contains(Keys.Left);
- if (keysPressed.Contains(Keys.Up) && keysPressed.Contains(Keys.Left) && theMap.IsCellOpen(gridX - 1, gridY - 1))
- {
- pixelX = (float)(gridX * Map.PixelsToUnitSquares);
- pixelY = (float)(gridY * Map.PixelsToUnitSquares);
- gridX -= 1;
- gridY -= 1;
- movementCoolDown = moveCoolDown;
- isMoving = true;
-
-
- }
- // move upright
- else if (keysPressed.Contains(Keys.Up) && keysPressed.Contains(Keys.Right) && theMap.IsCellOpen(gridX + 1, gridY - 1))
- {
- pixelX = (float)(gridX * Map.PixelsToUnitSquares);
- pixelY = (float)(gridY * Map.PixelsToUnitSquares);
- gridX += 1;
- gridY -= 1;
- movementCoolDown = moveCoolDown;
- isMoving = true;
-
-
- }
- // move downleft
- else if (keysPressed.Contains(Keys.Down) && keysPressed.Contains(Keys.Left) && theMap.IsCellOpen(gridX - 1, gridY + 1))
- {
- pixelX = (float)(gridX * Map.PixelsToUnitSquares);
- pixelY = (float)(gridY * Map.PixelsToUnitSquares);
- gridX -= 1;
- gridY += 1;
- movementCoolDown = moveCoolDown;
- isMoving = true;
-
- }
- // move downright
- else if (keysPressed.Contains(Keys.Down) && keysPressed.Contains(Keys.Right) && theMap.IsCellOpen(gridX + 1, gridY + 1))
- {
- pixelX = (float)(gridX * Map.PixelsToUnitSquares);
- pixelY = (float)(gridY * Map.PixelsToUnitSquares);
- gridX += 1;
- gridY += 1;
- movementCoolDown = moveCoolDown;
- isMoving = true;
-
- }
- // move up
- else if (keysPressed.Contains(Keys.Up) && theMap.IsCellOpen(gridX, gridY - 1))
- {
- pixelX = (float)(gridX * Map.PixelsToUnitSquares);
- pixelY = (float)(gridY * Map.PixelsToUnitSquares);
- state = State.up;
- gridY -= 1;
- movementCoolDown = moveCoolDown;
- isMoving = true;
- changeY = (float)(-Map.PixelsToUnitSquares / moveCoolDown);
- }
- // move down
- else if (keysPressed.Contains(Keys.Down) && theMap.IsCellOpen(gridX, gridY + 1))
- {
- pixelX = (float)(gridX * Map.PixelsToUnitSquares);
- pixelY = (float)(gridY * Map.PixelsToUnitSquares);
- state = State.down;
- gridY += 1;
- movementCoolDown = moveCoolDown;
- isMoving = true;
- changeY = (float)(Map.PixelsToUnitSquares / moveCoolDown);
- }
- // move left
- else if (keysPressed.Contains(Keys.Left) && theMap.IsCellOpen(gridX - 1, gridY))
- {
- pixelX = (float)(gridX * Map.PixelsToUnitSquares);
- pixelY = (float)(gridY * Map.PixelsToUnitSquares);
- state = State.left;
- gridX -= 1;
- movementCoolDown = moveCoolDown;
- isMoving = true;
- changeX = (float)(-Map.PixelsToUnitSquares / moveCoolDown);
- }
- // move right
- else if (keysPressed.Contains(Keys.Right) && theMap.IsCellOpen(gridX + 1, gridY))
- {
- pixelX = (float)(gridX * Map.PixelsToUnitSquares);
- pixelY = (float)(gridY * Map.PixelsToUnitSquares);
- state = State.right;
- gridX += 1;
- movementCoolDown = moveCoolDown;
- isMoving = true;
- changeX = (float)(Map.PixelsToUnitSquares / moveCoolDown);
- }
+ mMotion.Update(timeSpan, moveLeft, moveRight, moveUp, moveDown);
}
+ else
+ {
+ mMotion.Update(timeSpan);
+ }
+
+
if (projectileCoolDown > 0)
projectileCoolDown--;
else if (projectileCoolDown == 0)
@@ -245,22 +144,26 @@ namespace CarFire
if (state == State.up)
{
projectileCoolDown = shootCoolDown;
- theDisplay.AddProjectiles(new Projectile(theMap, projectileModel, new Vector2(0, -projectileSpeed), GridX, GridY - 1));
+ theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,
+ new Vector2(0, -projectileSpeed), Coordinates.X, Coordinates.Y - 1));
}
if (state == State.down)
{
projectileCoolDown = shootCoolDown;
- theDisplay.AddProjectiles(new Projectile(theMap, projectileModel, new Vector2(0, projectileSpeed), GridX, GridY + 1));
+ theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,
+ new Vector2(0, projectileSpeed), Coordinates.X, Coordinates.Y + 1));
}
if (state == State.right)
{
projectileCoolDown = shootCoolDown;
- theDisplay.AddProjectiles(new Projectile(theMap, projectileModel, new Vector2(projectileSpeed, 0), GridX + 1, GridY));
+ theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,
+ new Vector2(projectileSpeed, 0), Coordinates.X + 1, Coordinates.Y));
}
if (state == State.left)
{
projectileCoolDown = shootCoolDown;
- theDisplay.AddProjectiles(new Projectile(theMap, projectileModel, new Vector2(-projectileSpeed, 0), GridX - 1, GridY));
+ theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,
+ new Vector2(-projectileSpeed, 0), Coordinates.X - 1, Coordinates.Y));
}
}
}
@@ -274,8 +177,8 @@ namespace CarFire
public void Spawn(Vector2 spawn)
{
- gridX = (int)spawn.X;
- gridY = (int)spawn.Y;
+ //gridX = (int)spawn.X;
+ //gridY = (int)spawn.Y;
visible = true;
}