//
// Wave BN 11-Juni-98
//
//
//
//
#include <stdlib.h>
#include <malloc.h>
#include <string.h>

#include "WinMain.h"
#include "GlobalData.h"
#include "File.h"
#include "System.h"
#include "Wave.h"


// *****************************************************************
Wave::Init (void)
{
int nRet=TRUE;


memset(&pWave, 0, sizeof(Wave));
nAutoWert++; // dient als eindeutiger Schlüssel
return(nRet);
}

// *****************************************************************
Wave::DeInit (void)
{
int nRet=TRUE;


if(pWave.Wave!=NULL){
free(pWave.Wave);
pWave.Wave = NULL;
}
return(nRet);
}

// *****************************************************************
Wave::DoLoadWave (char *acBefehl_ID)
{
int nRet=FALSE;
char acFilename[512];
int nDateiHandle;
void *pPointer=FALSE;


if(pWave.Wave!=NULL){
free(pWave.Wave);
pWave.Wave = NULL;
}
GetName(acFilename);
if(f_find(acFilename)==TRUE){
if((nDateiHandle = f_open(acFilename))!=FALSE){
pPointer = Mem_Alloc(filelength(nDateiHandle));
if(pPointer!=NULL){
if(f_read(nDateiHandle, pPointer, filelength(nDateiHandle))==TRUE){
} else {
Mem_Free(pPointer, filelength(nDateiHandle));
pPointer = FALSE;
}
}
f_close(nDateiHandle);
}
}
if(pPointer!=FALSE){
pWave.Wave = pPointer;
nRet = TRUE;
//Mem_Free(pPointer, filelength(nDateiHandle));
}
return(nRet);
}

// *****************************************************************
Wave::DoPlayWave (char *acBefehl_ID)
{
int nRet=FALSE;


if(pWave.Wave!=NULL){
nRet = sndPlaySound((char *)pWave.Wave, SND_ASYNC|SND_MEMORY|SND_NOSTOP);
}
return(nRet);
}

// *****************************************************************
Wave::GetName (char *GetName)
{
int nRet=TRUE;


memcpy(GetName, pWave.acName, sizeof(pWave.acName));
return(nRet);
}

// *****************************************************************
Wave::SetName (char *SetName)
{
int nRet=TRUE;


memset(pWave.acName, 0, sizeof(pWave.acName));
memcpy(pWave.acName, SetName, strlen(SetName));
return(nRet);
}