const int shootCoolDown = 10;\r
State state;\r
String CharName;\r
- Map theMap;\r
+ Game game;\r
Texture2D charModel;\r
Texture2D projectileModel;\r
int health;\r
int projectileCoolDown;\r
\r
\r
- public Human(Map _theMap, String Name, Texture2D model, Texture2D projectile, Display mDisplay, Point position)\r
+ public Human(Game theGame, String Name, Texture2D model, Texture2D projectile, Display mDisplay, Point position)\r
{\r
- theMap = _theMap;\r
+ game = theGame;\r
CharName = Name;\r
theDisplay = mDisplay;\r
health = 100;\r
projectileSpeed = 30;\r
\r
// Speed is the number of grid cells you can move through per second.\r
- mMotion = new MovementManager(position, 5.0f);\r
+ mMotion = new MovementManager(position, 8.0f);\r
}\r
\r
public void LoadContent(ContentManager contentManager)\r
\r
}\r
\r
- public void UnloadContent()\r
- {\r
-\r
- }\r
\r
- public long Update(GameTime gameTime, NetworkManager networkGame)\r
+ public void Update(TimeSpan timeSpan)\r
{\r
- return 0;\r
-\r
}\r
/// <summary>\r
/// This method will draw a character to the screen.\r
/// </summary>\r
/// <param name="spriteBatch"></param>\r
- /// <returns></returns>\r
- public long Draw(SpriteBatch spriteBatch)\r
+ public void Draw(SpriteBatch spriteBatch)\r
{\r
- Rectangle position = theMap.GetRectangleFromCoordinates(mMotion.Position);\r
+ Rectangle position = game.State.Map.GetRectangleFromCoordinates(mMotion.Position);\r
spriteBatch.Draw(charModel, position, Color.White);\r
- return 0;\r
}\r
\r
public int Health { get { return health; } }\r
state = State.down;\r
\r
Point destination = MovementManager.GetNeighborCell(mMotion.Coordinates, moveLeft, moveRight, moveUp, moveDown);\r
- if (theMap.IsCellOpen(destination))\r
+ if (!keysPressed.Contains(Keys.LeftControl))\r
{\r
- mMotion.Update(timeSpan, moveLeft, moveRight, moveUp, moveDown);\r
+ if (game.IsCellOpen(destination))\r
+ {\r
+ mMotion.Update(timeSpan, moveLeft, moveRight, moveUp, moveDown);\r
+ }\r
+ else\r
+ {\r
+ mMotion.Update(timeSpan);\r
+ }\r
}\r
else\r
{\r
- mMotion.Update(timeSpan);\r
+ mMotion.LockUpdate(timeSpan, moveLeft, moveRight, moveUp, moveDown);\r
}\r
\r
\r
{\r
if (keysPressed.Contains<Keys>(Keys.Space))\r
{\r
- //TODO spawn projectile... needs to be added to display though\r
+ float velocityX = 0;\r
+ float velocityY = 0;\r
+ int startX = Coordinates.X;\r
+ int startY = Coordinates.Y;\r
+ if (mMotion.Direction == Direction.Down || mMotion.Direction == Direction.LowerLeft || mMotion.Direction == Direction.LowerRight)\r
+ {\r
+ velocityY = 1;\r
+ startY = Coordinates.Y + 1;\r
+ }\r
+ else if (mMotion.Direction == Direction.Up || mMotion.Direction == Direction.UpperLeft || mMotion.Direction == Direction.UpperRight)\r
+ {\r
+ velocityY = -1;\r
+ startY = Coordinates.Y - 1;\r
+ }\r
+ if (mMotion.Direction == Direction.Right || mMotion.Direction == Direction.LowerRight || mMotion.Direction == Direction.UpperRight)\r
+ {\r
+ velocityX = 1;\r
+ startX = Coordinates.X + 1;\r
+ }\r
+ else if (mMotion.Direction == Direction.Left || mMotion.Direction == Direction.LowerLeft || mMotion.Direction == Direction.UpperLeft)\r
+ {\r
+ velocityX = -1;\r
+ startX = Coordinates.X - 1;\r
+ }\r
+ Vector2 toShoot = new Vector2(velocityX, velocityY);\r
+ toShoot.Normalize();\r
+ toShoot *= projectileSpeed;\r
+ projectileCoolDown = shootCoolDown;\r
+ theDisplay.AddProjectiles(new Projectile(game.State.Map, projectileModel,\r
+ toShoot, new Point(startX, startY)));\r
+\r
+ /*\r
if (state == State.up)\r
{\r
projectileCoolDown = shootCoolDown;\r
theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,\r
- new Vector2(0, -projectileSpeed), Coordinates.X, Coordinates.Y - 1));\r
+ new Vector2(0, -projectileSpeed), new Point(Coordinates.X, Coordinates.Y - 1)));\r
}\r
if (state == State.down)\r
{\r
projectileCoolDown = shootCoolDown;\r
theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,\r
- new Vector2(0, projectileSpeed), Coordinates.X, Coordinates.Y + 1));\r
+ new Vector2(0, projectileSpeed), new Point(Coordinates.X, Coordinates.Y + 1)));\r
}\r
if (state == State.right)\r
{\r
projectileCoolDown = shootCoolDown;\r
theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,\r
- new Vector2(projectileSpeed, 0), Coordinates.X + 1, Coordinates.Y));\r
+ new Vector2(projectileSpeed, 0), new Point (Coordinates.X + 1, Coordinates.Y)));\r
}\r
if (state == State.left)\r
{\r
projectileCoolDown = shootCoolDown;\r
theDisplay.AddProjectiles(new Projectile(theMap, projectileModel,\r
- new Vector2(-projectileSpeed, 0), Coordinates.X - 1, Coordinates.Y));\r
+ new Vector2(-projectileSpeed, 0), new Point(Coordinates.X - 1, Coordinates.Y)));\r
}\r
+ */\r
}\r
}\r
}\r