X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=CarFire%2FCarFire%2FCarFire%2FHuman.cs;h=08d962a1e682042ef420fab99b59b8fb52815d78;hb=16658241429e8befc3cb171a62163f36dedb6a33;hp=d1746e388b4a15f68ed8128327e5cd7ef2a9525a;hpb=24421b10105ddc8a33d95c5e4ccb3d6380916fa8;p=chaz%2Fcarfire
diff --git a/CarFire/CarFire/CarFire/Human.cs b/CarFire/CarFire/CarFire/Human.cs
index d1746e3..08d962a 100644
--- a/CarFire/CarFire/CarFire/Human.cs
+++ b/CarFire/CarFire/CarFire/Human.cs
@@ -18,13 +18,11 @@ namespace CarFire
up,
down
};
- //The number of frames between each square movements
- const int moveCoolDown = 15;
//The number of frames between each projectile is spawned.
const int shootCoolDown = 10;
State state;
String CharName;
- Map theMap;
+ Game game;
Texture2D charModel;
Texture2D projectileModel;
int health;
@@ -42,9 +40,9 @@ namespace CarFire
int projectileCoolDown;
- public Human(Map _theMap, String Name, Texture2D model, Texture2D projectile, Display mDisplay, Point position)
+ public Human(Game theGame, String Name, Texture2D model, Texture2D projectile, Display mDisplay, Point position)
{
- theMap = _theMap;
+ game = theGame;
CharName = Name;
theDisplay = mDisplay;
health = 100;
@@ -57,7 +55,7 @@ namespace CarFire
projectileSpeed = 30;
// Speed is the number of grid cells you can move through per second.
- mMotion = new MovementManager(position, 5.0f);
+ mMotion = new MovementManager(position, 8.0f);
}
public void LoadContent(ContentManager contentManager)
@@ -67,26 +65,18 @@ namespace CarFire
}
- public void UnloadContent()
- {
-
- }
- public long Update(GameTime gameTime, NetworkManager networkGame)
+ public void Update(TimeSpan timeSpan)
{
- return 0;
-
}
///
/// This method will draw a character to the screen.
///
///
- ///
- public long Draw(SpriteBatch spriteBatch)
+ public void Draw(SpriteBatch spriteBatch)
{
- Rectangle position = theMap.GetRectangleFromCoordinates(mMotion.Position);
+ Rectangle position = game.State.Map.GetRectangleFromCoordinates(mMotion.Position);
spriteBatch.Draw(charModel, position, Color.White);
- return 0;
}
public int Health { get { return health; } }
@@ -124,13 +114,20 @@ namespace CarFire
state = State.down;
Point destination = MovementManager.GetNeighborCell(mMotion.Coordinates, moveLeft, moveRight, moveUp, moveDown);
- if (theMap.IsCellOpen(destination))
+ if (!keysPressed.Contains(Keys.LeftControl))
{
- mMotion.Update(timeSpan, moveLeft, moveRight, moveUp, moveDown);
+ if (game.IsCellOpen(destination))
+ {
+ mMotion.Update(timeSpan, moveLeft, moveRight, moveUp, moveDown);
+ }
+ else
+ {
+ mMotion.Update(timeSpan);
+ }
}
else
{
- mMotion.Update(timeSpan);
+ mMotion.LockUpdate(timeSpan, moveLeft, moveRight, moveUp, moveDown);
}
@@ -140,31 +137,63 @@ namespace CarFire
{
if (keysPressed.Contains(Keys.Space))
{
- //TODO spawn projectile... needs to be added to display though
+ float velocityX = 0;
+ float velocityY = 0;
+ int startX = Coordinates.X;
+ int startY = Coordinates.Y;
+ if (mMotion.Direction == Direction.Down || mMotion.Direction == Direction.LowerLeft || mMotion.Direction == Direction.LowerRight)
+ {
+ velocityY = 1;
+ startY = Coordinates.Y + 1;
+ }
+ else if (mMotion.Direction == Direction.Up || mMotion.Direction == Direction.UpperLeft || mMotion.Direction == Direction.UpperRight)
+ {
+ velocityY = -1;
+ startY = Coordinates.Y - 1;
+ }
+ if (mMotion.Direction == Direction.Right || mMotion.Direction == Direction.LowerRight || mMotion.Direction == Direction.UpperRight)
+ {
+ velocityX = 1;
+ startX = Coordinates.X + 1;
+ }
+ else if (mMotion.Direction == Direction.Left || mMotion.Direction == Direction.LowerLeft || mMotion.Direction == Direction.UpperLeft)
+ {
+ velocityX = -1;
+ startX = Coordinates.X - 1;
+ }
+ Vector2 toShoot = new Vector2(velocityX, velocityY);
+ toShoot.Normalize();
+ toShoot *= projectileSpeed;
+ projectileCoolDown = shootCoolDown;
+ theDisplay.AddProjectiles(new Projectile(game.State.Map, projectileModel,
+ toShoot, new Point(startX, startY)));
+
+ /*
if (state == State.up)
{
projectileCoolDown = shootCoolDown;
theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,
- new Vector2(0, -projectileSpeed), Coordinates.X, Coordinates.Y - 1));
+ new Vector2(0, -projectileSpeed), new Point(Coordinates.X, Coordinates.Y - 1)));
}
if (state == State.down)
{
projectileCoolDown = shootCoolDown;
theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,
- new Vector2(0, projectileSpeed), Coordinates.X, Coordinates.Y + 1));
+ new Vector2(0, projectileSpeed), new Point(Coordinates.X, Coordinates.Y + 1)));
}
if (state == State.right)
{
projectileCoolDown = shootCoolDown;
theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,
- new Vector2(projectileSpeed, 0), Coordinates.X + 1, Coordinates.Y));
+ new Vector2(projectileSpeed, 0), new Point (Coordinates.X + 1, Coordinates.Y)));
}
if (state == State.left)
{
projectileCoolDown = shootCoolDown;
theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,
- new Vector2(-projectileSpeed, 0), Coordinates.X - 1, Coordinates.Y));
+ new Vector2(-projectileSpeed, 0), new Point(Coordinates.X - 1, Coordinates.Y)));
}
+ */
}
}
}