SBSPSS/source/sound/sound.h

168 lines
3.6 KiB
C
Raw Normal View History

2000-10-05 16:16:09 +02:00
/*=========================================================================
sound.h
Author: PKG
Created:
Project: Spongebob
Purpose:
Copyright (c) 2000 Climax Development Ltd
===========================================================================*/
#ifndef __SOUND_SOUND_H__
#define __SOUND_SOUND_H__
/*----------------------------------------------------------------------
Includes
-------- */
#ifndef __SOUND_XMPLAY_H__
#include "sound\xmplay.h"
#endif
#ifndef __SOUND_SPU_H__
#include "sound\spu.h"
#endif
#ifndef __SOUND_XMPLAY_H__
#include "sound\xmplay.h"
#endif
#ifndef __CDXAHeader__
#include "sound\cdxa.h"
#endif
/* Std Lib
------- */
/*----------------------------------------------------------------------
Tyepdefs && Defines
------------------- */
/*----------------------------------------------------------------------
Structure defintions
-------------------- */
class CSoundMediator
{
public:
typedef enum SONGID
{
2001-01-29 18:55:07 +01:00
SONG_TITLE, SONG_OPTIONS, SONG_MEMORYCARD, SONG_GAMECOMPLETE, SONG_GAMEOVER,
SONG_CHAPTER1_LEVEL1, SONG_CHAPTER1_LEVEL2, SONG_CHAPTER1_LEVEL3, SONG_CHAPTER1_LEVEL4, SONG_CHAPTER1_BOSS,
SONG_CHAPTER2_LEVEL1, SONG_CHAPTER2_LEVEL2, SONG_CHAPTER2_LEVEL3, SONG_CHAPTER2_LEVEL4, SONG_CHAPTER2_BOSS,
SONG_CHAPTER3_LEVEL1, SONG_CHAPTER3_LEVEL2, SONG_CHAPTER3_LEVEL3, SONG_CHAPTER3_LEVEL4, SONG_CHAPTER3_BOSS_ALSEEP, SONG_CHAPTER3_BOSS_AWAKE,
SONG_CHAPTER4_LEVEL1, SONG_CHAPTER4_LEVEL2, SONG_CHAPTER4_LEVEL3, SONG_CHAPTER4_LEVEL4, SONG_CHAPTER4_BOSS,
SONG_CHAPTER5_LEVEL1, SONG_CHAPTER5_LEVEL2, SONG_CHAPTER5_LEVEL3, SONG_CHAPTER5_LEVEL4, SONG_CHAPTER5_BOSS,
2000-10-05 16:16:09 +02:00
NUM_SONGIDS,
};
2001-01-29 18:55:07 +01:00
2000-10-05 16:16:09 +02:00
typedef enum SFXBANKID
{
2001-01-03 21:43:49 +01:00
SFX_INGAME,
2000-10-05 16:16:09 +02:00
NUM_SFXBANKIDS,
};
2001-01-29 18:55:07 +01:00
typedef enum SFXID
{
SFX_TEST0, SFX_TEST1, SFX_TEST2, SFX_TEST3,
SFX_TEST4, SFX_TEST5, SFX_TEST6, SFX_TEST7,
NUM_SFXIDS,
};
2000-10-05 16:16:09 +02:00
typedef enum VOLUMETYPE
{
2001-01-03 21:43:49 +01:00
VOL_SONG,
VOL_SFX,
VOL_SPEECH,
VOL_FADE,
2000-10-05 16:16:09 +02:00
NUM_VOLUMETYPES,
};
typedef enum
{
MIN_VOLUME=0,
MAX_VOLUME=255,
};
2000-10-10 18:49:01 +02:00
typedef enum REVERBTYPE
{
2001-01-03 21:43:49 +01:00
REV_NONE,
REV_ECHOTEST,
2000-10-10 18:49:01 +02:00
NUM_REVERBTYPES,
};
2000-10-05 16:16:09 +02:00
// General
2000-10-10 00:06:20 +02:00
static void initialise();
static void shutdown();
static void think(int _frames);
2000-10-05 16:16:09 +02:00
2000-10-10 18:49:01 +02:00
// Reverb
static void setReverbType(REVERBTYPE _type);
2000-10-05 16:16:09 +02:00
// Song interface
2000-10-10 00:06:20 +02:00
static void setSong(SONGID _songId);
static void playSong();
static void dumpSong();
2000-10-05 16:16:09 +02:00
// SFX interface
2000-10-10 00:06:20 +02:00
static void setSfxBank(SFXBANKID _bankId);
2001-01-29 18:55:07 +01:00
static xmPlayingId playSfx(SFXID _sfxId,int _lock=false);
2000-10-11 18:47:03 +02:00
static void setposition(xmPlayingId _playingId,VECTOR *pos);
2000-10-10 01:30:58 +02:00
static void stopSfx(xmPlayingId _playingId);
2000-10-05 16:16:09 +02:00
// Speech interface
2000-10-10 00:06:20 +02:00
static void playSpeech(SpeechEquate _speech);
2000-10-12 17:18:47 +02:00
static void stopSpeech();
2000-10-05 16:16:09 +02:00
// Control
2000-10-10 00:06:20 +02:00
static void setVolume(VOLUMETYPE _type,int _val);
static int getVolume(VOLUMETYPE _type);
2000-10-11 18:47:03 +02:00
static void stopAllSound();
2000-10-05 16:16:09 +02:00
private:
enum
{
VOLUME_CHANGE_SPEED=2,
INITIAL_VOLUME=192,
};
2000-10-10 00:06:20 +02:00
2000-10-05 16:16:09 +02:00
CSoundMediator() {;}
2000-10-10 00:06:20 +02:00
static int s_initialised;
static int s_currentVolume[NUM_VOLUMETYPES];
static int s_targetVolume[NUM_VOLUMETYPES];
static int s_volumeDirty[NUM_VOLUMETYPES];
2000-10-05 16:16:09 +02:00
2000-10-10 00:06:20 +02:00
static xmSampleId s_songSampleId;
static xmModId s_songModId;
static xmPlayingId s_songPlayingId;
2001-01-19 17:25:05 +01:00
static int s_songStartPattern;
2000-10-10 00:06:20 +02:00
static xmSampleId s_sfxSampleId;
static xmModId s_sfxModId;
2000-10-05 16:16:09 +02:00
};
/*----------------------------------------------------------------------
Globals
------- */
/*----------------------------------------------------------------------
Functions
--------- */
/*---------------------------------------------------------------------- */
#endif /* __SOUND_SOUND_H__ */
/*===========================================================================
end */