Initial commit: client source
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
#include "Stdafx.h"
|
||||
#include "SoundManager2D.h"
|
||||
|
||||
CSoundManager2D::CSoundManager2D()
|
||||
{
|
||||
}
|
||||
|
||||
CSoundManager2D::~CSoundManager2D()
|
||||
{
|
||||
}
|
||||
|
||||
bool CSoundManager2D::Initialize()
|
||||
{
|
||||
CSoundBase::Initialize();
|
||||
|
||||
if (ms_DIGDriver)
|
||||
return true;
|
||||
|
||||
ms_DIGDriver = AIL_open_digital_driver(44100, 16, 2, 0);
|
||||
|
||||
for (int i = 0; i < INSTANCE_MAX_COUNT; ++i)
|
||||
ms_Instances[i].Initialize();
|
||||
/* ms_DIGDriver = AIL_open_digital_driver(44100,
|
||||
(DIG_F_STEREO_16 & DIG_F_16BITS_MASK) ? 16 : 8,
|
||||
(DIG_F_STEREO_16 & DIG_F_16BITS_MASK) ? 2 : 1,
|
||||
0);
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
|
||||
void CSoundManager2D::Destroy()
|
||||
{
|
||||
for (int i = 0; i < INSTANCE_MAX_COUNT; ++i)
|
||||
ms_Instances[i].Destroy();
|
||||
|
||||
if (ms_DIGDriver != NULL)
|
||||
{
|
||||
AIL_close_digital_driver(ms_DIGDriver);
|
||||
ms_DIGDriver = NULL;
|
||||
}
|
||||
|
||||
CSoundBase::Destroy();
|
||||
}
|
||||
|
||||
ISoundInstance * CSoundManager2D::GetInstance(const char * c_pszFileName)
|
||||
{
|
||||
DWORD dwFileCRC = GetFileCRC(c_pszFileName);
|
||||
TSoundDataMap::iterator itor = ms_dataMap.find(dwFileCRC);
|
||||
|
||||
CSoundData * pkSoundData;
|
||||
|
||||
if (itor == ms_dataMap.end())
|
||||
pkSoundData = AddFile(dwFileCRC, c_pszFileName); // CSoundBase::AddFile
|
||||
else
|
||||
pkSoundData = itor->second;
|
||||
|
||||
assert(pkSoundData != NULL);
|
||||
|
||||
static DWORD k = 0;
|
||||
|
||||
DWORD start = k++;
|
||||
DWORD end = start + INSTANCE_MAX_COUNT;
|
||||
|
||||
while (start < end)
|
||||
{
|
||||
CSoundInstance2D * pkInst = &ms_Instances[start % INSTANCE_MAX_COUNT];
|
||||
|
||||
if (pkInst->IsDone())
|
||||
{
|
||||
if (!pkInst->SetSound(pkSoundData))
|
||||
TraceError("CSoundManager2D::GetInstance (filename: %s)", c_pszFileName);
|
||||
return (pkInst);
|
||||
}
|
||||
|
||||
++start;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
Reference in New Issue
Block a user