Example #1
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            if (gameState == GameState.Menu)
            {
                menu.Update();
            }
            else if (gameState == GameState.Game)
            {
                barrier.SignalAndWait();
                // Updates the Time
                deltaTime      = (float)gameTime.ElapsedGameTime.TotalSeconds;
                totalGameTime += (float)gameTime.ElapsedGameTime.TotalSeconds;
                //adds Gameobjects
                AddGameObjects();

                //call the Spawner
                spawner.Update();

                //Updates GameObjects
                foreach (var go in gameObjects)
                {
                    go.Update();
                }

                //Checks if any vehicle needs to respawn
                if (vehiclesToRemove.Count > 0)
                {
                    foreach (GameObject go in vehiclesToRemove)
                    {
                        foreach (Component comp in go.GetComponentList)
                        {
                            if (comp is Vehicle)
                            {
                                if ((comp as Vehicle).DeathTimeStamp + Constant.respawntime <= totalGameTime)
                                {
                                    (comp as Vehicle).Respawn((comp as Vehicle).PlayerNumber);

                                    VehiclesToRemove.Clear();

                                    break;
                                }
                            }
                        }
                        break;
                    }
                }

                lock (BulletPool.activeListKey)
                {
                    foreach (var go in BulletPool.ActiveBullets)
                    {
                        go.Update();
                    }
                }
                BulletPool.ReleaseList();
                RemoveObjects();
            }
            else if (gameState == GameState.GameOver)
            {
                gameOver.Update();
            }
            else if (gameState == GameState.Score)
            {
                //handles score funktions
                score.Update(gameTime);
            }

            base.Update(gameTime);
        }