Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// ETML
- /// Auteur: Shifumi Studio
- /// Date de création: 05.02.2019
- /// Date de modification: 05.02.2019
- /// Gestion des scores réalisée avec le tutoriel de Oyyou : https://www.youtube.com/watch?v=JzEwVCgALuY
- using SpicyInvader.Models;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Xml.Serialization;
- namespace SpicyInvader.Controllers
- {
- /// <summary>
- /// Classe permettant de gérer la gestion de la sauvegarde des meilleurs scores dans un fichier XML
- /// </summary>
- public class ScoreController
- {
- /* Attributs */
- /// <summary>
- /// Chemin et nom du fichier XML contenant les scores
- /// </summary>
- private static string _fileName = "scores.xml";
- /* Propriétés */
- /// <summary>
- /// Liste de tous les scores dufichier XML
- /// </summary>
- public List<Score> Scores { get; private set; }
- /// <summary>
- /// Liste des 10 meilleures scores du fichier XML
- /// </summary>
- public List<Score> HighScores { get; private set; }
- /// <summary>
- /// Constructeur avec une liste de scores vide
- /// </summary>
- public ScoreController()
- : this(new List<Score>())
- {
- }
- /// <summary>
- /// Constructeur à l'aide d'une liste de Scores
- /// </summary>
- /// <param name="scores"></param>
- public ScoreController(List<Score> scores)
- {
- Scores = scores;
- UpdateHighscores();
- }
- /// <summary>
- /// Ajoute le score actuel à la liste des Scores et retrie les scores
- /// </summary>
- /// <param name="score"></param>
- public void Add(Score score)
- {
- Scores.Add(score);
- Scores = Scores.OrderByDescending(c => c.Value).ToList(); // les meilleures scores sont en premiers
- UpdateHighscores();
- }
- /// <summary>
- /// Charge le fichier XML qui contient les scores et les ajoute à la liste
- /// </summary>
- /// <returns>Instance de ScoreContoller avec la liste des scores</returns>
- public static ScoreController Load()
- {
- // Si aucun fichier n'existe, on crée un instance avec une liste vide de ScoreController
- if (!File.Exists(_fileName))
- return new ScoreController();
- using (StreamReader reader = new StreamReader(new FileStream(_fileName, FileMode.Open)))
- {
- XmlSerializer serializer = new XmlSerializer(typeof(List<Score>));
- List<Score> scores = (List<Score>)serializer.Deserialize(reader);
- return new ScoreController(scores);
- }
- }
- /// <summary>
- /// Sélectionne les 10 meilleures Scores
- /// </summary>
- private void UpdateHighscores()
- {
- HighScores = Scores.Take(10).ToList();
- }
- /// <summary>
- /// Sauvegarde la liste actuelle des scores dans le fichier XML
- /// </summary>
- /// <param name="scoreController">Liste actuelle des scores</param>
- public static void Save(ScoreController scoreController)
- {
- // Override le fichier s'il existe déjà
- using (StreamWriter reader = new StreamWriter(new FileStream(_fileName, FileMode.Create)))
- {
- XmlSerializer serializer = new XmlSerializer(typeof(List<Score>));
- serializer.Serialize(reader, scoreController.Scores);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement