mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-07-06 18:26:11 +00:00
kezz - adding preliminary sound code
This was SVN commit r336.
This commit is contained in:
Executable
+73
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* sound.cpp
|
||||
* Author: Graeme Kerry - graeme@wildfiregames.com
|
||||
* Last Modified: 01/06/2004
|
||||
*
|
||||
* Contents: implementation of sound fx resource functions
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <fmod.h>
|
||||
|
||||
#include "h_mgr.h"
|
||||
#include "sound.h"
|
||||
#include "lib.h"
|
||||
|
||||
//define control block
|
||||
struct Sound
|
||||
{
|
||||
FSOUND_SAMPLE* clip;
|
||||
int channel;
|
||||
};
|
||||
//build its vtbl
|
||||
H_TYPE_DEFINE(Sound)
|
||||
|
||||
static void Sound_init(Sound* s, va_list args)
|
||||
{
|
||||
s->channel = -1;
|
||||
}
|
||||
|
||||
static int Sound_reload(Sound* s, const char* filename)
|
||||
{
|
||||
//only load if clip is empty
|
||||
if(s->clip == NULL)
|
||||
s->clip = FSOUND_Sample_Load(FSOUND_FREE,filename,FSOUND_LOOP_OFF | FSOUND_STEREO,0,0);
|
||||
|
||||
//check if clip loaded successfully
|
||||
if(s->clip != NULL)
|
||||
return 0;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void Sound_dtor(Sound* s)
|
||||
{
|
||||
FSOUND_Sample_Free(s->clip);
|
||||
}
|
||||
|
||||
Handle sound_load(const char* filename)
|
||||
{
|
||||
return h_alloc(H_Sound,filename,0,0);
|
||||
}
|
||||
|
||||
int sound_free(Handle& h)
|
||||
{
|
||||
return h_free(h,H_Sound);
|
||||
}
|
||||
|
||||
int sound_play(const Handle h)
|
||||
{
|
||||
H_DEREF(h,Sound,s);
|
||||
|
||||
s->channel = FSOUND_PlaySound(FSOUND_FREE,s->clip);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sound_stop(const Handle h)
|
||||
{
|
||||
H_DEREF(h,Sound,s);
|
||||
|
||||
if(s->channel != -1)
|
||||
FSOUND_StopSound(s->channel);
|
||||
return 0;
|
||||
}
|
||||
Executable
+13
@@ -0,0 +1,13 @@
|
||||
/* Sound FX
|
||||
* Graeme Kerry - graeme@wildfiregames.com
|
||||
*/
|
||||
|
||||
#ifndef __SOUND_H__
|
||||
#define __SOUND_H__
|
||||
|
||||
#include "types.h"
|
||||
#include "h_mgr.h"
|
||||
|
||||
extern Handle sound_load(const char* filename);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user