Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

#include "FModSoundManager.h"
#include "FModLoader.h"

using namespace Sexy;

FModSoundManager::FModSoundManager(HWND theHWnd)
{
        LoadFModDLL();

        gFMod->FSOUND_SetHWND(theHWnd);
        gFMod->FSOUND_Init(44100, 64, FSOUND_INIT_GLOBALFOCUS);

        mMasterVolume = 1.0;

        for (int i = 0; i < MAX_SOURCE_SOUNDS; i++)
                mSourceStreams[i] = NULL;
}

FModSoundManager::~FModSoundManager()
{
        for (int i = 0; i < MAX_SOURCE_SOUNDS; i++)
        {
                if (mSourceStreams[i] != NULL)
                {
                        gFMod->FSOUND_Stream_Close(mSourceStreams[i]);
                        mSourceStreams[i] = NULL;
                }
        }
}

bool FModSoundManager::Initialized()
{
        return true;
}

bool FModSoundManager::LoadSound(unsigned int theSfxID, const std::string& theFilename)
{      
        int aLastDotPos = theFilename.rfind('.');
        if (aLastDotPos == -1)
        {
                if (LoadSound(theSfxID, theFilename + ".wav"))
                        return true;

                if (LoadSound(theSfxID, theFilename + ".mp3"))
                        return true;

                if (LoadSound(theSfxID, theFilename + ".ogg"))
                        return true;

                if (LoadSound(theSfxID, theFilename + ".au"))
                        return true;

                return false;
        }

        FSOUND_STREAM* aStream = gFMod->FSOUND_Stream_OpenFile(theFilename.c_str(), FSOUND_2D, 0);
        if (aStream == NULL)
                return false;

        mSourceStreams[theSfxID] = aStream;
        return true;
}

bool FModSoundManager::LoadSound(const std::string& theFilename)
{
        for (int i = MAX_SOURCE_SOUNDS-1; i >= 0; i--)
        {
                if (mSourceStreams[i] == NULL)
                {
                        if (!LoadSound(i, theFilename))
                                return -1;
                        else
                                return i;
                }
        }

        return -1;
}

void FModSoundManager::SetVolume(double theVolume)
{
}

SoundInstance* FModSoundManager::GetSoundInstance(unsigned int theSfxID)
{
        FModSoundInstance* aSoundInstance = new FModSoundInstance;
        aSoundInstance->mStream = mSourceStreams[theSfxID];
        return aSoundInstance;
}

void FModSoundManager::ReleaseSounds()
{
}

void FModSoundManager::ReleaseChannels()
{
}

double FModSoundManager::GetMasterVolume()
{
        return mMasterVolume;
}

void FModSoundManager::SetMasterVolume(double theVolume)
{
}

void FModSoundManager::Flush()
{
}

void FModSoundManager::SetCooperativeWindow(HWND theHWnd, bool isWindowed)
{
}