Changeset 10 for trunk/src/Musique.cpp

Show
Ignore:
Timestamp:
15.06.2008 13:36:46 (4 years ago)
Author:
nathan
Message:
  • Mise en place d'un mode Mute pour les classe Musique et Sample. Maintenant cela permet de toujours appellé les évènemens sur les sons sans se préocupper à ce moment là si on a le droit de jouer du son ou non, du coup ce sont les classes de son elle-même qui savent si elle doivent exécuter ou non l'instruction demandée. Cela corrige les bugs de chargements de fichiers audio, et le son est réellement coupé lorsque c'est demandé dans les préférences.
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/Musique.cpp

    r1 r10  
    5252{ 
    5353    if(_Singleton != NULL){ 
     54        // on termine proprement la musique éventuellement jouée à ce moment 
     55        Musique::getInstance()->stop(); 
    5456        // On quitte SDL_mixer 
    5557        Mix_CloseAudio(); 
     
    5961} 
    6062 
     63// il faut bien vérifier de tout fermer ce qui aurait pu être ouvert 
     64void Musique::mute(bool mute) 
     65{ 
     66    _Mute = mute; 
     67    if(_Mute){ 
     68        stop(); 
     69    } 
     70} 
     71 
    6172// initialise la classe 
    6273void Musique::init(string file_name) 
    6374{ 
     75    // si le son est désactivé on ne va pas plus loin, et en plaçant l'instance à NULL 
     76    // toutes les fonctions de la classe seront sans effet 
     77    if(_Mute){ 
     78        _Music = NULL; 
     79        return; 
     80    } 
    6481    // on enregistre le nom du fichier 
    6582    _FileName = file_name; 
     
    119136    if(_Music == NULL) return; 
    120137    Mix_HaltMusic(); 
     138    _Music = NULL; 
    121139} 
    122140 
     
    125143void Musique::decrechendo(Uint32 duration) 
    126144{ 
     145    if(_Music == NULL) return; 
    127146    // on enregistre la durée pour plus tard 
    128147    _Duration = duration; 
     
    149168    // on boucle  et on descent d'un pas à chaque fois 
    150169    for(Uint16 pas=255;pas>0;pas--){ 
     170        if(_Mute){ 
     171            // on termine le thread, car ça ne sert à rien de rester... 
     172            return 0; 
     173        } 
    151174        // on descend d'un palier le son 
    152175        if(!Mix_SetPanning(MIX_CHANNEL_POST, pas, pas)) { 
     
    163186        SDL_Delay(delay); 
    164187    } 
    165     // on s'assure qu'au final el son est bien coupé 
     188    // on s'assure qu'au final le son est bien coupé 
    166189    stop(); 
    167190    // c'est fini on quitte le thread