\r
public Map Map;\r
public List<IEntity> Entities = new List<IEntity>();\r
+ public Player[] mCharacters = new Player[4];\r
+ public Display mDisplay;\r
\r
#endregion\r
\r
\r
\r
#region Public Methods\r
-\r
public bool IsCellOpen(Point point)\r
{\r
if (!State.Map.IsCellOpen(point)) return false;\r
\r
public Game()\r
{\r
- mDisplay = new Display(this);\r
+ \r
+ }\r
+ /// <summary>\r
+ /// This method should be called whenever the players want to move to a new map.\r
+ /// Not implemented yet. Need some way to get next map.\r
+ /// </summary>\r
+ public void startNewMap()\r
+ {\r
+ //TODO somehow get next map\r
+ State.Entities.Clear();\r
+ //State.Map = State.Map.getNextMap();\r
+ for (int i = 0; i < State.mCharacters.Length; i++)\r
+ {\r
+ State.mCharacters[i].Coordinates = State.Map.GetStartingPositionForPlayer(i + 1);\r
+ }\r
+ State.Entities = State.Map.GetAllEntities();\r
}\r
public void LoadContent(ContentManager contentManager)\r
{\r
mContentManager = contentManager;\r
- mDisplay.LoadContent(contentManager);\r
+ menu = mContentManager.Load<SpriteFont>("menuFont");\r
+ \r
}\r
\r
public void UnloadContent()\r
\r
State = new GameState(numPlayers);\r
mInputs = new NextInputs(numPlayers);\r
+ State.mDisplay = new Display(this);\r
+ State.mDisplay.LoadContent(mContentManager);\r
\r
State.Map = mContentManager.Load<Map>("Maps/stable");\r
State.Map.Game = this;\r
public long Update(TimeSpan elapsedTime)\r
{\r
State.AdvanceFrame(mInputs, elapsedTime.Milliseconds); // Apply the inputs, advance game state.\r
- mDisplay.Update(elapsedTime, State, mThisPlayerID);\r
+ State.mDisplay.Update(elapsedTime, State, mThisPlayerID);\r
State.Entities.ForEach(delegate(IEntity e) { e.Update(elapsedTime); });\r
mInputs = new NextInputs(State.NumberOfPlayers); // Start with inputs cleared on the next frame.\r
//mDisplay.Update(elapsedTime);\r
\r
public long Draw(SpriteBatch spriteBatch)\r
{\r
- mDisplay.Draw(spriteBatch);\r
+ bool allCharactersSelected = true;\r
+ for (int i = 0; i < State.NumberOfPlayers; i++)\r
+ {\r
+ //If player has not selected a player yet let them select one.\r
+ if (State.mCharacters[i] == null)\r
+ {\r
+ allCharactersSelected = false;\r
+ if (State.GetKeysDown(i).Contains(Keys.M))\r
+ {\r
+ State.mCharacters[i] = new Melee(this, "", State.Map.GetStartingPositionForPlayer(i + 1), i);\r
+ State.mCharacters[i].LoadContent(mContentManager);\r
+ }\r
+ else if (State.GetKeysDown(i).Contains(Keys.R))\r
+ {\r
+ State.mCharacters[i] = new Ranged(this, "", State.Map.GetStartingPositionForPlayer(i + 1), i);\r
+ State.mCharacters[i].LoadContent(mContentManager);\r
+ }\r
+ }\r
+ }\r
+ if (allCharactersSelected)\r
+ {\r
+ \r
+ State.mDisplay.Draw(spriteBatch);\r
+ }\r
+ else\r
+ {\r
+ spriteBatch.GraphicsDevice.Clear(Color.Black);\r
+ spriteBatch.DrawString(menu, "Press R to select a Ranged Character and M to select a Melee Character", new Vector2(30, 30), Color.RosyBrown);\r
+ }\r
return CurrentFrameNumber;\r
}\r
\r
\r
#region Private Variables\r
\r
- Display mDisplay;\r
+ SpriteFont menu;\r
\r
ContentManager mContentManager;\r
NextInputs mInputs;\r