]> Dogcows Code - chaz/carfire/blobdiff - CarFire/CarFire/CarFire/Game.cs
Fixed path finder thrown exception when finding a path to the cell you are already at.
[chaz/carfire] / CarFire / CarFire / CarFire / Game.cs
index be18be785b8d8a35c7f02dfbcbced0d8c414be74..45b79d16901a653e8bcd1038075c8766d7fc4086 100644 (file)
@@ -24,7 +24,8 @@ namespace CarFire
 \r
         public Map Map;\r
         public List<IEntity> Entities = new List<IEntity>();\r
-        public Player[] mCharacters = new Player[4];\r
+        public List<Projectile> mProjectiles = new List<Projectile>();\r
+        public Player[] mCharacters;\r
         public Display mDisplay;\r
 \r
         #endregion\r
@@ -41,6 +42,8 @@ namespace CarFire
             mNumberOfPlayers = numPlayers;\r
             mFrameNumber = 0;\r
 \r
+            mCharacters = new Player[numPlayers];\r
+\r
             mIsGameOver = new bool[numPlayers];\r
             mIsTerminated = new bool[numPlayers];\r
 \r
@@ -222,7 +225,7 @@ namespace CarFire
                 foreach (IEntity entity in State.Entities)\r
                 {\r
                     Point coordinates = entity.Coordinates;\r
-                    grid[coordinates.X, coordinates.Y] = true;\r
+                    if (State.Map.IsCellOpen(coordinates)) grid[coordinates.X, coordinates.Y] = false;\r
                 }\r
                 return grid;\r
             }\r
@@ -232,13 +235,29 @@ namespace CarFire
 \r
 \r
         #region Public Methods\r
-        public bool IsCellOpen(Point point)\r
+\r
+        public IEntity GetEntityAtCoordinates(Point point)\r
         {\r
-            if (!State.Map.IsCellOpen(point)) return false;\r
             foreach (IEntity entity in State.Entities)\r
             {\r
-                if (entity.Coordinates == point) return false;\r
+                if (entity.Coordinates == point) return entity;\r
+            }\r
+            return null;\r
+        }\r
+\r
+        public Player GetPlayerAtCoordinates(Point point)\r
+        {\r
+            foreach (Player player in State.mCharacters)\r
+            {\r
+                if (player != null && player.Coordinates == point) return player;\r
             }\r
+            return null;\r
+        }\r
+\r
+        public bool IsCellOpen(Point point)\r
+        {\r
+            if (!State.Map.IsCellOpen(point)) return false;\r
+            if (GetEntityAtCoordinates(point) != null) return false;\r
             return true;\r
         }\r
 \r
@@ -259,7 +278,7 @@ namespace CarFire
             {\r
                 State.mCharacters[i].Coordinates = State.Map.GetStartingPositionForPlayer(i + 1);\r
             }\r
-            State.Entities = State.Map.GetAllEntities();\r
+            State.Entities = State.Map.GetAllEntities(this);\r
         }\r
         public void LoadContent(ContentManager contentManager)\r
         {\r
@@ -310,9 +329,8 @@ namespace CarFire
             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
-            State.Entities = State.Map.GetAllEntities();\r
+            State.Map = mContentManager.Load<Map>("Maps/level1");\r
+            State.Entities = State.Map.GetAllEntities(this);\r
             Map.DefaultTile = mContentManager.Load<Texture2D>("default");\r
 \r
             /*\r
@@ -380,7 +398,7 @@ namespace CarFire
         public long Update(TimeSpan elapsedTime)\r
         {\r
             State.AdvanceFrame(mInputs, elapsedTime.Milliseconds);  // Apply the inputs, advance game state.\r
-            State.mDisplay.Update(elapsedTime, State, mThisPlayerID);\r
+            State.mDisplay.Update(elapsedTime, 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
This page took 0.023953 seconds and 4 git commands to generate.