예제 #1
0
        public static void Update(GameTime gameTime)
        {
            if (WaveNumber == 1 && FirstWaveIntro)
            {
                FirstWaveIntro = false;
                if (MessageBoxManager.MessageBox.Count == 0)
                {
                    MessageBoxManager.Add(new MessageBox(MessageBoxManager.Introduction));
                }
            }


            if (!WaveStarted && !MessageBoxManager.MessageDisplayed && GameManager.GameState == GameManager.GameStates.PlayScreen)
            {
                if (!QuestionPopUpManager.QuestionUp)
                {
                    WaveStartTimer -= gameTime.ElapsedGameTime;
                }

                if (!WaveEndInit)
                {
                    WaveEndInit = true;

                    WaveCompositionCreator();

                    GameManager.ModifyResources(1000);

                    if (questionsAnsweredCorrect == QuestionPopUpManager.QuestionTotal)
                    {
                        GameManager.ModifyResources(WaveManager.WaveComposition.Count * 20);
                    }


                    if (QuestionPopUpManager.QuestionsArray.Count != 0)
                    {
                        GenerateQuestion();
                    }
                    if (GameManager.Manpower != 0 && GameManager.BaseHealth < 100)
                    {
                        float temp = 100 - GameManager.BaseHealth;
                        temp = temp * (GameManager.Manpower / 100);
                        GameManager.BaseHealth += temp * 5;

                        if (GameManager.BaseHealth > 100)
                        {
                            GameManager.BaseHealth = 100;
                        }
                    }

                    for (int i = 0; i < 4; i++)
                    {
                        TroopManager.SpawnTroop();
                    }
                }
            }

            if (WaveStartTimer <= TimeSpan.Zero || WaveStarted)
            {
                WaveStarted = true;

                if (WaveStarted)
                {
                    EnemyManager.Update(gameTime);

                    float    ttMili     = (GameManager.FPS * 1000 / GameRoot.targetTime.Milliseconds);
                    TimeSpan timeAdjust = new TimeSpan(0, 0, 0, 0, (int)ttMili / 1000);

                    EnemySpawnTimer += gameTime.ElapsedGameTime;

                    if (GameRoot.SpeedUp)
                    {
                        EnemySpawnTimer += timeAdjust;
                    }

                    if (EnemySpawnTimer.TotalMilliseconds >= WaveSpawnInterval)
                    {
                        if (WaveComposition.Count != 0)
                        {
                            EnemyManager.SpawnEnemy(WaveComposition[0], new Vector2(0, 0));
                            WaveComposition.RemoveAt(0);
                            WaveEnemiesSpawned++;
                        }

                        EnemySpawnTimer = TimeSpan.Zero;
                    }

                    if (EnemyListener.EnemyList.Count == 0 && WaveComposition.Count == 0)
                    {
                        WaveIncrease();
                    }
                }

                WaveStartTimer = TimeSpan.FromMinutes(1);
            }
        }