X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fcarfire;a=blobdiff_plain;f=CarFire%2FCarFire%2FCarFire%2FHuman.cs;h=168fa06f627a0d9024489cf8a7e23c59247cc46f;hp=07b4222f97a6fff7c3a0b36072ea9d27b0a24110;hb=f31f4ae920ff902f4cd4fb64f5e6ccf0d5e58402;hpb=0b53fe63e2a9354e4c52506e2012065d15bbcff1 diff --git a/CarFire/CarFire/CarFire/Human.cs b/CarFire/CarFire/CarFire/Human.cs index 07b4222..168fa06 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,24 @@ 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); + + 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 +136,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 +169,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; }