1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| #include "ctrl_son.h"
CSoundManager* CSoundManager::m_pSoundManager = 0;
CSoundManager::CSoundManager ()
{
m_bCanauxJeu = true;
// On initialise Fmod : Fréquence de sortie, nombre de canaux utilisés et option (non util pour nous)
FSOUND_Init (44100, CANAL_MAX, 0);
FSOUND_SetSFXMasterVolume (64);
// On initialise tous les canaux de sons à 0 pour pouvoir vérifier qu'ils sont utilisés ou non.
for (int Canal = CANAL_NULL; Canal < CANAL_MAX; Canal++)
m_pSon[Canal] = 0;
}
CSoundManager::~CSoundManager ()
{
// On libère tous les canaux
for (int Canal = CANAL_NULL; Canal < CANAL_MAX; Canal++)
if (m_pSon[Canal])
FSOUND_Stream_Close (m_pSon[Canal]);
}
// Creation ou récupération de l'instance du gestionnaire de sons.
// Si l'instance n'existe pas (m_pSoundManager == 0), on la créé.
CSoundManager* CSoundManager::Instance ()
{
if (m_pSoundManager == 0)
m_pSoundManager = new CSoundManager;
return m_pSoundManager;
}
// Suppression de l'instance du gestionnaire de sons si elle existe.
void CSoundManager::Kill ()
{
if (m_pSoundManager != 0)
{
delete m_pSoundManager;
m_pSoundManager = 0;
}
}
#include <stdio.h>
// Lecture des sons. Ils sont lu par streaming c'est à dire qu'ils sont chargés pendant la lecture.
void CSoundManager::Jouer (const char* szFilename, ECanaux Canal, bool bLoop)
{
if (!m_bCanauxJeu && Canal != CANAL_MUSIQUE)
return;
if (m_pSon[Canal])
FSOUND_Stream_Close (m_pSon[Canal]);
// Si bLoop == true alors le son boucle.
if (bLoop)
{
FSOUND_SetLoopMode (0, FSOUND_LOOP_NORMAL);
m_pSon[Canal] = FSOUND_Stream_Open (szFilename, FSOUND_LOOP_NORMAL, 0, 0);
FSOUND_SetVolume (Canal, 64);
FSOUND_SetVolumeAbsolute (Canal, 64);
}
// Sinon il est jouer une seule fois.
else
{
m_pSon[Canal] = FSOUND_Stream_Open (szFilename, FSOUND_NORMAL, 0, 0);
FSOUND_SetVolume (Canal, 255);
FSOUND_SetVolumeAbsolute (Canal, 255);
}
FSOUND_Stream_Play (Canal, m_pSon[Canal]);
} |
Partager