]> Dogcows Code - chaz/carfire/blobdiff - CarFire/CarFire/CarFire/GameLogic.cs
git-svn-id: https://bd85.net/svn/cs3505_group@167 92bb83a3-7c8f-8a45-bc97-515c4e399668
[chaz/carfire] / CarFire / CarFire / CarFire / GameLogic.cs
index 6f859d0b72b9349c29cc9796ad69ebc75c87aabc..ee5535a433e3274da0484ee5af51404459c3d25e 100644 (file)
@@ -11,20 +11,46 @@ namespace CarFire
 {\r
     class GameLogic\r
     {\r
+        \r
         Game mGame;\r
         public GameLogic(Game game)\r
         {\r
             mGame = game;\r
         }\r
+        /// <summary>\r
+        /// Update the game logic.\r
+        /// </summary>\r
+        /// <param name="timespan">timeslice</param>\r
+        /// <param name="thisPlayer">index of the player to center the screen around</param>\r
         public void Update(TimeSpan timespan, int thisPlayer)\r
         {\r
             //Handle projectiles - update and check for wall collisions\r
             for (int i = 0; i < mGame.State.mProjectiles.Count; i++)\r
             {\r
                 bool removed = false;\r
-                if (!mGame.State.Map.IsCellOpen(new Point(mGame.State.mProjectiles[i].Coordinates.X, mGame.State.mProjectiles[i].Coordinates.Y)))\r
+                //Check to see if there are any entities in the square with the projectile\r
+                if (!mGame.IsCellOpen(new Point(mGame.State.mProjectiles[i].Coordinates.X, mGame.State.mProjectiles[i].Coordinates.Y)))\r
                 {\r
-\r
+                    //The projectile has hit something.\r
+                    IEntity hitEntity = mGame.GetEntityAtCoordinates(new Point(mGame.State.mProjectiles[i].Coordinates.X, mGame.State.mProjectiles[i].Coordinates.Y));\r
+                    //If it is a monster than decrement monster health and increment the score of the player who shot it.\r
+                    if (hitEntity is IMonster)\r
+                    {\r
+                        IMonster hitMonster = (IMonster)hitEntity;\r
+                        hitMonster.causeDamageTo(mGame.State.mProjectiles[i].Damage);\r
+                        if (hitMonster.Health > 0)\r
+                        {\r
+                            mGame.State.mCharacters[mGame.State.mProjectiles[i].CharacterIndex].Score += mGame.State.HitMonsterScore;\r
+                            Console.WriteLine(mGame.State.mCharacters[mGame.State.mProjectiles[i].CharacterIndex].Score);\r
+                        }\r
+                        else\r
+                        {\r
+                            mGame.State.mCharacters[mGame.State.mProjectiles[i].CharacterIndex].Score += mGame.State.KillMonsterScore;\r
+                            Console.WriteLine(mGame.State.mCharacters[mGame.State.mProjectiles[i].CharacterIndex].Score);\r
+                            //Remove dead monsters\r
+                            mGame.State.Entities.Remove(hitEntity);\r
+                        }\r
+                    }\r
                     mGame.State.mProjectiles.RemoveAt(i);\r
                     removed = true;\r
                     i--;\r
@@ -52,21 +78,8 @@ namespace CarFire
             //Update input for each player\r
             for (int i = 0; i < mGame.State.NumberOfPlayers; i++)\r
             {\r
-                //If player has not selected a player yet let them select one.\r
-                if (mGame.State.mCharacters[i] == null)\r
-                {\r
-                    if (mGame.State.GetKeysDown(i).Contains(Keys.Enter))\r
-                    {\r
-                        //mCharacters[i] = new Human(mGame, "", everything, projectile1, this, mGame.State.Map.GetStartingPositionForPlayer(i + 1));\r
-                    }\r
-                }\r
-                //Regular player input updates\r
-                else\r
-                {\r
-\r
-                    mGame.State.mCharacters[i].UpdateInput(timespan, mGame.State.GetKeysDown(i));\r
-\r
-                }\r
+                if(mGame.State.mCharacters[i] != null)\r
+                    mGame.State.mCharacters[i].Update(timespan, mGame.State.GetKeysDown(i));\r
             }\r
             if (mGame.State.mCharacters[thisPlayer] != null)\r
             {\r
This page took 0.020781 seconds and 4 git commands to generate.