Esempio n. 1
0
        public void UpdateEscape(GameTime gameTime)
        {
            float seconds = gameTime.getSeconds();

            //remove entities
            foreach (Collectable c in collectablesToRemove)
            {
                if (levels != null)
                {
                    Level l = levels[c.levelX, c.levelY];
                    if (l != null && l.collectables != null)
                    {
                        if (c is Prisoner)
                        {
                            l.removePrisoner((Prisoner)c);
                        }
                        else if (c is PowerupIcon)
                        {
                            l.removePowerup((PowerupIcon)c);
                        }
                        else
                        {
                            l.collectables.Remove(c);
                        }
                    }
                }
            }
            collectablesToRemove.Clear();
            foreach (Enemy e in enemiesToRemove)
            {
                foreach (Level l in levels)
                {
                    if (l != null)
                    {
                        l.enemies.Remove(e);
                    }
                }
            }
            enemiesToRemove.Clear();

            foreach (Hero hero in heroes)
            {
                hero.Update(gameTime);
            }

            foreach (Level l in CurrentLevels)
            {
                l.UpdateEscape(gameTime);
            }

            bool levelChanged = false;

            foreach (Hero hero in heroes)
            {
                levelChanged |= hero.levelChanged;
            }
            if (levelChanged)
            {
                createAndRemoveLevels();
                if (RetroGame.State == GameState.Arena)
                {
                    RetroGame.EnterEscapeMode();
                }
            }

            float mult             = 0f;
            float currentZoomSpeed = Camera.zoomSpeed;

#if DEBUG
            if (heroes[0].isDown(Keys.E))
            {
                mult = 2.7f;
            }
            else if (heroes[0].isDown(Keys.R))
            {
                mult = -2.7f;
            }
            Camera.targetZoom += Camera.zoomSpeed * mult * seconds;
#endif
            if (mult != 0f)
            {
                currentZoomSpeed = 5 * Camera.zoomSpeed;
            }

            if (Camera.targetZoom - Camera.zoom > seconds * currentZoomSpeed)
            {
                Camera.zoom += currentZoomSpeed * seconds;
            }
            else if (Camera.targetZoom - Camera.zoom < -seconds * currentZoomSpeed)
            {
                Camera.zoom -= currentZoomSpeed * seconds;
            }
            else
            {
                Camera.zoom = Camera.targetZoom;
            }
            Camera.Update(gameTime);
        }