コード例 #1
0
        public static void Update(GameTime gameTime)
        {
            if (mouseSqrCoords != null)
            {
                MouseScreenPos = new Vector2(mouseSqrCoords.x * SQUARESIZE, mouseSqrCoords.y * SQUARESIZE + BORDERTOP);
            }

            m_manPower = TroopListener.TroopList.Count();

            UiSideScreen.Update();
            UiTopScreen.Update();

            QuestionPopUpManager.Update();
            WaveManager.Update(gameTime);
            TowerManager.Update();
            TroopManager.Update(gameTime);
            EffectManager.Update(gameTime);
            PopUpTextManager.Update(gameTime);
            PopUpNotificationManager.Update(gameTime);
            MessageBoxManager.Update(gameTime);

            if (BaseHealth <= 0)
            {
                if (EffectManager.EffectList.Count < 10)
                {
                    for (int i = 0; i < 1; i++)
                    {
                        EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, new Vector2(ENDPOINT.x * SQUARESIZE + rnd.Next(-30, 60), ENDPOINT.y * SQUARESIZE + BORDERTOP + rnd.Next(-30, 60)), true);
                    }
                }

                GameState = GameStates.LoseScreen;
            }

            if (GameState == GameStates.LoseScreen && SaveData)
            {
                SaveData             = false;
                Scores.AllTimeKills += WaveManager.EnemiesKilled;
                if (Scores.HighestWaveKills <= WaveManager.EnemiesKilled && Scores.HighestWave <= WaveManager.WaveNumber)
                {
                    Scores.HighestWaveKills = WaveManager.EnemiesKilled;
                    Scores.HighestWave      = WaveManager.WaveNumber;
                }

                Scores.SaveData(Scores);
            }

            if (GameState == GameStates.PlayScreen && !SaveData)
            {
                SaveData = true;
            }

            if (HelpMode)
            {
                HelpDialogManager.Update();
            }
        }
コード例 #2
0
        public static void Update()
        {
            foreach (Tower tower in Towers)
            {
                if (tower.Health <= 0)
                {
                    // DEADED
                    BuildManager.RemoveTowerFromSquare(tower);
                    DestroyTower(tower.TowerID);
                    EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, tower.Position - new Vector2(Art.TowerGun[0].Width / 2, Art.TowerGun[0].Height / 2), true);
                    GameManager.grid.gridSquares[(int)tower.towerCoords.x, (int)tower.towerCoords.y].sqrEdited = true;
                    break;
                }

                else if (GridManager.HasNeighbour(Squares.BuildingType.Trench, tower.towerCoords))
                {
                    tower.Update();
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Updates the enemies and checks for destroyed enemies
        /// </summary>
        public static void Update(GameTime gt)
        {
            foreach (Enemy Enemy in Enemies)
            {
                if (Enemy.IsDestroyed)
                {
                    WaveManager.WaveEnemiesUsed++;

                    if (Enemy.hitPoints <= 0)                           // check if it was destroyed by means of towers
                    {
                        GameManager.EnemyWasDestroyed(Enemy.EnemyType); // resource acquisition


                        if (Enemy.EnemyType == "Helicopter")
                        {
                            EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.Helicopter.Width / 2, Art.Helicopter.Height / 2), true);
                        }

                        if (Enemy.EnemyType == "Transport")
                        {
                            for (float i = 0; i < 4; i++)
                            {
                                WaveManager.WaveEnemiesUsed--;
                                SpawnEnemy("Soldier", Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4));
                                EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.Transport.Width / 2, Art.Transport.Height / 2), true);
                            }
                        }

                        else if (Enemy.EnemyType == "Tank")
                        {
                            for (float i = 0; i < 2; i++)
                            {
                                WaveManager.WaveEnemiesUsed--;
                                SpawnEnemy("Soldier", Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4));
                                EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.TankBottom.Width / 2, Art.TankBottom.Height / 2), true);
                            }
                        }

                        else if (Enemy.EnemyType == "Jeep")
                        {
                            for (float i = 0; i < 1; i++)
                            {
                                WaveManager.WaveEnemiesUsed--;
                                SpawnEnemy("Soldier", Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4));
                                EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.JeepBottom.Width / 2, Art.JeepBottom.Height / 2), true);
                            }
                        }

                        else if (Enemy.EnemyType == "Soldier")
                        {
                            EffectManager.EffectCall(EffectManager.EffectEnums.Blood, Enemy.ScreenPos, false);
                        }
                    }

                    DestroyEnemy(Enemy.EnemyID, Enemy.EnemyType);
                    break;
                }

                else
                {
                    Enemy.Update(GameManager.grid.gridStatus, gt); //updates the enemy
                }
            }

            foreach (Projectile proj in TankTurret.EnemyProjectiles) //updates the projectiles of enemy
            {
                proj.Update();
            }
        }
