Ejemplo n.º 1
0
        public void Update(GameTime gameTime)
        {
            // Next level?
            if (DotsLeft + EnergizersLeft == 0)
            {
                NextLevel();
            }

            PacMan.Update(gameTime);

            if (!HideBlinky)
            {
                Blinky.Update(gameTime);
            }
            if (!HidePinky)
            {
                Pinky.Update(gameTime);
            }
            if (!HideInky)
            {
                Inky.Update(gameTime);
            }
            if (!HideClyde)
            {
                Clyde.Update(gameTime);
            }

            if (Fruit != null)
            {
                Fruit.Update(gameTime);

                if (!Fruit.IsFlashing && Fruit.Duration < 5)
                {
                    Fruit.Flash(4, 8);
                }

                if (Fruit.Duration < 0)
                {
                    Fruit = null;
                }
            }

            if (_ghostModeDuration > 0)
            {
                _ghostModeDuration -= gameTime.ElapsedGameTime.TotalSeconds;
            }

            if (_ghostModeDuration <= 0)
            {
                GhostMode = GhostMode.Chase;
            }

            // Frightened mode
            if (GhostMode == GhostMode.Frightened && !Inky.IsFlashing && _ghostModeDuration <= _ghostModeBeginFlashing)
            {
                Blinky.Flash(_ghostModeBeginFlashing, _ghostModeFlashes);
                Pinky.Flash(_ghostModeBeginFlashing, _ghostModeFlashes);
                Inky.Flash(_ghostModeBeginFlashing, _ghostModeFlashes);
                Clyde.Flash(_ghostModeBeginFlashing, _ghostModeFlashes);
            }

            // Effects
            for (int i = 0; i < Effects.Count; i++)
            {
                Effects[i].Update(gameTime);
            }
        }