Changeset 17

Show
Ignore:
Timestamp:
29.06.2008 19:23:04 (4 years ago)
Author:
sylvain
Message:

***suppression des menus nombre de critères et niveau***
Lineo.cpp et .h: enlever les références à la classe VueNbrCrit? et VueNiveau? ainsi qu'au événement associé
Events.h : suppression des événement associés.
VueMainMenu?.cpp: suppression de l'item niveau
Déplacemet des fichiers VueNbrCrit? et VueNiveau? dans la partie Documents/OLDSRC

**création d'un type de menu horizontal:
dans menu.h nouveau type item MENU_TYPE_LISTE_TEXTE:
permet via la commande:

Uint8 addItem(string titre_item, Uint16 event_code, Uint8 type, string item_texte); // créé pour le type MENU_TYPE_LISTE_TEXTE
d'ajouter un item du type: titre_item < item_texte >
(les espaces sont de la longueur MENU_TYPE_LISTE_MARGE_IMG)

(rem: j'ai supprimé la possibilité d'ajouter une data, étant donné que tous les appels se font avec MENU_EVENT_NO_DATA).

cette fonction public appelle la fonction privée:
addItem(titre_item, event_code, NULL, type, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, false,item_texte);

Dans addItem, on initialise le texte et le titre et la longueur
Dans initPositions, on initialise les dimensions et position des flèches
Dans drawItem, on dessine les 4 éléments
Dans freeItem, on efface les 4 éléments
Dans testItemOnOut et dans processEvents, ce type est géré exactement comme celui MENU_TYPE_LISTE
nouvelle fonction updateItemListeTexte: permet de mettre à jour le texte d'un item type liste Texte:
efface le texte, et la flèche de droite, met à jour ces items, puis les réécrits

**Menu choix jouer**
- remplissage de deux tableaux avec la config à gauche, et le nom correspondant (avec traduction) à droite
- ajout de deux items de type "menu liste texte",

  • 1er : titre Niveau (traduit), texte est la config (traduit)
  • 2eme: titre Type de Jeu (traduit), texte = Config (traduit)

- ajoute de deux fonctions pour rechercher, avancer et reculer,
- gestion des évenements correspondant (EVENT_CHOIX_NIVEAU et EVENT_CHOIX_NBRCRIT)

****REM diverse**
- type de jeu c'est pas beau, pourquoi pas mode de jeu
- "normal" non plus, pourquoi ne pas jouer sur "unique", à voir.
- ai "doublé" les fonctions recherche/suivant/précédent dans MenuchoixJouer?, ce n'est pas très "classe" mais ça marche.

**Question**
- paramètres _TotalMin dans fonction Menu::init dépend de total_min mais en fait fixé :-/

**TODO MENU**
Différencier les 3 premiers liens du menu choix jouer et les autres

- mettre de l'espace entre deux possibilités, insérer un item "vide" via une fonction public dans menu (pas très propre?),

ou (mieux?) mettre un test dans initPositions: si i>1 & item type[i-1] != MENU_TYPE_LISTE_TEXTE & item[i] == MENU_TYPE_LISTE_TEXTE alors total.h += hauteur d'une ligne.

- changement de police/couleur ...

