]> Dogcows Code - chaz/carfire/blobdiff - CarFire/CarFire/CarFire/Game.cs
Basic character selection screen.
[chaz/carfire] / CarFire / CarFire / CarFire / Game.cs
index fa3fbd1b9e7b6a5a4134b40f135cf1ddb1144d2a..445336a0e6f79f865f98d4d5e5c511d8a884d1ee 100644 (file)
@@ -24,6 +24,8 @@ namespace CarFire
 \r
         public Map Map;\r
         public List<IEntity> Entities = new List<IEntity>();\r
+        public IPlayer[] mCharacters = new IPlayer[4];\r
+        public Display mDisplay;\r
 \r
         #endregion\r
 \r
@@ -243,12 +245,13 @@ namespace CarFire
 \r
         public Game()\r
         {\r
-            mDisplay = new Display(this);\r
+           \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
@@ -290,6 +293,8 @@ namespace CarFire
 \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
@@ -361,7 +366,7 @@ namespace CarFire
         public long Update(TimeSpan elapsedTime)\r
         {\r
             State.AdvanceFrame(mInputs, elapsedTime.Milliseconds);  // Apply the inputs, advance game state.\r
-            mDisplay.Update(elapsedTime, State);\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
@@ -371,7 +376,30 @@ namespace CarFire
 \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.Enter))\r
+                    {\r
+                        State.mCharacters[i] = new Human(this, "", State.Map.GetStartingPositionForPlayer(i + 1));\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 Enter To Select A Character", new Vector2(30, 30), Color.RosyBrown);\r
+            }\r
             return CurrentFrameNumber;\r
         }\r
 \r
@@ -380,7 +408,7 @@ namespace CarFire
 \r
         #region Private Variables\r
 \r
-        Display mDisplay;\r
+        SpriteFont menu;\r
 \r
         ContentManager mContentManager;\r
         NextInputs mInputs;\r
This page took 0.022623 seconds and 4 git commands to generate.