コード例 #4
0
        /// <summary>
        /// Updates the enemies and checks for destroyed enemies
        /// </summary>
        public static void Update(GameTime gt)
        {
            if (WaveManager.WaveNumber > 10)
            {
                SpawnSoldierString = "SoldierBlue";
            }


            if (WaveManager.WaveNumber > 20)
            {
                SpawnSoldierString = "SoldierRed";
            }

            foreach (Enemy Enemy in Enemies)
            {
                if (Enemy.IsDestroyed)
                {
                    if (Enemy.hitPoints <= 0) // check if it was destroyed by means of towers
                    {
                        WaveManager.EnemiesKilled++;

                        GameManager.EnemyWasDestroyed(Enemy.EnemyType); // resource acquisition
                        if (Enemy.EnemyType == "Helicopter")
                        {
                            EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2((Art.Helicopter.Width / 4) / 2, Art.Helicopter.Height / 2), true);
                            Sound.Explosion.Play(GameManager.MASTER_VOL * GameManager.SOUNDFX_VOL * 0.5f, 0f, 0f);
                        }

                        if (Enemy.EnemyType == "Transport")
                        {
                            for (float i = 0; i < 4; i++)
                            {
                                SpawnEnemy(SpawnSoldierString, Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4));
                                EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.Transport.Width / 2, Art.Transport.Height / 2), true);
                            }

                            Sound.Explosion.Play(GameManager.MASTER_VOL * GameManager.SOUNDFX_VOL * 0.5f, 0f, 0f);
                        }

                        else if (Enemy.EnemyType == "Tank")
                        {
                            for (float i = 0; i < 2; i++)
                            {
                                SpawnEnemy(SpawnSoldierString, Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4));
                                EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.TankBottom.Width / 2, Art.TankBottom.Height / 2), true);
                            }
                            Sound.Explosion.Play(GameManager.MASTER_VOL * GameManager.SOUNDFX_VOL * 0.5f, 0f, 0f);
                        }

                        else if (Enemy.EnemyType == "Jeep")
                        {
                            for (float i = 0; i < 1; i++)
                            {
                                SpawnEnemy(SpawnSoldierString, Enemy.enemyVect - new Vector2(Enemy.Direction.X * -i / 4, Enemy.Direction.Y * -i / 4));
                                EffectManager.EffectCall(EffectManager.EffectEnums.Explosion, Enemy.ScreenPos - new Vector2(Art.JeepBottom.Width / 2, Art.JeepBottom.Height / 2), true);
                            }
                            Sound.Explosion.Play(GameManager.MASTER_VOL * GameManager.SOUNDFX_VOL * 0.5f, 0f, 0f);
                        }

                        else if (Enemy.EnemyType == "Soldier")
                        {
                            EffectManager.EffectCall(EffectManager.EffectEnums.Blood, Enemy.ScreenPos + new Vector2(GameManager.rnd.Next(-5, 6), GameManager.rnd.Next(-5, 6)), false);

                            if (GameManager.rnd.Next(1, 100) < 25)
                            {
                                Sound.WilhelmScream.Play(GameManager.MASTER_VOL * GameManager.SOUNDFX_VOL * 0.5f, 0f, 0f);
                            }
                        }
                    }

                    //DestroyEnemy(Enemy, Enemy.EnemyType, Enemy.EnemyID);
                    EnemiesToRemove.Add(Enemy);
                }

                if (float.IsNaN(Enemy.enemyVect.X) || float.IsNaN(Enemy.enemyVect.Y)) // This needs testing...
                {
                    //DestroyEnemy(Enemy, Enemy.EnemyType, Enemy.EnemyID);
                    EnemiesToRemove.Add(Enemy);
                    //WaveManager.WaveEnemiesUsed++;
                }

                else
                {
                    Enemy.Update(GameManager.grid.gridStatus, gt); //updates the enemy
                }
            }

            foreach (Projectile proj in TankTurret.EnemyProjectiles) //updates the projectiles of enemy
            {
                proj.Update();
            }
            // Remove Projectiles after lifetime.
            for (int i = 0; i < TankTurret.EnemyProjectiles.Count(); i++)
            {
                if (TankTurret.EnemyProjectiles[i].TimeSinceSpawn > TankTurret.EnemyProjectiles[i].Lifetime)
                {
                    TankTurret.EnemyProjectiles.RemoveAt(i);
                }
            }

            foreach (Enemy enemy in EnemiesToAdd)
            {
                Enemies.Add(enemy);
            }

            foreach (Enemy enemy in EnemiesToRemove)
            {
                DestroyEnemy(enemy, enemy.EnemyType, enemy.EnemyID);
            }

            EnemiesToAdd.Clear();
            EnemiesToRemove.Clear();
        }