Location:
branches/ticket5
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • branches/ticket5/projectCodeBlock_ubuntu/Lineo.cbp

    r13 r17  
    4949                <Unit filename="../datas/son/LICENCE.txt" /> 
    5050                <Unit filename="Lineo.rc" /> 
     51                <Unit filename="commit.txt" /> 
    5152                <Unit filename="lineo.ico" /> 
    5253                <Unit filename="../src/ComReseau.cpp" /> 
     
    136137                <Unit filename="../src/VueMainMenu.cpp" /> 
    137138                <Unit filename="../src/VueMainMenu.h" /> 
    138                 <Unit filename="../src/VueNbrCrit.cpp" /> 
    139                 <Unit filename="../src/VueNbrCrit.h" /> 
    140                 <Unit filename="../src/VueNiveau.cpp" /> 
    141                 <Unit filename="../src/VueNiveau.h" /> 
    142139                <Unit filename="../src/VueOption.cpp" /> 
    143140                <Unit filename="../src/VueOption.h" /> 
  • branches/ticket5/src/Events.h

    r12 r17  
    2929        EVENT_0, 
    3030// -------------------------------------------------------------------------- // 
    31     EVENT_CREATE_VUE_GENERIQUE_DEBUT, 
    32     EVENT_CREATE_VUE_GENERIQUE_FIN, 
    33     EVENT_CREATE_VUE_MAIN_MENU, 
     31  EVENT_CREATE_VUE_GENERIQUE_DEBUT, 
     32  EVENT_CREATE_VUE_GENERIQUE_FIN, 
     33  EVENT_CREATE_VUE_MAIN_MENU, 
    3434        EVENT_CREATE_VUE_GAME, 
    35         EVENT_CREATE_VUE_NIVEAU, 
     35        //EVENT_CREATE_VUE_NIVEAU,//obsolète 
    3636        EVENT_CREATE_VUE_OPTION, 
    3737        EVENT_CREATE_VUE_CONSTRUCTION, 
     
    4747        EVENT_CREATE_VUE_HOW_TO_PLAY, 
    4848#endif 
    49   EVENT_CREATE_VUE_NBRCRIT, 
     49  //EVENT_CREATE_VUE_NBRCRIT,//obsolète 
    5050// -------------------------------------------------------------------------- // 
    5151        EVENT_MENU_JOUER, 
     
    5858        EVENT_MENU_QUITTER, 
    5959// -------------------------------------------------------------------------- // 
     60  /* partie à supprimer 
    6061        EVENT_NIVEAU_FACILE, 
    6162        EVENT_NIVEAU_MOYEN, 
    6263        EVENT_NIVEAU_DIFFICILE, 
    63         //EVENT_NIVEAU_IMPOSSIBLE, obsolète 
     64        //EVENT_NIVEAU_IMPOSSIBLE, obsolète*/ 
    6465// -------------------------------------------------------------------------- // 
    6566//gestion des événement choix du nombre de critères 
     67        /*partie à supprimer 
    6668        EVENT_CRIT_1, 
    6769        EVENT_CRIT_2, 
    6870        EVENT_CRIT_3, 
    6971        EVENT_CRIT_4, 
    70         EVENT_CRIT_5, 
     72        EVENT_CRIT_5,*/ 
    7173// -------------------------------------------------------------------------- // 
    7274        EVENT_GAME_PARTIE_START, 
     
    8789        EVENT_GAME_NEW_PARTIE, 
    8890        EVENT_GAME_JE_VEUX_PLUS_NEW_PARTIE, 
    89     EVENT_GAME_REPONSE_NEW_PARTIE_OUI, 
    90     EVENT_GAME_REPONSE_NEW_PARTIE_NON, 
     91  EVENT_GAME_REPONSE_NEW_PARTIE_OUI, 
     92  EVENT_GAME_REPONSE_NEW_PARTIE_NON, 
    9193#endif 
    9294// -------------------------------------------------------------------------- // 
     
    107109        EVENT_CHOIX_COLOR_PC_2, 
    108110// -------------------------------------------------------------------------- // 
    109     EVENT_JOUEUR_QUICOMMENCE_OK, 
     111  EVENT_JOUEUR_QUICOMMENCE_OK, 
    110112// -------------------------------------------------------------------------- // 
    111113        EVENT_CHOIX_LANGUE, 
    112114// -------------------------------------------------------------------------- // 
     115  //évenement de la vue choix jouer avec les nouveaux menus 
     116  EVENT_CHOIX_NBRCRIT, 
     117  EVENT_CHOIX_NIVEAU, 
     118// -------------------------------------------------------------------------- // 
     119 
    113120#ifndef Nokia770 
    114121        EVENT_LOGIN_LOGIN, 
  • branches/ticket5/src/Lineo.cpp

    r12 r17  
    2323#include "VueMainMenu.h" 
    2424#include "VueGame.h" 
    25 #include "VueNiveau.h" 
     25//#include "VueNiveau.h"//obsolÚte 
    2626#include "VueOption.h" 
    2727#include "VueSousOption.h" 
     
    3131#include "VueChoixCouleurPiece.h" 
    3232#include "VueCredits.h" 
    33 #include "VueNbrCrit.h" 
     33//#include "VueNbrCrit.h" //obsolÚte 
    3434 
    3535// Initialisation du singleton à NULL 
     
    153153    _VueMainMenu=NULL; 
    154154    _VueGame=NULL; 
    155     _VueNbrCrit=NULL; 
    156     _VueNiveau=NULL; 
     155//    _VueNbrCrit=NULL; 
     156//    _VueNiveau=NULL; 
    157157    _VueOption=NULL; 
    158158    _VueConstruction=NULL; 
     
    338338                                _VueActive=VUE_GAME; 
    339339                            }break; 
    340                             case EVENT_CREATE_VUE_NIVEAU: 
     340                            //partie à suprimer 
     341                            /*case EVENT_CREATE_VUE_NIVEAU: 
    341342                                // on libÚre les vues éventuellements affichées 
    342343                                freeVues(); 
     
    344345                                _VueNiveau = new VueNiveau(); 
    345346                                _VueActive=VUE_NIVEAU; 
    346                             break; 
     347                            break;*/ 
    347348                            case EVENT_CREATE_VUE_OPTION:{ 
    348349                                // on libÚre les vues éventuellements affichées 
     
    438439                            }break; 
    439440#endif // ---------------------------------------------------------------------- 
    440                     case EVENT_CREATE_VUE_NBRCRIT :{ 
     441                    //partie à supprimer 
     442                    /*case EVENT_CREATE_VUE_NBRCRIT :{ 
    441443                      // on récupÚre le mode de jeux avant de libérer la vue 
    442444                      Uint16 mode_jeu = *(Uint16*)event.user.data1; 
     
    446448                      _VueNbrCrit = new VueNbrCrit(mode_jeu); 
    447449                      _VueActive=VUE_NBRCRIT; 
    448                     }break; 
     450                    }break;*/ 
    449451                            case EVENT_QUITTER: 
    450452                                return true; 
     
    472474                        _VueGame->processEvents(&event); 
    473475                    break; 
     476                    /*partie à supprimer 
    474477              case VUE_NBRCRIT: 
    475478                  _VueNbrCrit -> processEvents(&event); 
     
    477480                    case VUE_NIVEAU: 
    478481                        _VueNiveau->processEvents(&event); 
    479                     break; 
     482                    break;*/ 
    480483                    case VUE_OPTION: 
    481484                        _VueOption->processEvents(&event); 
     
    555558    delete(_VueMainMenu); 
    556559    delete(_VueGame); 
     560 /* partie à supprimer 
    557561    delete(_VueNbrCrit); 
    558     delete(_VueNiveau); 
     562    delete(_VueNiveau);*/ 
    559563    delete(_VueOption); 
    560564    delete(_VueConstruction); 
     
    576580    _VueMainMenu=NULL; 
    577581    _VueGame=NULL; 
    578     _VueNbrCrit=NULL; 
    579     _VueNiveau=NULL; 
     582    //partie à supprimer 
     583/*    _VueNbrCrit=NULL; 
     584    _VueNiveau=NULL;*/ 
    580585    _VueOption=NULL; 
    581586    _VueConstruction=NULL; 
  • branches/ticket5/src/Lineo.h

    r12 r17  
    6262class VueMainMenu; 
    6363class VueGame; 
    64 class VueNbrCrit; 
    65 class VueNiveau; 
     64//class VueNbrCrit;//obsolÚte 
     65//class VueNiveau; 
    6666class VueOption; 
    6767class VueConstruction; 
     
    8989    VUE_MAIN_MENU, 
    9090    VUE_GAME, 
    91     VUE_NBRCRIT, 
    92     VUE_NIVEAU, 
     91//    VUE_NBRCRIT, 
     92//    VUE_NIVEAU, 
    9393    VUE_OPTION, 
    9494    VUE_CONSTRUCTION, 
     
    129129        VueMainMenu*            _VueMainMenu; 
    130130        VueGame*                _VueGame; 
    131         VueNbrCrit*           _VueNbrCrit; 
    132         VueNiveau*              _VueNiveau; 
     131//        VueNbrCrit*           _VueNbrCrit; 
     132//        VueNiveau*            _VueNiveau; 
    133133        VueOption*              _VueOption; 
    134134        VueConstruction*        _VueConstruction; 
  • branches/ticket5/src/Menu.cpp

    r1 r17  
    7171    _FlagCurseurClignotant = false; 
    7272    _MouseLeftIsDown = false; 
    73 //    _CurseurClignotantId=0; 
     73    // _CurseurClignotantId=0; 
    7474    // on initiliase les datas pour les fleches de l'item liste 
    75         _EventDataFlecheL=MENU_FLECHE_L; 
    76         _EventDataFlecheR=MENU_FLECHE_R; 
     75    _EventDataFlecheL=MENU_FLECHE_L; 
     76    _EventDataFlecheR=MENU_FLECHE_R; 
    7777    // on initialise le titre 
    7878    if(_TitreFlag){ 
     
    8585    _Retour=retour; 
    8686    if(_Retour){ 
    87         _RetourSpriteNameImg=(string)(DATA_PATH)+"menus/fleche_retour.png"; 
     87        _RetourSpriteNameImg=(string)(DATA_PATH)+"menus/fleche_retour.png"; 
    8888        _RetourSpriteName=_RetourSpriteNameImg+_Titre; 
    8989        _RetourEventCode=event_code_retour; 
     
    113113    vector<string> liste_vide; 
    114114    liste_vide.clear(); 
    115     return addItem(titre_item, event_code, NULL, MENU_TYPE_LIEN, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, false); 
     115    return addItem(titre_item, event_code, NULL, MENU_TYPE_LIEN, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, false,ITEM_SANS_TEXTE); 
    116116} 
    117117 
     
    120120    vector<string> liste_vide; 
    121121    liste_vide.clear(); 
    122     return addItem(titre_item, event_code, value_input, MENU_TYPE_INPUT, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, false); 
     122    return addItem(titre_item, event_code, value_input, MENU_TYPE_INPUT, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, false,ITEM_SANS_TEXTE); 
    123123} 
    124124 
     
    127127    vector<string> liste_vide; 
    128128    liste_vide.clear(); 
    129     return addItem(titre_item, event_code, value_input, MENU_TYPE_INPUT, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, is_password); 
     129    return addItem(titre_item, event_code, value_input, MENU_TYPE_INPUT, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, is_password,ITEM_SANS_TEXTE); 
    130130} 
    131131 
     
    133133    vector<string> liste_vide; 
    134134    liste_vide.clear(); 
    135     return addItem(titre_item, event_code, NULL, type, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, false); 
     135    return addItem(titre_item, event_code, NULL, type, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, false,ITEM_SANS_TEXTE); 
    136136} 
    137137 
     
    139139    vector<string> liste_vide; 
    140140    liste_vide.clear(); 
    141     return addItem(titre_item, event_code, NULL, type, data, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, false); 
     141    return addItem(titre_item, event_code, NULL, type, data, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, false,ITEM_SANS_TEXTE); 
    142142} 
    143143 
     
    145145    vector<string> liste_vide; 
    146146    liste_vide.clear(); 
    147     return addItem(titre_item, event_code, NULL, type, data, sprite_name, sprite_w, sprite_h, liste_vide, 0, 0, false); 
     147    return addItem(titre_item, event_code, NULL, type, data, sprite_name, sprite_w, sprite_h, liste_vide, 0, 0, false,ITEM_SANS_TEXTE); 
    148148} 
    149149 
    150150// à réserver pour le type MENU_TYPE_TABLEAU 
    151151Uint8 Menu::addItem(string titre_item, Uint16 event_code, vector<string> tab_values, Uint16 tab_w, Uint8 nb_lignes){ 
    152     return addItem(titre_item, event_code, NULL, MENU_TYPE_TABLEAU, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, tab_values, tab_w, nb_lignes, false); 
    153 } 
     152    return addItem(titre_item, event_code, NULL, MENU_TYPE_TABLEAU, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, tab_values, tab_w, nb_lignes, false,ITEM_SANS_TEXTE); 
     153} 
     154 
     155 
     156// pour le type MENU_LISTE_TEXTE 
     157Uint8 Menu::addItem(string titre_item, Uint16 event_code, Uint8 type, string item_texte){ 
     158  //on doit obtenit titre_item < item_name > 
     159  vector<string> liste_vide; 
     160  liste_vide.clear(); 
     161  return addItem(titre_item, event_code, NULL, type, MENU_EVENT_NO_DATA, ITEM_SANS_IMAGE, 0, 0, liste_vide, 0, 0, false,item_texte); 
     162} 
     163 
    154164 
    155165// ajoute une ligne d'option (un item) au  menu 
    156166// si event_code == 0 >>> pas d'évÚnement !!! 
    157167// ATTENTION !!! data a une valeur réservée : 0xFFFF ==> MENU_EVENT_NO_DATA 
    158 Uint8 Menu::addItem(string titre_item, Uint16 event_code, string *value_input, Uint8 type, Uint32 data, string sprite_name, Uint16 sprite_w, Uint16 sprite_h, vector<string> tab_values, Uint16 tab_w, Uint8 nb_lignes, bool is_password) 
     168Uint8 Menu::addItem(string titre_item, Uint16 event_code, string *value_input, Uint8 type, Uint32 data, string sprite_name, Uint16 sprite_w, Uint16 sprite_h, vector<string> tab_values, Uint16 tab_w, Uint8 nb_lignes, bool is_password, string item_texte) 
    159169{ 
    160170    if(_NbItem<MENU_NB_MAX_ITEM){ 
     
    162172        _NbItem++; 
    163173        // on essaye de faire en sorte que le titre de cet item soit unique afin de ne pas avoir de problÚme 
    164         _Item[no_item] = titre_item + to_string(no_item) + to_string(type) + sprite_name; 
     174        _Item[no_item] = titre_item + to_string(no_item) + to_string(type) + sprite_name + item_texte; 
    165175        // on attribut chaque variable de l'item, 
    166                 // certaines par defaut qui seront modifiées dans le switch ci-dessous 
     176        // certaines par defaut qui seront modifiées dans le switch ci-dessous 
    167177        _ItemFont[no_item]=MENU_FONT_ITEM_OUT; 
    168178        _ItemType[no_item]=type; 
     
    170180        _ItemEventCode[no_item]=event_code; 
    171181        _ItemEventData[no_item]=data; 
    172                 _ItemSpriteName[no_item]=sprite_name; 
    173                 _ItemSpriteRect[no_item].w=sprite_w; 
    174                 _ItemSpriteRect[no_item].h=sprite_h; 
    175                 _ItemFlecheFontL[no_item]=MENU_FONT_FLECHE_OUT; 
    176                 _ItemFlecheFontR[no_item]=MENU_FONT_FLECHE_OUT; 
    177                 _ItemTitreId[no_item]=0; 
    178                 _ItemFlecheIdL[no_item]=0; 
    179                 _ItemFlecheIdR[no_item]=0; 
    180                 _ItemInputValue[no_item]=value_input; 
    181                 _ItemIsPassword[no_item]=is_password; 
    182                 _ItemTabValues[no_item]=tab_values; 
     182        _ItemSpriteName[no_item]=sprite_name; 
     183        _ItemSpriteRect[no_item].w=sprite_w; 
     184        _ItemSpriteRect[no_item].h=sprite_h; 
     185        _ItemFlecheFontL[no_item]=MENU_FONT_FLECHE_OUT; 
     186        _ItemFlecheFontR[no_item]=MENU_FONT_FLECHE_OUT; 
     187        _ItemTitreId[no_item]=0; 
     188        _ItemTexteId[no_item]=0;// contient le texte central dans le cas d'un type liste texte 
     189        _ItemFlecheIdL[no_item]=0; 
     190        _ItemFlecheIdR[no_item]=0; 
     191        _ItemInputValue[no_item]=value_input; 
     192        _ItemIsPassword[no_item]=is_password; 
     193        _ItemTabValues[no_item]=tab_values; 
    183194        _ItemTabW[no_item]=tab_w; // utile seulement pour MENU_TYPE_TABLEAU 
    184195        _ItemTabNbLignes[no_item]=nb_lignes; // utile seulement pour MENU_TYPE_TABLEAU 
     
    191202        _ItemTabValueSelected[no_item]="ERREUR ==> Menu::addItem"; 
    192203        _ItemSampleClic[no_item]=SAMPLE_MENU_CLICK; 
    193  
    194                 // on modifie certains paramÚtre en fonction du type 
     204        _ItemTexte[no_item]=item_texte;// va être modifié dans le switch pour le type menu liste texte 
     205        // on modifie certains paramÚtre en fonction du type 
    195206        switch(type){ 
    196207                        case MENU_TYPE_RADIO: 
     
    240251                    _ItemTitre[no_item] = titre_item; 
    241252                    _ItemTypeValue[no_item]=MENU_TYPE_INPUT_OFF; 
    242                                 // on calcul la largeur max de l'item 
    243                                 Uint16 w_image_fleches = VFont::getInstance()->getPhraseWidth(_ItemFlecheFontL[no_item],"<>") + 2 * MENU_TYPE_LISTE_MARGE_IMG + _ItemSpriteRect[no_item].w; 
    244                                 Uint16 w_legende = (_ItemTitre[no_item]==ITEM_SANS_TITRE) ? 0 : VFont::getInstance()->getPhraseWidth(_ItemFont[no_item],_ItemTitre[no_item]); 
    245                                 _ItemRect[no_item].w = Max(w_image_fleches,w_legende); 
    246                                 // on calcul la hauteur max de l'item, on calcul du haut de l'image en bas du texte avec une marge sous l'image qu'il y est ou non le texte... 
    247                                 _ItemRect[no_item].h = _ItemSpriteRect[no_item].h + MENU_TYPE_LISTE_MARGE_IMG +((_ItemTitre[no_item]==ITEM_SANS_TITRE) ? 0 : VFont::getInstance()->getHeight(_ItemFont[no_item])); 
     253              // on calcul la largeur max de l'item 
     254              Uint16 w_image_fleches = VFont::getInstance()->getPhraseWidth(_ItemFlecheFontL[no_item],"<>") + 2 * MENU_TYPE_LISTE_MARGE_IMG + _ItemSpriteRect[no_item].w; 
     255              Uint16 w_legende = (_ItemTitre[no_item]==ITEM_SANS_TITRE) ? 0 : VFont::getInstance()->getPhraseWidth(_ItemFont[no_item],_ItemTitre[no_item]); 
     256              _ItemRect[no_item].w = Max(w_image_fleches,w_legende); 
     257              // on calcul la hauteur max de l'item, on calcul du haut de l'image en bas du texte avec une marge sous l'image qu'il y est ou non le texte... 
     258              _ItemRect[no_item].h = _ItemSpriteRect[no_item].h + MENU_TYPE_LISTE_MARGE_IMG +((_ItemTitre[no_item]==ITEM_SANS_TITRE) ? 0 : VFont::getInstance()->getHeight(_ItemFont[no_item])); 
    248259                }break; 
     260          case MENU_TYPE_LISTE_TEXTE:{ 
     261                    _ItemTitre[no_item] = titre_item; 
     262                    _ItemTexte[no_item] = item_texte; 
     263                    _ItemTypeValue[no_item]=MENU_TYPE_INPUT_OFF; 
     264              // on calcul la largeur de l'item: largeur du titre+ marge + < + largeur du texte +marge + > =3*marge +<> + texte + titre 
     265              _ItemRect[no_item].w= VFont::getInstance()->getPhraseWidth(_ItemFont[no_item],_ItemTitre[no_item]+"<>"+_ItemTexte[no_item])+3*MENU_TYPE_LISTE_MARGE_IMG; 
     266          }break; 
    249267                        case MENU_TYPE_LIEN: 
    250268                        default: 
     
    438456        } 
    439457    } 
     458  // on initialise quelques trucs pour les MENU_TYPE_LISTE_TEXTE 
     459    for(i=0;i<_NbItem;i++){ 
     460        if(_ItemType[i]==MENU_TYPE_LISTE_TEXTE){ 
     461          // on initialise les dimensions des fleches à gauche et à droite de l'image pour le survol de la souris 
     462          _ItemFlecheRectL[i].w = VFont::getInstance()->getPhraseWidth(_ItemFlecheFontL[i],"<"); 
     463          _ItemFlecheRectR[i].w = VFont::getInstance()->getPhraseWidth(_ItemFlecheFontR[i],">"); 
     464          _ItemFlecheRectL[i].h = VFont::getInstance()->getHeight(_ItemFlecheFontL[i]); 
     465          _ItemFlecheRectR[i].h = VFont::getInstance()->getHeight(_ItemFlecheFontR[i]); 
     466          // on initialise la position des fleches à gauche et à droite de l'image 
     467          _ItemFlecheRectL[i].x = _ItemRect[i].x + VFont::getInstance()->getPhraseWidth(_ItemFont[i],_ItemTitre[i]) +MENU_TYPE_LISTE_MARGE_IMG; 
     468          _ItemFlecheRectR[i].x = _ItemRect[i].x + _ItemRect[i].w - _ItemFlecheRectR[i].w; 
     469          _ItemFlecheRectL[i].y = _ItemRect[i].y; 
     470          _ItemFlecheRectR[i].y = _ItemRect[i].y; 
     471        } 
     472    } 
     473 
     474 
     475 
     476 
     477 
     478 
    440479  // =========================================================================== 
    441480  // MAINTENANT seulement on peut calculer la position du Titre car elle dépend 
     
    517556                                            Z_MENU_TEXTE); 
    518557            } 
     558        break; 
     559        case MENU_TYPE_LISTE_TEXTE: 
     560          //titre 
     561          _ItemTitreId[no_item] = VTexte::getInstance()->add(_ItemFont[no_item],_ItemTitre[no_item],_ItemRect[no_item].x,_ItemRect[no_item].y,Z_MENU_TEXTE); 
     562          // on ajoute les fleches à gauche et à droite du texte 
     563          _ItemFlecheIdL[no_item] = VTexte::getInstance()->add(_ItemFlecheFontL[no_item],(string)"<",_ItemFlecheRectL[no_item].x,_ItemFlecheRectL[no_item].y,Z_MENU_TEXTE); 
     564          _ItemFlecheIdR[no_item] = VTexte::getInstance()->add(_ItemFlecheFontR[no_item],(string)">",_ItemFlecheRectR[no_item].x,_ItemFlecheRectR[no_item].y,Z_MENU_TEXTE); 
     565          //le texte 
     566          { 
     567             Uint32 y_texte=(Uint32) (_ItemFlecheRectL[no_item].x +_ItemFlecheRectL[no_item].w+MENU_TYPE_LISTE_MARGE_IMG); 
     568            _ItemTexteId[no_item] = VTexte::getInstance()->add(_ItemFont[no_item],_ItemTexte[no_item],y_texte,_ItemRect[no_item].y,Z_MENU_TEXTE); 
     569          } 
     570 
    519571        break; 
    520572        case MENU_TYPE_TABLEAU:{ 
     
    581633            VTexte::getInstance()->del(_ItemTitreId[no_item]); 
    582634        break; 
     635         case MENU_TYPE_LISTE_TEXTE: 
     636            VTexte::getInstance()->del(_ItemFlecheIdL[no_item]); 
     637            VTexte::getInstance()->del(_ItemFlecheIdR[no_item]); 
     638            VTexte::getInstance()->del(_ItemTitreId[no_item]); 
     639            VTexte::getInstance()->del(_ItemTexteId[no_item]); 
     640        break; 
     641 
    583642        case MENU_TYPE_TABLEAU:{ 
    584643            delete(_ItemFond[no_item]); 
     
    611670 
    612671    switch(_ItemType[no_item]){ 
    613         case MENU_TYPE_LISTE:{ 
     672      case MENU_TYPE_LISTE_TEXTE: 
     673      case MENU_TYPE_LISTE:{ 
    614674                // ====================================== 
    615675                // d'abord la flÚche gauche 
     
    658718                } 
    659719        }break; 
    660  
    661720        case MENU_TYPE_TABLEAU:{ 
    662721            if(_ItemTabValues[no_item].size() > 0){ 
     
    815874{ 
    816875        if(_ItemType[no_item]==MENU_TYPE_LISTE){ 
    817                 // on supprime l'ancien texte qu'il existe ou non on essaye 
     876                // on supprime l'ancien titre qu'il existe ou non on essaye 
    818877            VTexte::getInstance()->del(_ItemTitreId[no_item]); 
    819878            // on met l'image à l'arriÚre plan afin qu'elle soit cachée 
     
    837896} 
    838897 
     898// Modifie le texte d'un item liste liste texte 
     899void Menu::updateItemListeTexte(Uint8 no_item, string item_texte) 
     900{ 
     901        if(_ItemType[no_item]==MENU_TYPE_LISTE_TEXTE){ 
     902      // on supprime l'ancien texte 
     903      VTexte::getInstance()->del(_ItemTexteId[no_item]); 
     904      // on supprime la flÚche de droite 
     905      VTexte::getInstance()->del(_ItemFlecheIdR[no_item]); 
     906            // on enregistre les nouveau paramÚtre de l'item 
     907            _ItemTexte[no_item] = item_texte; 
     908      // on met à jour la largeur de l'item: largeur du titre+ marge + < + largeur du texte +marge + > =3*marge +<> + texte + titre 
     909      _ItemRect[no_item].w= VFont::getInstance()->getPhraseWidth(_ItemFont[no_item],_ItemTitre[no_item]+"<>"+_ItemTexte[no_item])+3*MENU_TYPE_LISTE_MARGE_IMG; 
     910      // on met à jour la position de la flÚche droite: 
     911      _ItemFlecheRectR[no_item].x = _ItemRect[no_item].x + _ItemRect[no_item].w - _ItemFlecheRectR[no_item].w; 
     912      // on redessine la flÚche 
     913      _ItemFlecheIdR[no_item] = VTexte::getInstance()->add(_ItemFlecheFontR[no_item],(string)">",_ItemFlecheRectR[no_item].x,_ItemFlecheRectR[no_item].y,Z_MENU_TEXTE); 
     914      // et le texte 
     915      Uint32 y_texte=(Uint32) (_ItemFlecheRectL[no_item].x +_ItemFlecheRectL[no_item].w+MENU_TYPE_LISTE_MARGE_IMG); 
     916      _ItemTexteId[no_item] = VTexte::getInstance()->add(_ItemFont[no_item],_ItemTexte[no_item],y_texte,_ItemRect[no_item].y,Z_MENU_TEXTE); 
     917        } 
     918} 
     919 
    839920// remplace la liste d'un tableau par une nouvelle 
    840921void Menu::updateItemTableau(Uint8 no_item, vector<string> new_tab_values) 
     
    9501031                                switch(_ItemType[i]){ 
    9511032                        case MENU_TYPE_LISTE: 
     1033                        case MENU_TYPE_LISTE_TEXTE: 
    9521034                            if(_ItemFlecheFontL[i]==MENU_FONT_FLECHE_ON){ 
    953                                                     Events::getInstance()->addEvent(_ItemEventCode[i],&_EventDataFlecheL); 
    954                                                 }else if(_ItemFlecheFontR[i]==MENU_FONT_FLECHE_ON){ 
     1035                                Events::getInstance()->addEvent(_ItemEventCode[i],&_EventDataFlecheL); 
     1036                              }else if(_ItemFlecheFontR[i]==MENU_FONT_FLECHE_ON){ 
    9551037                                Events::getInstance()->addEvent(_ItemEventCode[i],&_EventDataFlecheR); 
    956                                                 } 
    957                             // on joue un petit son pour marquer le clic de la souris 
    958                             Sample::getInstance()->play(_ItemSampleClic[i]); 
    959                                         break; 
    960  
     1038                              } 
     1039                              // on joue un petit son pour marquer le clic de la souris 
     1040                              Sample::getInstance()->play(_ItemSampleClic[i]); 
     1041                        break; 
    9611042                        case MENU_TYPE_TABLEAU: 
    9621043                            if(_ItemTabLigneSelected[i]){ 
  • branches/ticket5/src/Menu.h

    r1 r17  
    6767        MENU_TYPE_INPUT,   // permet de saisir quelque chose au clavier, même un mot de passe 
    6868        MENU_TYPE_LISTE,   // affiche une image avec un texte (optionnel) dessous et une flÚche à gauche et une à droite 
     69        MENU_TYPE_LISTE_TEXTE, //affiche un texte avant, une flÚche gauche, un autre texte et une flÚche à droite. 
    6970        MENU_TYPE_TABLEAU, // affiche un tableau avec un ascenceur à droite pour parcourir le tableau sur la hauteur seulement 
    7071// ------------------ DEFINES DU TYPES RADIO -------------------------------- // 
     
    105106#define ITEM_SANS_IMAGE "ITEM_SANS_IMAGE" 
    106107 
     108#define ITEM_SANS_TEXTE "ITEM_SANS_TEXTE" 
     109 
    107110#define MENU_TYPE_LISTE_MARGE_IMG 20 
    108111 
     
    132135        string      _Item[MENU_NB_MAX_ITEM]; 
    133136        string      _ItemTitre[MENU_NB_MAX_ITEM]; 
    134         Uint32          _ItemTitreId[MENU_NB_MAX_ITEM]; 
     137        Uint32            _ItemTitreId[MENU_NB_MAX_ITEM]; 
    135138        Uint32      _ItemEventCode[MENU_NB_MAX_ITEM]; 
    136139        Uint16      _ItemEventData[MENU_NB_MAX_ITEM]; 
     
    153156 
    154157        // ==================================== 
    155         // utile seulement pour MENU_TYPE_LISTE 
     158        // utile seulement pour MENU_TYPE_LISTE et MENU_TYPE_LISTE_TEXTE 
    156159        string      _ItemFlecheFontL[MENU_NB_MAX_ITEM]; 
    157160        SDL_Rect    _ItemFlecheRectL[MENU_NB_MAX_ITEM]; 
     
    160163        SDL_Rect    _ItemFlecheRectR[MENU_NB_MAX_ITEM]; 
    161164        Uint32          _ItemFlecheIdR[MENU_NB_MAX_ITEM]; 
     165 
     166        // ==================================== 
     167        // utile seulement pour MENU_TYPE_LISTE_TEXTE 
     168        string      _ItemTexte[MENU_NB_MAX_ITEM];// pour menu de type liste texte 
     169        Uint32            _ItemTexteId[MENU_NB_MAX_ITEM];// pour menu de type liste texte 
    162170 
    163171        // ====================================== 
     
    210218        public: 
    211219                Menu(string titre, bool retour, Uint16 event_code_retour, Uint16 total_min); 
    212         Menu(string titre, bool retour, Uint16 event_code_retour); 
     220    Menu(string titre, bool retour, Uint16 event_code_retour); 
    213221                Menu(string titre); // ceci ne doit être utilisé que pour des comparaison, surcharge de l'opérateur == 
    214222                Uint8 addItem(string titre_item, Uint16 event_code); 
     
    219227                Uint8 addItem(string titre_item, Uint16 event_code, Uint8 type, Uint32 data, string sprite_name, Uint16 sprite_w, Uint16 sprite_h); 
    220228                Uint8 addItem(string titre_item, Uint16 event_code, vector<string> tab_values, Uint16 tab_w, Uint8 nb_lignes); // à réserver pour le type MENU_TYPE_TABLEAU 
    221                 void changeItemSample(Uint8 no_item, string new_sample); // change le sample de l'item désigné par no_item 
    222         void setItemOn(Uint8 no_item); // met l'un des items à ON et tous les autres à OFF 
     229                Uint8 addItem(string titre_item, Uint16 event_code, Uint8 type, string item_texte); // créé pour le type MENU_TYPE_LISTE_TEXTE 
     230                void changeItemSample(Uint8 no_item, string new_sample);// change le sample de l'item désigné par no_item 
     231    void setItemOn(Uint8 no_item); // met l'un des items à ON et tous les autres à OFF 
    223232                void updateItemListe(Uint8 no_item, string titre_item, string sprite_name); // Modifie l'image et le texte d'un item liste 
     233    void updateItemListeTexte(Uint8 no_item, string item_texte); 
    224234                void updateItemTableau(Uint8 no_item, vector<string> new_tab_values); // remplace la liste d'un tableau par une nouvelle 
    225235                void setAlignBottom(Uint16 offset); // permet d'aligner le menu sur le bas de l'écran à l'aide d'un offset 
    226         void draw(void); // affiche le menu à l'écran 
    227         void processEvents(SDL_Event *event); // gÚre les évÚnements du menu 
     236    void draw(void); // affiche le menu à l'écran 
     237    void processEvents(SDL_Event *event); // gÚre les évÚnements du menu 
    228238                ~Menu(); 
    229239 
     
    238248        void init(string titre, bool retour, Uint16 event_code_retour, Uint16 total_min); // initialise la classe, cette méthode est appelée par les constructeurs 
    239249        void initPositions(void); //gÚre la position de tous les éléments du menu 
    240                 Uint8 addItem(string titre_item, Uint16 event_code, string *value_input, Uint8 type, Uint32 data, string sprite_name, Uint16 sprite_w, Uint16 sprite_h, vector<string> tab_values, Uint16 tab_w, Uint8 nb_lignes, bool is_password); 
     250        Uint8 addItem(string titre_item, Uint16 event_code, string *value_input, Uint8 type, Uint32 data, string sprite_name, Uint16 sprite_w, Uint16 sprite_h, vector<string> tab_values, Uint16 tab_w, 
     251                      Uint8 nb_lignes, bool is_password,string item_texte); 
    241252        void drawItem(Uint8 no_item); // affiche un item à l'écran 
    242253        void freeItem(Uint8 no_item); // efface un item de l'écran et retourne le z_index 
  • branches/ticket5/src/VueChoixJouer.cpp

    r12 r17  
    2323VueChoixJouer::VueChoixJouer() 
    2424{ 
     25    // on initialise la liste des types de jeu 
     26    _ListeNbrCrit.clear(); 
     27    _ListeNbrCrit["1"] = Langue::getInstance()->get("Couleur seulement"); 
     28    _ListeNbrCrit["2"] = Langue::getInstance()->get("Couleur et forme"); 
     29    _ListeNbrCrit["3"] = Langue::getInstance()->get("Couleur, forme et taille"); 
     30    _ListeNbrCrit["4"] = Langue::getInstance()->get("Normal"); 
     31    _ListeNbrCrit["5"] = Langue::getInstance()->get("ImPoSsIbLe"); 
     32 
     33 
     34    //on initialise la liste des niveaux: 
     35    _ListeNiveau.clear(); 
     36    _ListeNiveau["facile"] = Langue::getInstance()->get("Facile"); 
     37    _ListeNiveau["moyen"] = Langue::getInstance()->get("Moyen"); 
     38    _ListeNiveau["difficile"] = Langue::getInstance()->get("Difficile"); 
     39 
     40 
     41 
    2542    // on initialise le fond d'écran 
    2643    _FondEcran = new FondEcran(FD_ECR_VIERGE|FD_ECR_LINEO_SMALL); 
    2744    // on initialise le menu 
    2845    _Menu = new Menu(Langue::getInstance()->get("Jouer une partie"), true, EVENT_CREATE_VUE_MAIN_MENU); 
    29     _Menu->addItem(Langue::getInstance()->get("Humain contre I.A."),EVENT_CREATE_VUE_NBRCRIT,MENU_TYPE_LIEN,CHOIX_JOUER_MODE_1_JOUEUR); 
    30     _Menu->addItem(Langue::getInstance()->get("Humain contre Humain"),EVENT_CREATE_VUE_NBRCRIT,MENU_TYPE_LIEN,CHOIX_JOUER_MODE_2_JOUEURS); 
     46    _Menu->addItem(Langue::getInstance()->get("Humain contre I.A."),EVENT_CREATE_VUE_GAME,MENU_TYPE_LIEN,CHOIX_JOUER_MODE_1_JOUEUR); 
     47    _Menu->addItem(Langue::getInstance()->get("Humain contre Humain"),EVENT_CREATE_VUE_GAME,MENU_TYPE_LIEN,CHOIX_JOUER_MODE_2_JOUEURS); 
     48 
    3149#ifndef Nokia770 
    3250    if(Lineo::getInstance()->_SessionReseau=="NULL" || Lineo::getInstance()->_SessionReseau==""){ 
     
    3755    } 
    3856#endif 
     57 
     58 
     59    _titreNbrCrit = Langue::getInstance()->get("Type de jeu"); 
     60    _titreNiveau = Langue::getInstance()->get("Niveau"); 
     61 
     62    _ListeNbrCritIter = getItNbrCrit(Config::getInstance()->get("nbr_criteres")); 
     63    _ListeNiveauIter  = getItNiveau(Config::getInstance()->get("niveau")); 
     64 
     65 
     66    _NoItemNbrCrit = _Menu->addItem(_titreNbrCrit,EVENT_CHOIX_NBRCRIT,MENU_TYPE_LISTE_TEXTE,(*_ListeNbrCritIter).second); 
     67    _NoItemNiveau = _Menu->addItem(_titreNiveau,EVENT_CHOIX_NIVEAU,MENU_TYPE_LISTE_TEXTE,(*_ListeNiveauIter).second); 
     68 
     69 
    3970    _Menu->draw(); 
    4071} 
     
    4475    // on supprime toutes les classes 
    4576        delete(_FondEcran); 
    46     delete(_Menu); 
     77  delete(_Menu); 
    4778} 
    4879 
     
    5081void VueChoixJouer::processEvents(SDL_Event *event) 
    5182{ 
     83  // on s'occupe de notre vue en premier 
     84  switch (event->type) { 
     85    case SDL_USEREVENT: 
     86      switch (event->user.code) 
     87        { 
     88          case EVENT_CHOIX_NBRCRIT:{ 
     89            Uint16 fleche = *(Uint16*)event->user.data1; 
     90              if(fleche==MENU_FLECHE_L){ 
     91                _ListeNbrCritIter = listeNbrCritPrev(_ListeNbrCritIter); 
     92              }else if(fleche==MENU_FLECHE_R){ 
     93                _ListeNbrCritIter = listeNbrCritNext(_ListeNbrCritIter); 
     94              } 
     95              Config::getInstance()->set("nbr_criteres",(*_ListeNbrCritIter).first); 
     96              _Menu->updateItemListeTexte(_NoItemNbrCrit,(*_ListeNbrCritIter).second); 
     97              }break; 
     98          case EVENT_CHOIX_NIVEAU:{ 
     99            Uint16 fleche = *(Uint16*)event->user.data1; 
     100             if(fleche==MENU_FLECHE_L){ 
     101                _ListeNiveauIter = listeNiveauPrev(_ListeNiveauIter); 
     102              }else if(fleche==MENU_FLECHE_R){ 
     103                _ListeNiveauIter = listeNiveauNext(_ListeNiveauIter); 
     104              } 
     105              Config::getInstance()->set("nbr_criteres",(*_ListeNiveauIter).first); 
     106              _Menu->updateItemListeTexte(_NoItemNiveau,(*_ListeNiveauIter).second); 
     107              }break; 
     108        }break; 
     109        } 
     110        // puis du menu 
    52111    _Menu->processEvents(event); 
    53112} 
     113 
     114// récupère le mode de jeu traduit à partir de la lecture de la config 
     115mapSSit VueChoixJouer::getItNbrCrit(string nbrCrit) 
     116{ 
     117    mapSSit itRecherche=_ListeNbrCrit.begin(); 
     118    while(itRecherche!=_ListeNbrCrit.end()){ 
     119            if((*itRecherche).first == nbrCrit){ 
     120                return itRecherche; 
     121            } 
     122        itRecherche++; 
     123    } 
     124        return _ListeNbrCrit.begin(); 
     125} 
     126 
     127// récupère le niveau traduit à partir de la lecture de la config 
     128mapSSit VueChoixJouer::getItNiveau(string niveau) 
     129{ 
     130    mapSSit itRecherche=_ListeNiveau.begin(); 
     131    while(itRecherche!=_ListeNiveau.end()){ 
     132            if((*itRecherche).first == niveau){ 
     133                return itRecherche; 
     134            } 
     135        itRecherche++; 
     136    } 
     137        return _ListeNiveau.begin(); 
     138} 
     139 
     140//avance d'un mode de jeu 
     141mapSSit VueChoixJouer::listeNbrCritNext(mapSSit current_iter) 
     142{ 
     143        current_iter++; 
     144        if(current_iter==_ListeNbrCrit.end()){ 
     145        current_iter = _ListeNbrCrit.begin(); 
     146        } 
     147        return current_iter; 
     148} 
     149 
     150//avance d'un niveau 
     151mapSSit VueChoixJouer::listeNiveauNext(mapSSit current_iter) 
     152{ 
     153        current_iter++; 
     154        if(current_iter==_ListeNiveau.end()){ 
     155        current_iter = _ListeNiveau.begin(); 
     156        } 
     157        return current_iter; 
     158} 
     159 
     160 
     161// recule d'un mode de jeu 
     162mapSSit VueChoixJouer::listeNbrCritPrev(mapSSit current_iter) 
     163{ 
     164        if(current_iter==_ListeNbrCrit.begin()){ 
     165        current_iter = _ListeNbrCrit.end(); 
     166        } 
     167        current_iter--; 
     168        return current_iter; 
     169} 
     170 
     171// recule d'un niveau 
     172mapSSit VueChoixJouer::listeNiveauPrev(mapSSit current_iter) 
     173{ 
     174        if(current_iter==_ListeNiveau.begin()){ 
     175        current_iter = _ListeNiveau.end(); 
     176        } 
     177        current_iter--; 
     178        return current_iter; 
     179} 
     180 
     181 
     182 
  • branches/ticket5/src/VueChoixJouer.h

    r1 r17  
    3232#define CHOIX_JOUER_MODE_RESEAU      2 
    3333 
     34using namespace std; 
     35 
     36typedef map<string, string> mapSS; 
     37typedef mapSS::iterator mapSSit; 
    3438 
    3539class VueChoixJouer 
     
    3842  //* variables membres 
    3943        private: 
     44 
    4045        Menu            *_Menu; 
    4146        FondEcran       *_FondEcran; 
     47 
     48        mapSS _ListeNbrCrit; 
     49        mapSS _ListeNiveau; 
     50 
     51        mapSSit _ListeNbrCritIter; 
     52        mapSSit _ListeNiveauIter; 
     53 
     54        Uint8           _NoItemNbrCrit; 
     55        Uint8     _NoItemNiveau; 
     56 
     57 
     58        string _titreNbrCrit; 
     59        string _titreNiveau; 
     60 
    4261 
    4362  //******************* 
     
    4766                ~VueChoixJouer(); 
    4867                void processEvents(SDL_Event *event); 
     68 
     69  private: 
     70    mapSSit listeNbrCritNext(mapSSit current_iter); // permet d'aller à l'itérateur suivant, ou retourner au premier si le dernier est atteind 
     71                mapSSit listeNbrCritPrev(mapSSit current_iter); // permet d'aller à l'itérateur précédent, ou retourner au dernier si le premier est atteind 
     72 
     73    mapSSit listeNiveauNext(mapSSit current_iter); // permet d'aller à l'itérateur suivant, ou retourner au premier si le dernier est atteind 
     74                mapSSit listeNiveauPrev(mapSSit current_iter); // permet d'aller à l'itérateur précédent, ou retourner au dernier si le premier est atteind 
     75 
     76                mapSSit getItNbrCrit(string nbrCrit);// récupère l'itérateur d'un mode de jeu dans la liste 
     77                mapSSit getItNiveau(string niveau);// récupère l'itérateur d'un niveau dans la liste 
     78 
    4979}; 
    5080 
  • branches/ticket5/src/VueMainMenu.cpp

    r9 r17  
    2929    Uint8 it1 = _Menu->addItem(Langue::getInstance()->get("Jouer une partie"),EVENT_CREATE_VUE_CHOIX_JOUER); 
    3030    _Menu->changeItemSample(it1, SAMPLE_MENU_1); 
     31 
     32    /* partie à supprimer 
    3133    Uint8 it2 = _Menu->addItem(Langue::getInstance()->get("Niveau"),EVENT_CREATE_VUE_NIVEAU); 
    32     _Menu->changeItemSample(it2, SAMPLE_MENU_2); 
     34    _Menu->changeItemSample(it2, SAMPLE_MENU_2);*/ 
    3335//    _Menu->addItem(Langue::getInstance()->get("Statistiques"),EVENT_CREATE_VUE_CONSTRUCTION,MENU_TYPE_LIEN,EVENT_CREATE_VUE_MAIN_MENU); 
    3436    Uint8 it3 = _Menu->addItem(Langue::getInstance()->get("Options"),EVENT_CREATE_VUE_OPTION);