예제 #1
0
        /// <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;
        }
예제 #2
0
        /// <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;
        }
예제 #3
0
        /// <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;
            }
        }
예제 #4
0
        /// <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;
                }
            }
        }
예제 #5
0
        /// <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;
        }
예제 #6
0
        /// <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;
        }
예제 #7
0
        /// <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;
            }
        }