Changeset 10

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.
Location:
trunk
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/Lineo.cpp

    r9 r10  
    108108    SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,SDL_DEFAULT_REPEAT_INTERVAL); 
    109109    SDL_EnableUNICODE(1); 
     110    // on précise aux classes manipulant des sons si elles doivent être silencieuses ou non 
     111    bool mute = Config::getInstance()->get("musique")!="ON"; 
     112    Musique::getInstance()->mute(mute); 
     113    Sample::getInstance()->mute(mute); 
    110114    // on initialise la musique du jeu 
    111     if(Config::getInstance()->get("musique")=="ON"){ 
    112         // on initialise la musique 
    113         Musique::getInstance()->init(MUSIQUE_MENUS); 
    114     } 
     115    Musique::getInstance()->init(MUSIQUE_MENUS); 
    115116    // on créé les fonts 
    116117    VFont::getInstance()->add(FONT_12_WHITE,(string)(DATA_PATH)+"fonts/arial_12_white_blueout_flat","png"); 
  • 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 
  • trunk/src/Musique.h

    r1 r10  
    4545    Uint32          _Duration; 
    4646    SDL_Thread     *_Thread; 
     47    bool            _Mute; 
    4748 
    4849  //******************* 
     
    5253    static void kill (); 
    5354 
     55    void mute(bool mute); 
    5456    void init(string file_name); 
    5557    void play(); 
  • trunk/src/Sample.cpp

    r1 r10  
    5252} 
    5353 
     54void Sample::mute(bool mute) 
     55{ 
     56    _Mute = mute; 
     57} 
     58 
    5459void Sample::play(string file_name) 
    5560{ 
    56     Mix_Chunk *sample; 
    57     sample=Mix_LoadWAV(((string)(DATA_PATH)+"son/"+file_name).c_str()); 
    58     if(!sample) { 
    59         fprintf(stderr, 
    60               "\nErreur: Je ne peux pas charger le sample!\n" 
    61               "L'erreur que SDL(mixer) a renvoyé était:\n" 
    62               "%s\n\n", Mix_GetError()); 
    63     } 
    64     if(Mix_PlayChannel(-1, sample, 0)==-1) { 
    65         fprintf(stderr, 
    66               "\nErreur: Je ne peux pas jouer le sample!\n" 
    67               "L'erreur que SDL(mixer) a renvoyé était:\n" 
    68               "%s\n\n", Mix_GetError()); 
     61    if(!_Mute){ 
     62        Mix_Chunk *sample; 
     63        sample=Mix_LoadWAV(((string)(DATA_PATH)+"son/"+file_name).c_str()); 
     64        if(!sample) { 
     65            fprintf(stderr, 
     66                  "\nErreur: Je ne peux pas charger le sample!\n" 
     67                  "L'erreur que SDL(mixer) a renvoyé était:\n" 
     68                  "%s\n\n", Mix_GetError()); 
     69        } 
     70        if(Mix_PlayChannel(-1, sample, 0)==-1) { 
     71            fprintf(stderr, 
     72                  "\nErreur: Je ne peux pas jouer le sample!\n" 
     73                  "L'erreur que SDL(mixer) a renvoyé était:\n" 
     74                  "%s\n\n", Mix_GetError()); 
     75        } 
    6976    } 
    7077} 
  • trunk/src/Sample.h

    r1 r10  
    5050  private: 
    5151    static Sample *_Singleton; 
     52    bool _Mute; 
    5253 
    5354  //******************* 
     
    5758    static void kill(); 
    5859 
     60    void mute(bool mute); 
    5961    void play(string file_name); 
    6062 
  • trunk/src/VueSousOption.cpp

    r1 r10  
    103103                    _Menu->setItemOn(_NoItemMusiqueOn); 
    104104                    Config::getInstance()->set("musique","ON"); 
     105                    // on permet à Musique et à Sample de jouer des sons 
     106                    Musique::getInstance()->mute(false); 
     107                    Sample::getInstance()->mute(false); 
    105108                    // on commence à jouer de la musique 
    106109                    Musique::getInstance()->init(MUSIQUE_MENUS); 
     
    110113                    _Menu->setItemOn(_NoItemMusiqueOff); 
    111114                    Config::getInstance()->set("musique","OFF"); 
    112                     // on arrête de jouer la musique pour pas énerver pendant la partie 
    113                     Musique::getInstance()->stop(); 
    114                     Musique::kill(); 
     115                    // on ne permet plus à Musique et à Sample de jouer des sons 
     116                    Musique::getInstance()->mute(true); 
     117                    Sample::getInstance()->mute(true); 
    115118                }break; 
    116119            }