2 using System.Collections.Generic;
5 using Microsoft.Xna.Framework;
6 using Microsoft.Xna.Framework.Content;
7 using Microsoft.Xna.Framework.Graphics;
8 using Microsoft.Xna.Framework.Input;
12 public class Melee : IPlayer
14 //The number of frames between each projectile is spawned.
15 const int shootCoolDown = 18;
19 Texture2D projectileModel;
25 MovementManager mMotion;
28 //Used to draw projectiles
30 int projectileCoolDown;
34 public Melee(Game theGame, String Name, Point position, int playerIndex)
42 mPlayerIndex = playerIndex;
44 // Speed is the number of grid cells you can move through per second.
45 mMotion = new MovementManager(position, 4.0f);
48 public void LoadContent(ContentManager contentManager)
50 charModel = contentManager.Load<Texture2D>("cs"); //change to charModel when designed
51 projectileModel = contentManager.Load<Texture2D>("projectile"); //change to a projectile model later
56 public void Update(TimeSpan timeSpan)
60 /// This method will draw a character to the screen.
62 /// <param name="spriteBatch"></param>
63 public void Draw(SpriteBatch spriteBatch)
65 Rectangle position = game.State.Map.GetRectangleFromCoordinates(mMotion.Position);
66 spriteBatch.Draw(charModel, position, Color.White);
69 public int Health { get { return health; } }
70 public int Score { get { return score; } }
71 public bool alive { get { return health > 0; } }
73 public Vector2 Position { get { return mMotion.Position; } }
74 public Point Coordinates { get { return mMotion.Coordinates; } }
76 public void causeDamageTo(int amount)
82 /// Moves the current player being controlled based on a given set of key presses.
83 /// The player can only move one grid space per movePlayer call. Thus this method
84 /// is made to be called ever update. The player will only move if the grid space
85 /// that is being moved to is an open space.
87 /// <param name="keysPressed">A general list of keys that are pressed. Other keys can be included but only direction keys will be used</param>
88 public void UpdateInput(TimeSpan timeSpan, List<Keys> keysPressed)
91 UpdatePosition(timeSpan, keysPressed);
93 if (projectileCoolDown > 0)
95 else if (projectileCoolDown == 0)
97 if (keysPressed.Contains<Keys>(Keys.Space))
103 public void UpdatePosition(TimeSpan timeSpan, List<Keys> keysPressed)
105 bool moveLeft = keysPressed.Contains(Keys.Left);
106 bool moveRight = keysPressed.Contains(Keys.Right);
107 bool moveUp = keysPressed.Contains(Keys.Up);
108 bool moveDown = keysPressed.Contains(Keys.Down);
109 Point destination = MovementManager.GetNeighborCell(mMotion.Coordinates, moveLeft, moveRight, moveUp, moveDown);
110 if (!keysPressed.Contains(Keys.LeftControl))
112 if (game.IsCellOpen(destination))
114 mMotion.Update(timeSpan, moveLeft, moveRight, moveUp, moveDown);
118 mMotion.Update(timeSpan);
123 mMotion.LockUpdate(timeSpan, moveLeft, moveRight, moveUp, moveDown);
131 public void powerUp(int amount)
136 public void Spawn(Vector2 spawn)
138 //gridX = (int)spawn.X;
139 //gridY = (int)spawn.Y;