]> Dogcows Code - chaz/carfire/blobdiff - CarFire/CarFire/CarFire/Game.cs
Moved a couple lines...
[chaz/carfire] / CarFire / CarFire / CarFire / Game.cs
index f78945b65d21fc85bf8fe94624d4b2af6b16b621..9a44ff37f16629945ff18469cf4e862935903167 100644 (file)
@@ -15,8 +15,7 @@ namespace CarFire
     public class GameState\r
     {\r
         #region Public Properties\r
-        private const int hitMonsterScore = 20;\r
-        private const int killMonsterScore = 100;\r
+        \r
         public int HitMonsterScore { get { return hitMonsterScore; } }\r
         public int KillMonsterScore { get { return killMonsterScore; } }\r
 \r
@@ -31,7 +30,6 @@ namespace CarFire
         public List<Projectile> mProjectiles = new List<Projectile>();\r
         public Player[] mCharacters;\r
         public Display mDisplay;\r
-        public AI AIData;\r
         #endregion\r
 \r
 \r
@@ -161,7 +159,8 @@ namespace CarFire
 \r
 \r
         #region Private Variables\r
-\r
+        private const int hitMonsterScore = 20;\r
+        private const int killMonsterScore = 100;\r
         int mNumberOfPlayers;\r
         public Point[] mMouseLocation;\r
         public bool[] mMouseButton;\r
@@ -225,11 +224,17 @@ namespace CarFire
         {\r
             get\r
             {\r
-                bool[,] grid = State.Map.Grid;\r
+                bool[,] grid = (bool[,])State.Map.Grid.Clone();\r
                 foreach (IEntity entity in State.Entities)\r
                 {\r
                     Point coordinates = entity.Coordinates;\r
-                    if (State.Map.IsCellOpen(coordinates)) grid[coordinates.X, coordinates.Y] = false;\r
+                    grid[coordinates.X, coordinates.Y] = false;\r
+                }\r
+                foreach (Player player in State.mCharacters)\r
+                {\r
+                    if (player == null) continue;\r
+                    Point coordinates = player.Coordinates;\r
+                    grid[coordinates.X, coordinates.Y] = false;\r
                 }\r
                 return grid;\r
             }\r
@@ -279,6 +284,8 @@ namespace CarFire
             if (!State.Map.IsCellOpen(point)) return false;\r
             IEntity entity = GetEntityAtCoordinates(point);\r
             if (entity != null && entity.IsCollidable) return false;\r
+            Player player = GetPlayerAtCoordinates(point);\r
+            if (player != null) return false;\r
             return true;\r
         }\r
 \r
@@ -301,6 +308,15 @@ namespace CarFire
         public void AdvanceLevel()\r
         {\r
             // TODO: Load the next map, etc...\r
+            //TODO somehow get next map\r
+            State.Entities.Clear();\r
+            String nextMap = State.Map.Next;\r
+            State.Map = mContentManager.Load<Map>("Maps/"+nextMap);\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(this);\r
         }\r
 \r
         /// <summary>\r
@@ -316,21 +332,6 @@ namespace CarFire
         public Game()\r
         {\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(this);\r
         }\r
         public void LoadContent(ContentManager contentManager)\r
         {\r
@@ -384,46 +385,46 @@ namespace CarFire
             // Load the tilemap.\r
             Texture2D mapTiles = mContentManager.Load<Texture2D>("graphics/wallAndFloorTilesNoEdgeScale");\r
             Tilemap tilemap = new Tilemap(mapTiles, 10, 7);\r
-            tilemap.SetTile(' ', new Point(4, 5), TileFlags.Default);\r
-            tilemap.SetTile('`', new Point(0, 1), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('~', new Point(1, 1), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('!', new Point(3, 1), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('@', new Point(4, 1), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('#', new Point(5, 1), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('$', new Point(6, 1), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('%', new Point(8, 1), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('^', new Point(9, 1), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('&', new Point(0, 2), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('=', new Point(1, 2), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('*', new Point(2, 2), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('(', new Point(4, 2), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile(')', new Point(0, 3), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('_', new Point(2, 3), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile('-', new Point(9, 3), TileFlags.Closed | TileFlags.Wall);\r
-            tilemap.SetTile(',', new Point(1, 4), TileFlags.Default);\r
-            tilemap.SetTile('+', new Point(2, 4), TileFlags.Default);\r
-            tilemap.SetTile('[', new Point(3, 4), TileFlags.Default);\r
-            tilemap.SetTile(']', new Point(4, 4), TileFlags.Default);\r
-            tilemap.SetTile('{', new Point(5, 4), TileFlags.Default);\r
-            tilemap.SetTile('}', new Point(6, 4), TileFlags.Default);\r
-            tilemap.SetTile('\\', new Point(8, 4), TileFlags.Default);\r
-            tilemap.SetTile('|', new Point(9, 4), TileFlags.Default);\r
-            tilemap.SetTile(';', new Point(0, 5), TileFlags.Default);\r
-            tilemap.SetTile(':', new Point(1, 5), TileFlags.Default);\r
+            tilemap.SetTile('`',  new Point(0, 2), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('~',  new Point(1, 2), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('!',  new Point(2, 2), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('@',  new Point(3, 2), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('#',  new Point(4, 2), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('$',  new Point(5, 2), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('%',  new Point(6, 2), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('^',  new Point(8, 2), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('&',  new Point(9, 2), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('*',  new Point(0, 3), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('(',  new Point(1, 3), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile(')',  new Point(2, 3), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('-',  new Point(3, 3), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('=',  new Point(4, 3), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('_',  new Point(5, 3), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('+',  new Point(6, 3), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('|',  new Point(8, 3), TileFlags.Closed | TileFlags.Wall);\r
+            tilemap.SetTile('[',  new Point(0, 4), TileFlags.Default);\r
+            tilemap.SetTile(']',  new Point(1, 4), TileFlags.Default);\r
+            tilemap.SetTile('{',  new Point(2, 4), TileFlags.Default);\r
+            tilemap.SetTile('}',  new Point(3, 4), TileFlags.Default);\r
+            tilemap.SetTile('?',  new Point(4, 4), TileFlags.Default);\r
+            tilemap.SetTile(',',  new Point(7, 4), TileFlags.Default);\r
+            tilemap.SetTile('.',  new Point(8, 4), TileFlags.Default);\r
+            tilemap.SetTile('\\', new Point(9, 4), TileFlags.Default);\r
+            tilemap.SetTile(';',  new Point(0, 5), TileFlags.Default);\r
+            tilemap.SetTile(':',  new Point(1, 5), TileFlags.Default);\r
             tilemap.SetTile('\'', new Point(2, 5), TileFlags.Default);\r
-            tilemap.SetTile('"', new Point(3, 5), TileFlags.Default);\r
-            tilemap.SetTile('.', new Point(5, 5), TileFlags.Default);\r
-            tilemap.SetTile('<', new Point(6, 5), TileFlags.Default);\r
-            tilemap.SetTile('>', new Point(7, 5), TileFlags.Default);\r
-            tilemap.SetTile('/', new Point(8, 5), TileFlags.Default);\r
-            tilemap.SetTile('?', new Point(9, 5), TileFlags.Default);\r
+            tilemap.SetTile('"',  new Point(3, 5), TileFlags.Default);\r
+            tilemap.SetTile(' ',  new Point(4, 5), TileFlags.Default);\r
+            tilemap.SetTile('<',  new Point(7, 5), TileFlags.Default);\r
+            tilemap.SetTile('>',  new Point(8, 5), TileFlags.Default);\r
+            tilemap.SetTile('/',  new Point(9, 5), TileFlags.Default);\r
             Map.Tilemap = tilemap;\r
 \r
             // Load the first map.\r
-            State.Map = mContentManager.Load<Map>("Maps/level1");\r
+            State.Map = mContentManager.Load<Map>("Maps/colosseumClosed");\r
             State.Entities = State.Map.GetAllEntities(this);\r
 \r
-            //State.AIData = new AI(this);\r
+            mAIData = new AI(this);\r
 \r
             /*\r
             mPlayers.Clear();\r
@@ -491,7 +492,23 @@ namespace CarFire
         {\r
             State.AdvanceFrame(mInputs, elapsedTime.Milliseconds);  // Apply the inputs, advance game state.\r
             State.mDisplay.Update(elapsedTime, mThisPlayerID);\r
-            State.Entities.ForEach(delegate(IEntity e) { e.Update(elapsedTime); });\r
+            State.Entities.ForEach(delegate(IEntity e) \r
+            {\r
+                IMonster m = e as IMonster;\r
+                if (m != null)\r
+                {\r
+                    if (State.mCharacters[0] != null && mAIData.spaceVisible(e.Coordinates, State.mCharacters[0].Coordinates))\r
+                    {\r
+                        m.Chasing(State.mCharacters[0].Coordinates);\r
+                    }\r
+                    else\r
+                    {\r
+                        m.DefaultAction();\r
+                    }\r
+                }\r
+                e.Update(elapsedTime); \r
+            });\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
             return State.FrameNumber;\r
@@ -538,7 +555,7 @@ namespace CarFire
         #region Private Variables\r
 \r
         SpriteFont menu;\r
-\r
+        AI mAIData;\r
         ContentManager mContentManager;\r
         NextInputs mInputs;\r
 \r
This page took 0.021885 seconds and 4 git commands to generate.