Ejemplo n.º 1
0
        public override void Update(GameTime gameTime)
        {
            KeyboardState keystate = Keyboard.GetState();

            if (keystate.IsKeyDown(Keys.Escape))
            {
                k_escape = true;
            }
            if (keystate.IsKeyUp(Keys.Escape))
            {
                k_escape = false;
            }

            if (currentScreen == Screens.Game)
            {
                if (waiting)
                {
                    waitTimer += gameTime.ElapsedGameTime.Milliseconds;

                    if (waitTimer > waitTime)
                    {
                        waitTimer = 0;
                        waiting   = false;
                        waited    = true;
                    }
                }

                //game
                world.Update(gameTime);

                zombieWaveManager.Update(gameTime);

                entityManager.Update(gameTime);
                animManager.Update(gameTime);

                //dead player
                if (!entityManager.GetPlayer().alive)
                {
                    ((GameOverScreen)gameOverScreen).SetData(false, handler.GetKilledZombies());
                    currentScreen = Screens.GameOver;
                }


                if (zombieWaveManager.deadZombies == zombieWaveManager.maxZombies)
                {
                    //win game
                    if (!zombieWaveManager.infinity && zombieWaveManager.wave == zombieWaveManager.maxWaves)
                    {
                        ((GameOverScreen)gameOverScreen).SetData(true, handler.GetKilledZombies());
                        currentScreen = Screens.GameOver;
                    }
                    else //wave dead - time to go shoping
                    {
                        if (!waited)
                        {
                            waiting = true;
                            hud.SetWaveDefeated(true);
                        }
                        else
                        {
                            waited        = false;
                            currentScreen = Screens.Shoping;
                            ((Shop)shop).SetCustomer(entityManager.GetPlayer());

                            zombieWaveManager.SetWave(zombieWaveManager.wave + 1);
                            hud.SetWaveDefeated(false);
                        }
                    }
                }

                //pause
                CheckForPause(k_escape);
            }
            else if (currentScreen == Screens.Pause)
            {
                CheckForPause(k_escape);

                pauseScreen.Update(gameTime);
            }
            else if (currentScreen == Screens.Shoping)
            {
                if (k_escape)
                {
                    currentScreen = Screens.Game;
                    waited        = false;
                }

                shop.Update(gameTime);
            }
            else if (currentScreen == Screens.GameOver)
            {
                if (keystate.IsKeyDown(Keys.Enter))
                {
                    handler.SetState(Game1.STATE_MENU);
                }
            }
        }