/// <summary> /// Fonction faisant passer la sélection active courante à l'item de menu précédent /// (i.e. celui au dessus de la sélection courante. /// </summary> public void SelectionItemPrecedent() { // Désactiver l'item de menu actif précédent. this.items[this.indexSelection].Selection = false; // S'il y a un autre item au dessus. if (this.indexSelection > 0) { // Mettre à jour l'index d'item actif de sorte qu'il indique // l'item de menu précédent. this.indexSelection--; } else { // L'item courant est le premier du menu, donc mettre à jour l'index // d'item actif de sorte qu'il indique le dernier item du menu. this.indexSelection = this.items.Count - 1; } // Activer le nouvel item de menu. this.items[this.indexSelection].Selection = true; }
/// <summary> /// Fonction faisant passer la sélection active courante au prochain item de menu (i.e. /// celui en dessous de la sélection courante. /// </summary> public void SelectionItemSuivant() { // Désactiver l'item de menu actif précédent. this.items[this.indexSelection].Selection = false; // S'il y a un autre item en dessous. if (this.indexSelection < this.items.Count - 1) { // Mettre à jour l'index d'item actif de sorte qu'il indique // le prochain item de menu. this.indexSelection++; } else { // L'item courant est le dernier du menu, donc mettre à jour l'index d'item // actif de sorte qu'il indique le premier item du menu. this.indexSelection = 0; } // Activer le nouvel item de menu. this.items[this.indexSelection].Selection = true; }
/// <summary> /// Charge le menu d'un fichier XML dont le nom est fourni en paramètre. /// </summary> /// <param name="nomMenu">Fichier XML d'où extraire le menu.</param> public void Load(string nomMenu) { // Initialiser un lexeur de fichier XML. XmlTextReader lecteurXML = new XmlTextReader(nomMenu); // Item de menu en construction lors de la lecture. ItemDeMenu itemCourant = null; // Lire les champs XML un à la fois, séquentiellement. while (lecteurXML.Read()) { // Traiter le champ XML en fonction de son nom. switch (lecteurXML.Name) { // Le nom du menu. case "MenuNom": this.nom = lecteurXML.ReadElementContentAsString(); break; // Le titre du menu. case "MenuTitre": this.titre = lecteurXML.ReadElementContentAsString(); break; // Un nouvel item de menu. case "MenuItem": // Vérifier premièrement si on était en processus de lecture // d'un item de menu précédent. Si c'est le cas, ajouté cet // item à la liste avant de commencer à lire le nouvel item. if (itemCourant != null) { // Puisqu'un item de menu DOIT avoir un nom pour pouvoir le // gérer, on conserve celui lu seulement s'il a un nom. if (itemCourant.Nom != string.Empty) { this.items.Add(itemCourant); } } // Créer un nouvel item de menu à construire. itemCourant = new ItemDeMenu(); break; // Le nom de l'item de menu en cours de lecture. case "MenuItemNom": itemCourant.Nom = lecteurXML.ReadElementContentAsString(); break; // Le titre de l'item de menu en cours de lecture. case "MenuItemTitre": itemCourant.Titre = lecteurXML.ReadElementContentAsString(); break; // L'indentation horizontale (en pixels) de l'item de menu en cours de lecture. case "MenuItemIndent": itemCourant.Indentation = lecteurXML.ReadElementContentAsInt(); break; // L'item de menu actif par défaut (i.e. lorsque le menu est affiché, cet item // sera celui actif. case "IndexSelectionItem": this.indexSelection = lecteurXML.ReadElementContentAsInt(); break; // Position horizontale de l'origine du menu (coin supérieur gauche). case "PositionX": this.origine.X = lecteurXML.ReadElementContentAsInt(); break; // Position verticale de l'origine du menu (coin supérieur gauche). case "PositionY": this.origine.Y = lecteurXML.ReadElementContentAsInt(); break; default: break; } } // Si un item de menu est actif pour sélection, l'en informer. if (this.Selection != null) { this.Selection.Selection = true; } }
/// <summary> /// Fonction déléguée fournie à tous les menus du jeu pour traiter les sélections /// de l'usager. /// </summary> /// <param name="nomMenu">Nom du menu d'où provient la sélection.</param> /// <param name="item">Item de menu sélectionné.</param> protected void SelectionItemMenu(string nomMenu, ItemDeMenu item) { // Est-ce le menu pour quitter le jeu? if (nomMenu == "QuitterMenu") { // Deux sélections possibles : Oui ou Non switch (item.Nom) { case "Oui": // L'usager veut quitter le jeu this.etatJeu = this.EtatJeu = Etats.Quitter; break; case "Non": // L'usager ne veut pas quitter le jeu this.MenuCourant = null; break; default: break; } } }