//Pourquoi c'est géré ici ça au fait? Enfin, permet le choix entre les musiques disponibles
int numero_musique=0;
const char *musiques[]=     {"musique.8ad","musique2.8ad","musique3.8ad"};
const char *noms_musiques[]=     {"Palais de glace","Mine de diamants","Sonic - Star light"};

//"Handler" pour le menu pause. Principe: le menu "questionne" le handler à propos de ce qu'il a besoin
//pour composer son menu. On pourrait étendre les possibilités au gré du nécessaire. Ici, le handler est
//questionné pour les options de menu inconnues (non-spécifiées en fait) et pour exécuter une action
//lorsqu'une option est sélectionnée. A ce moment-là, il renverra s'il faut fermer le menu ou non
//Par exemple, l'option "Reprendre" ferme le menu, mais pas la (dés)activation des bruitages...
unsigned char *FctMenuPause(int demande, int param, int touches)      {
    //Demande à retourner une chaîne correspondant à l'option
    if (demande==DEM_OPTION)        {
        //Assez clair non?
        if (param==2)
            return bMusique?"Activée":"Désactivée";
        else if (param==3)
            return bSons?"Activés":"Désactivés";
        else if (param==4)
            return (unsigned char*)noms_musiques[numero_musique];
        else if (param==5)
            return bCPUMetre?"Activé":"Désactivé";
    }
    //Demande à exécuter une action et retourner ce qu'il faut faire
    else if (demande==DEM_ACTION)           {
        //Bon, nous on va jouer le son standard. Mais on pourrait faire exploser une bombe si l'option 4 est sélectionnée par exemple...
        JoueSon("curs2.son");
        //Reprendre: quitte le menu. Outre cela, ne fait rien.
        if (param==0)
            return (unsigned char*)2;
        else if (param==1)      {
            MCMain();
            return (unsigned char*)0;
        }
        //Active/désactive la musique. Ne quitte pas le menu
        else if (param==2)       {
            bMusique=!bMusique;
            return (unsigned char*)0;
        }
        //Idem pour les bruitages
        else if (param==3)       {
            bSons=!bSons;
            return (unsigned char*)0;
        }
        //Cycle à travers les musiques disponibles.
        else if (param==4)          {
            numero_musique++;
            if (numero_musique>=sizeof(musiques)/sizeof(musiques[0]))
                numero_musique=0;
            JoueMusique((char*)musiques[numero_musique]);
            return (unsigned char*)0;
        }
        //(Dés)active le CPU-Mètre.
        else if (param==5)       {
            u32 zero=0;
            MemSet(&zero,(void*)buffer_debug,sizeof(buffer_debug)>>1,DMA_16im);
            bCPUMetre=!bCPUMetre;
            return (unsigned char*)0;
        }
    }
    else if (demande==DEM_GESTION)          {
        if (touches&TOUCHE_START)           {
            JoueSon("curs3.son");
            return (unsigned char*)2;
        }
        return (unsigned char*)1;
    }
    //Ne devrait pas arriver ici mais il faut toujours retourner quelque chose et c'est mieux pas de retourner NULL, car même si cette valeur est gérée par le dessinateur de menu, il n'affichera simplement rien. Dur dans ces conditionsn de détecter une erreur...
    return "Erreur";
}


