/// <summary> /// Passe au niveau suivant. Recrée les étapes du niveaux, rénitialise le composant d'interface, et sauvegarde /// les statistiques des joueurs, en effaçant leurs effets temporaires. /// Si des powerups sont crées, attend qu'ils soient consommés pour passer au niveau suivant. /// </summary> /// <param name="createPowerups"> Indique si un SpellPowerup par joueur est crée </param> private void NextLevel(bool createPowerups) { InitialScore = Score; ++Level; _levelHasBegun = false; _levelObserver = null; _levelScript = new LevelScript[_players.Count]; for (var i = 0; i < _players.Count; ++i) { _levelScript[i] = new LevelScript(); } var steps = new List <LevelStep> [2]; for (var i = 0; i < _players.Count; ++i) { steps[i] = LevelSteps.CreateSteps(Map.Gateways); } for (var i = 0; i < _players.Count; ++i) { foreach (var step in steps[i]) { _levelScript[i].AddStep(step); } } // Création des powerups if (createPowerups) { for (var i = 0; i < _players.Count; ++i) { var powerups = Powerups.SpellPowerups(); Powerup.Create(Map.BossSpawn + new Point(_spellPowerups * 100 - 50, 0), powerups[Random.Next(powerups.Count)]); ++_spellPowerups; } } }
/// <summary> /// Retourne un composant de l'interface ayant accès aux données du niveau en train de se dérouler. /// </summary> /// <param name="position"> La position du composant </param> /// <returns> Le composant de l'interface </returns> public LevelObserver GetLevelObserver(Point position) { return(_levelObserver ?? (_levelObserver = new LevelObserver(position, _levelScript[0]))); }