Changeset 17
- Timestamp:
- 29.06.2008 19:23:04 (4 years ago)
- Location:
- branches/ticket5
- Files:
-
- 9 modified
-
projectCodeBlock_ubuntu/Lineo.cbp (modified) (2 diffs)
-
src/Events.h (modified) (5 diffs)
-
src/Lineo.cpp (modified) (11 diffs)
-
src/Lineo.h (modified) (3 diffs)
-
src/Menu.cpp (modified) (20 diffs)
-
src/Menu.h (modified) (8 diffs)
-
src/VueChoixJouer.cpp (modified) (4 diffs)
-
src/VueChoixJouer.h (modified) (3 diffs)
-
src/VueMainMenu.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/ticket5/projectCodeBlock_ubuntu/Lineo.cbp
r13 r17 49 49 <Unit filename="../datas/son/LICENCE.txt" /> 50 50 <Unit filename="Lineo.rc" /> 51 <Unit filename="commit.txt" /> 51 52 <Unit filename="lineo.ico" /> 52 53 <Unit filename="../src/ComReseau.cpp" /> … … 136 137 <Unit filename="../src/VueMainMenu.cpp" /> 137 138 <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" />142 139 <Unit filename="../src/VueOption.cpp" /> 143 140 <Unit filename="../src/VueOption.h" /> -
branches/ticket5/src/Events.h
r12 r17 29 29 EVENT_0, 30 30 // -------------------------------------------------------------------------- // 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, 34 34 EVENT_CREATE_VUE_GAME, 35 EVENT_CREATE_VUE_NIVEAU,35 //EVENT_CREATE_VUE_NIVEAU,//obsolète 36 36 EVENT_CREATE_VUE_OPTION, 37 37 EVENT_CREATE_VUE_CONSTRUCTION, … … 47 47 EVENT_CREATE_VUE_HOW_TO_PLAY, 48 48 #endif 49 EVENT_CREATE_VUE_NBRCRIT,49 //EVENT_CREATE_VUE_NBRCRIT,//obsolète 50 50 // -------------------------------------------------------------------------- // 51 51 EVENT_MENU_JOUER, … … 58 58 EVENT_MENU_QUITTER, 59 59 // -------------------------------------------------------------------------- // 60 /* partie à supprimer 60 61 EVENT_NIVEAU_FACILE, 61 62 EVENT_NIVEAU_MOYEN, 62 63 EVENT_NIVEAU_DIFFICILE, 63 //EVENT_NIVEAU_IMPOSSIBLE, obsolète 64 //EVENT_NIVEAU_IMPOSSIBLE, obsolète*/ 64 65 // -------------------------------------------------------------------------- // 65 66 //gestion des événement choix du nombre de critères 67 /*partie à supprimer 66 68 EVENT_CRIT_1, 67 69 EVENT_CRIT_2, 68 70 EVENT_CRIT_3, 69 71 EVENT_CRIT_4, 70 EVENT_CRIT_5, 72 EVENT_CRIT_5,*/ 71 73 // -------------------------------------------------------------------------- // 72 74 EVENT_GAME_PARTIE_START, … … 87 89 EVENT_GAME_NEW_PARTIE, 88 90 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, 91 93 #endif 92 94 // -------------------------------------------------------------------------- // … … 107 109 EVENT_CHOIX_COLOR_PC_2, 108 110 // -------------------------------------------------------------------------- // 109 EVENT_JOUEUR_QUICOMMENCE_OK,111 EVENT_JOUEUR_QUICOMMENCE_OK, 110 112 // -------------------------------------------------------------------------- // 111 113 EVENT_CHOIX_LANGUE, 112 114 // -------------------------------------------------------------------------- // 115 //évenement de la vue choix jouer avec les nouveaux menus 116 EVENT_CHOIX_NBRCRIT, 117 EVENT_CHOIX_NIVEAU, 118 // -------------------------------------------------------------------------- // 119 113 120 #ifndef Nokia770 114 121 EVENT_LOGIN_LOGIN, -
branches/ticket5/src/Lineo.cpp
r12 r17 23 23 #include "VueMainMenu.h" 24 24 #include "VueGame.h" 25 #include "VueNiveau.h" 25 //#include "VueNiveau.h"//obsolÚte 26 26 #include "VueOption.h" 27 27 #include "VueSousOption.h" … … 31 31 #include "VueChoixCouleurPiece.h" 32 32 #include "VueCredits.h" 33 #include "VueNbrCrit.h" 33 //#include "VueNbrCrit.h" //obsolÚte 34 34 35 35 // Initialisation du singleton à NULL … … 153 153 _VueMainMenu=NULL; 154 154 _VueGame=NULL; 155 _VueNbrCrit=NULL;156 _VueNiveau=NULL;155 // _VueNbrCrit=NULL; 156 // _VueNiveau=NULL; 157 157 _VueOption=NULL; 158 158 _VueConstruction=NULL; … … 338 338 _VueActive=VUE_GAME; 339 339 }break; 340 case EVENT_CREATE_VUE_NIVEAU: 340 //partie à suprimer 341 /*case EVENT_CREATE_VUE_NIVEAU: 341 342 // on libÚre les vues éventuellements affichées 342 343 freeVues(); … … 344 345 _VueNiveau = new VueNiveau(); 345 346 _VueActive=VUE_NIVEAU; 346 break; 347 break;*/ 347 348 case EVENT_CREATE_VUE_OPTION:{ 348 349 // on libÚre les vues éventuellements affichées … … 438 439 }break; 439 440 #endif // ---------------------------------------------------------------------- 440 case EVENT_CREATE_VUE_NBRCRIT :{ 441 //partie à supprimer 442 /*case EVENT_CREATE_VUE_NBRCRIT :{ 441 443 // on récupÚre le mode de jeux avant de libérer la vue 442 444 Uint16 mode_jeu = *(Uint16*)event.user.data1; … … 446 448 _VueNbrCrit = new VueNbrCrit(mode_jeu); 447 449 _VueActive=VUE_NBRCRIT; 448 }break; 450 }break;*/ 449 451 case EVENT_QUITTER: 450 452 return true; … … 472 474 _VueGame->processEvents(&event); 473 475 break; 476 /*partie à supprimer 474 477 case VUE_NBRCRIT: 475 478 _VueNbrCrit -> processEvents(&event); … … 477 480 case VUE_NIVEAU: 478 481 _VueNiveau->processEvents(&event); 479 break; 482 break;*/ 480 483 case VUE_OPTION: 481 484 _VueOption->processEvents(&event); … … 555 558 delete(_VueMainMenu); 556 559 delete(_VueGame); 560 /* partie à supprimer 557 561 delete(_VueNbrCrit); 558 delete(_VueNiveau); 562 delete(_VueNiveau);*/ 559 563 delete(_VueOption); 560 564 delete(_VueConstruction); … … 576 580 _VueMainMenu=NULL; 577 581 _VueGame=NULL; 578 _VueNbrCrit=NULL; 579 _VueNiveau=NULL; 582 //partie à supprimer 583 /* _VueNbrCrit=NULL; 584 _VueNiveau=NULL;*/ 580 585 _VueOption=NULL; 581 586 _VueConstruction=NULL; -
branches/ticket5/src/Lineo.h
r12 r17 62 62 class VueMainMenu; 63 63 class VueGame; 64 class VueNbrCrit; 65 class VueNiveau;64 //class VueNbrCrit;//obsolÚte 65 //class VueNiveau; 66 66 class VueOption; 67 67 class VueConstruction; … … 89 89 VUE_MAIN_MENU, 90 90 VUE_GAME, 91 VUE_NBRCRIT,92 VUE_NIVEAU,91 // VUE_NBRCRIT, 92 // VUE_NIVEAU, 93 93 VUE_OPTION, 94 94 VUE_CONSTRUCTION, … … 129 129 VueMainMenu* _VueMainMenu; 130 130 VueGame* _VueGame; 131 VueNbrCrit* _VueNbrCrit;132 VueNiveau* _VueNiveau;131 // VueNbrCrit* _VueNbrCrit; 132 // VueNiveau* _VueNiveau; 133 133 VueOption* _VueOption; 134 134 VueConstruction* _VueConstruction; -
branches/ticket5/src/Menu.cpp
r1 r17 71 71 _FlagCurseurClignotant = false; 72 72 _MouseLeftIsDown = false; 73 //_CurseurClignotantId=0;73 // _CurseurClignotantId=0; 74 74 // 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; 77 77 // on initialise le titre 78 78 if(_TitreFlag){ … … 85 85 _Retour=retour; 86 86 if(_Retour){ 87 _RetourSpriteNameImg=(string)(DATA_PATH)+"menus/fleche_retour.png";87 _RetourSpriteNameImg=(string)(DATA_PATH)+"menus/fleche_retour.png"; 88 88 _RetourSpriteName=_RetourSpriteNameImg+_Titre; 89 89 _RetourEventCode=event_code_retour; … … 113 113 vector<string> liste_vide; 114 114 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); 116 116 } 117 117 … … 120 120 vector<string> liste_vide; 121 121 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); 123 123 } 124 124 … … 127 127 vector<string> liste_vide; 128 128 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); 130 130 } 131 131 … … 133 133 vector<string> liste_vide; 134 134 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); 136 136 } 137 137 … … 139 139 vector<string> liste_vide; 140 140 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); 142 142 } 143 143 … … 145 145 vector<string> liste_vide; 146 146 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); 148 148 } 149 149 150 150 // à réserver pour le type MENU_TYPE_TABLEAU 151 151 Uint8 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 157 Uint8 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 154 164 155 165 // ajoute une ligne d'option (un item) au menu 156 166 // si event_code == 0 >>> pas d'évÚnement !!! 157 167 // 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 )168 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, string item_texte) 159 169 { 160 170 if(_NbItem<MENU_NB_MAX_ITEM){ … … 162 172 _NbItem++; 163 173 // 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; 165 175 // on attribut chaque variable de l'item, 166 // certaines par defaut qui seront modifiées dans le switch ci-dessous176 // certaines par defaut qui seront modifiées dans le switch ci-dessous 167 177 _ItemFont[no_item]=MENU_FONT_ITEM_OUT; 168 178 _ItemType[no_item]=type; … … 170 180 _ItemEventCode[no_item]=event_code; 171 181 _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; 183 194 _ItemTabW[no_item]=tab_w; // utile seulement pour MENU_TYPE_TABLEAU 184 195 _ItemTabNbLignes[no_item]=nb_lignes; // utile seulement pour MENU_TYPE_TABLEAU … … 191 202 _ItemTabValueSelected[no_item]="ERREUR ==> Menu::addItem"; 192 203 _ItemSampleClic[no_item]=SAMPLE_MENU_CLICK; 193 194 // on modifie certains paramÚtre en fonction du type204 _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 195 206 switch(type){ 196 207 case MENU_TYPE_RADIO: … … 240 251 _ItemTitre[no_item] = titre_item; 241 252 _ItemTypeValue[no_item]=MENU_TYPE_INPUT_OFF; 242 // on calcul la largeur max de l'item243 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])); 248 259 }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; 249 267 case MENU_TYPE_LIEN: 250 268 default: … … 438 456 } 439 457 } 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 440 479 // =========================================================================== 441 480 // MAINTENANT seulement on peut calculer la position du Titre car elle dépend … … 517 556 Z_MENU_TEXTE); 518 557 } 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 519 571 break; 520 572 case MENU_TYPE_TABLEAU:{ … … 581 633 VTexte::getInstance()->del(_ItemTitreId[no_item]); 582 634 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 583 642 case MENU_TYPE_TABLEAU:{ 584 643 delete(_ItemFond[no_item]); … … 611 670 612 671 switch(_ItemType[no_item]){ 613 case MENU_TYPE_LISTE:{ 672 case MENU_TYPE_LISTE_TEXTE: 673 case MENU_TYPE_LISTE:{ 614 674 // ====================================== 615 675 // d'abord la flÚche gauche … … 658 718 } 659 719 }break; 660 661 720 case MENU_TYPE_TABLEAU:{ 662 721 if(_ItemTabValues[no_item].size() > 0){ … … 815 874 { 816 875 if(_ItemType[no_item]==MENU_TYPE_LISTE){ 817 // on supprime l'ancien t exte qu'il existe ou non on essaye876 // on supprime l'ancien titre qu'il existe ou non on essaye 818 877 VTexte::getInstance()->del(_ItemTitreId[no_item]); 819 878 // on met l'image à l'arriÚre plan afin qu'elle soit cachée … … 837 896 } 838 897 898 // Modifie le texte d'un item liste liste texte 899 void 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 839 920 // remplace la liste d'un tableau par une nouvelle 840 921 void Menu::updateItemTableau(Uint8 no_item, vector<string> new_tab_values) … … 950 1031 switch(_ItemType[i]){ 951 1032 case MENU_TYPE_LISTE: 1033 case MENU_TYPE_LISTE_TEXTE: 952 1034 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){ 955 1037 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; 961 1042 case MENU_TYPE_TABLEAU: 962 1043 if(_ItemTabLigneSelected[i]){ -
branches/ticket5/src/Menu.h
r1 r17 67 67 MENU_TYPE_INPUT, // permet de saisir quelque chose au clavier, même un mot de passe 68 68 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. 69 70 MENU_TYPE_TABLEAU, // affiche un tableau avec un ascenceur à droite pour parcourir le tableau sur la hauteur seulement 70 71 // ------------------ DEFINES DU TYPES RADIO -------------------------------- // … … 105 106 #define ITEM_SANS_IMAGE "ITEM_SANS_IMAGE" 106 107 108 #define ITEM_SANS_TEXTE "ITEM_SANS_TEXTE" 109 107 110 #define MENU_TYPE_LISTE_MARGE_IMG 20 108 111 … … 132 135 string _Item[MENU_NB_MAX_ITEM]; 133 136 string _ItemTitre[MENU_NB_MAX_ITEM]; 134 Uint32 _ItemTitreId[MENU_NB_MAX_ITEM];137 Uint32 _ItemTitreId[MENU_NB_MAX_ITEM]; 135 138 Uint32 _ItemEventCode[MENU_NB_MAX_ITEM]; 136 139 Uint16 _ItemEventData[MENU_NB_MAX_ITEM]; … … 153 156 154 157 // ==================================== 155 // utile seulement pour MENU_TYPE_LISTE 158 // utile seulement pour MENU_TYPE_LISTE et MENU_TYPE_LISTE_TEXTE 156 159 string _ItemFlecheFontL[MENU_NB_MAX_ITEM]; 157 160 SDL_Rect _ItemFlecheRectL[MENU_NB_MAX_ITEM]; … … 160 163 SDL_Rect _ItemFlecheRectR[MENU_NB_MAX_ITEM]; 161 164 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 162 170 163 171 // ====================================== … … 210 218 public: 211 219 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); 213 221 Menu(string titre); // ceci ne doit être utilisé que pour des comparaison, surcharge de l'opérateur == 214 222 Uint8 addItem(string titre_item, Uint16 event_code); … … 219 227 Uint8 addItem(string titre_item, Uint16 event_code, Uint8 type, Uint32 data, string sprite_name, Uint16 sprite_w, Uint16 sprite_h); 220 228 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 223 232 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); 224 234 void updateItemTableau(Uint8 no_item, vector<string> new_tab_values); // remplace la liste d'un tableau par une nouvelle 225 235 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'écran227 void processEvents(SDL_Event *event); // gÚre les évÚnements du menu236 void draw(void); // affiche le menu à l'écran 237 void processEvents(SDL_Event *event); // gÚre les évÚnements du menu 228 238 ~Menu(); 229 239 … … 238 248 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 239 249 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); 241 252 void drawItem(Uint8 no_item); // affiche un item à l'écran 242 253 void freeItem(Uint8 no_item); // efface un item de l'écran et retourne le z_index -
branches/ticket5/src/VueChoixJouer.cpp
r12 r17 23 23 VueChoixJouer::VueChoixJouer() 24 24 { 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 25 42 // on initialise le fond d'écran 26 43 _FondEcran = new FondEcran(FD_ECR_VIERGE|FD_ECR_LINEO_SMALL); 27 44 // on initialise le menu 28 45 _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 31 49 #ifndef Nokia770 32 50 if(Lineo::getInstance()->_SessionReseau=="NULL" || Lineo::getInstance()->_SessionReseau==""){ … … 37 55 } 38 56 #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 39 70 _Menu->draw(); 40 71 } … … 44 75 // on supprime toutes les classes 45 76 delete(_FondEcran); 46 delete(_Menu);77 delete(_Menu); 47 78 } 48 79 … … 50 81 void VueChoixJouer::processEvents(SDL_Event *event) 51 82 { 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 52 111 _Menu->processEvents(event); 53 112 } 113 114 // récupère le mode de jeu traduit à partir de la lecture de la config 115 mapSSit 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 128 mapSSit 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 141 mapSSit 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 151 mapSSit 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 162 mapSSit 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 172 mapSSit 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 32 32 #define CHOIX_JOUER_MODE_RESEAU 2 33 33 34 using namespace std; 35 36 typedef map<string, string> mapSS; 37 typedef mapSS::iterator mapSSit; 34 38 35 39 class VueChoixJouer … … 38 42 //* variables membres 39 43 private: 44 40 45 Menu *_Menu; 41 46 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 42 61 43 62 //******************* … … 47 66 ~VueChoixJouer(); 48 67 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 49 79 }; 50 80 -
branches/ticket5/src/VueMainMenu.cpp
r9 r17 29 29 Uint8 it1 = _Menu->addItem(Langue::getInstance()->get("Jouer une partie"),EVENT_CREATE_VUE_CHOIX_JOUER); 30 30 _Menu->changeItemSample(it1, SAMPLE_MENU_1); 31 32 /* partie à supprimer 31 33 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);*/ 33 35 // _Menu->addItem(Langue::getInstance()->get("Statistiques"),EVENT_CREATE_VUE_CONSTRUCTION,MENU_TYPE_LIEN,EVENT_CREATE_VUE_MAIN_MENU); 34 36 Uint8 it3 = _Menu->addItem(Langue::getInstance()->get("Options"),EVENT_CREATE_VUE_OPTION);
