Advertisement
Guest User

XML example

a guest
Mar 18th, 2019
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. /// ETML
  2. /// Auteur: Shifumi Studio
  3. /// Date de création: 05.02.2019
  4. /// Date de modification: 05.02.2019
  5. /// Gestion des scores réalisée avec le tutoriel de Oyyou : https://www.youtube.com/watch?v=JzEwVCgALuY
  6. using SpicyInvader.Models;
  7. using System.Collections.Generic;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Xml.Serialization;
  11.  
  12. namespace SpicyInvader.Controllers
  13. {
  14. /// <summary>
  15. /// Classe permettant de gérer la gestion de la sauvegarde des meilleurs scores dans un fichier XML
  16. /// </summary>
  17. public class ScoreController
  18. {
  19. /* Attributs */
  20.  
  21. /// <summary>
  22. /// Chemin et nom du fichier XML contenant les scores
  23. /// </summary>
  24. private static string _fileName = "scores.xml";
  25.  
  26. /* Propriétés */
  27.  
  28. /// <summary>
  29. /// Liste de tous les scores dufichier XML
  30. /// </summary>
  31. public List<Score> Scores { get; private set; }
  32. /// <summary>
  33. /// Liste des 10 meilleures scores du fichier XML
  34. /// </summary>
  35. public List<Score> HighScores { get; private set; }
  36.  
  37. /// <summary>
  38. /// Constructeur avec une liste de scores vide
  39. /// </summary>
  40. public ScoreController()
  41. : this(new List<Score>())
  42. {
  43.  
  44. }
  45.  
  46. /// <summary>
  47. /// Constructeur à l'aide d'une liste de Scores
  48. /// </summary>
  49. /// <param name="scores"></param>
  50. public ScoreController(List<Score> scores)
  51. {
  52. Scores = scores;
  53. UpdateHighscores();
  54. }
  55.  
  56. /// <summary>
  57. /// Ajoute le score actuel à la liste des Scores et retrie les scores
  58. /// </summary>
  59. /// <param name="score"></param>
  60. public void Add(Score score)
  61. {
  62. Scores.Add(score);
  63. Scores = Scores.OrderByDescending(c => c.Value).ToList(); // les meilleures scores sont en premiers
  64. UpdateHighscores();
  65. }
  66.  
  67. /// <summary>
  68. /// Charge le fichier XML qui contient les scores et les ajoute à la liste
  69. /// </summary>
  70. /// <returns>Instance de ScoreContoller avec la liste des scores</returns>
  71. public static ScoreController Load()
  72. {
  73. // Si aucun fichier n'existe, on crée un instance avec une liste vide de ScoreController
  74. if (!File.Exists(_fileName))
  75. return new ScoreController();
  76.  
  77. using (StreamReader reader = new StreamReader(new FileStream(_fileName, FileMode.Open)))
  78. {
  79. XmlSerializer serializer = new XmlSerializer(typeof(List<Score>));
  80. List<Score> scores = (List<Score>)serializer.Deserialize(reader);
  81. return new ScoreController(scores);
  82. }
  83. }
  84.  
  85. /// <summary>
  86. /// Sélectionne les 10 meilleures Scores
  87. /// </summary>
  88. private void UpdateHighscores()
  89. {
  90. HighScores = Scores.Take(10).ToList();
  91. }
  92.  
  93. /// <summary>
  94. /// Sauvegarde la liste actuelle des scores dans le fichier XML
  95. /// </summary>
  96. /// <param name="scoreController">Liste actuelle des scores</param>
  97. public static void Save(ScoreController scoreController)
  98. {
  99. // Override le fichier s'il existe déjà
  100. using (StreamWriter reader = new StreamWriter(new FileStream(_fileName, FileMode.Create)))
  101. {
  102. XmlSerializer serializer = new XmlSerializer(typeof(List<Score>));
  103. serializer.Serialize(reader, scoreController.Scores);
  104. }
  105. }
  106. }
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement