void MenuInterface::insererBlanc() { assert(this->valeurIndeterminee()); _elements.insert(_elements.begin(), sous_menu(" ")); _elements.front()._texte.definir(POLICE_NORMALE, 14); _elements.front()._texte.definir(Couleur::noir); }
int main_menu(keystate *k) { int continuer = 1; int choix = 1; int mx = 0, my = 0; menu *m; FILE *flux_menu = NULL; FSOUND_STREAM *zik; /* On cache le curseur, ni vu ni connu j'tembrouille */ SDL_ShowCursor(0); k->precedent[ECHAP] = 1; k->precedent[QUITTER] = 1; flux_menu = fopen("main.menu", "r"); m = charger_menu(flux_menu); fclose(flux_menu); zik = charger_musique("musics/space_mario.wav", 100, -1); //FSOUND_Stream_Play(FSOUND_FREE, zik); while(continuer) { glClear(GL_COLOR_BUFFER_BIT); /* Dessin du fond, du menu et recuperation de la position du pointeur souris et de l'etat des touches */ //draw_sprite(0, 0, LARGEUR_FENETRE, HAUTEUR_FENETRE, 3, 0, 1, 0, 1); SDL_GetMouseState(&mx, &my); my = HAUTEUR_FENETRE - my; maj_keystate(k, &continuer); afficher_menu(m, choix); /* L'utilisateur clique sur la croix ou presse echap */ if(continuer == 0) { //FSOUND_Stream_Stop(zik); //FSOUND_Stream_Close(zik); return QUITTER; } /* Feuille de l'arbre */ else if(m->nb_choix == 0) { //FSOUND_Stream_Stop(zik); //FSOUND_Stream_Close(zik); return m->valeur; } else { if((k->actuel[ENTRER] && k->precedent[ENTRER] == 0) || (k->actuel[DROITE] && k->precedent[DROITE] == 0)) { m = sous_menu(m, choix); choix = 1; } else if(k->actuel[GAUCHE] && k->precedent[GAUCHE] == 0) { m = menu_parent(m); choix = 1; } else if(k->actuel[BAS] && k->precedent[BAS] == 0) choix++; else if(k->actuel[HAUT] && k->precedent[HAUT] == 0) choix--; else if(k->actuel[CLIC_G] && k->precedent[CLIC_G] == 0) { /*************** si la souris est dessu ******************/ m = sous_menu(m, choix); choix = 1; } if(choix < 1) choix = m->nb_choix; else if(choix > m->nb_choix) choix = 1; } my_sleep(1); SDL_GL_SwapBuffers(); } //FSOUND_Stream_Stop(zik); //FSOUND_Stream_Close(zik); return m->valeur; }