#ifndef LOADSND_H__
#define LOADSND_H__



#define MAX_CHAR_SFX			0x18

// CPW: gerneral sfx, set up for each character
#define CHAR_SFX_JUMP1			(0)
#define CHAR_SFX_JUMP2			(1)
#define CHAR_SFX_DOUBLEJUMP		(2)
#define CHAR_SFX_EXERT1			(3)
#define CHAR_SFX_EXERT2			(4)
#define CHAR_SFX_LAND			(5)
#define CHAR_SFX_PUSH			(6)
#define CHAR_SFX_STEP1			(7)
#define CHAR_SFX_STEP2			(8)

#define ENEMY_SFX_DOGBARK		(0x00)
#define ENEMY_SFX_DOGBARK1		(0x01)
#define ENEMY_SFX_DOGBARK2		(0x02)
#define ENEMY_SFX_DOGBARK3		(0x03)
#define ENEMY_SFX_DOGGROWLBIG	(0x04)
#define ENEMY_SFX_DOGGROWLS1	(0x05)
#define ENEMY_SFX_DOGGROWLS2	(0x06)
#define ENEMY_SFX_DOGSCRATCH1	(0x07)
#define ENEMY_SFX_DOGSCRATCH2	(0x08)
#define ENEMY_SFX_DOGSKIDS		(0x09)
#define ENEMY_SFX_DOGSNIFFS1	(0x0A)
#define ENEMY_SFX_DOGSNIFFS2	(0x0B)
#define ENEMY_SFX_DOGSNORES1	(0x0C)
#define ENEMY_SFX_DOGWALKS1		(0x0D)
#define ENEMY_SFX_DOGWALKS2		(0x0E)
#define ENEMY_SFX_DOGWHIMPER1	(0x0F)
#define ENEMY_SFX_DOGWHIMPER2	(0x10)
#define ENEMY_SFX_DOGYAWNS1		(0x11)
#define ENEMY_SFX_DOGYELPS1		(0x12)

#define ENEMY_SFX_MRTINMEHEAD		(0x0)
#define ENEMY_SFX_MRTHUH1			(0x1)	
#define ENEMY_SFX_MRTSTEP			(0x2)	
#define ENEMY_SFX_MRTNOCHICKESCAPES	(0x3)
#define ENEMY_SFX_MRTTHIEVEBUGGRS	(0x4)

#define ENEMY_SFX_MRSTMINISCULE		(0x0)
#define ENEMY_SFX_MRSTCHICKENS		(0x1)
#define ENEMY_SFX_MRSTCHICKENS2		(0x2)
#define ENEMY_SFX_MRSTFOOTSTPS1		(0x3)
#define ENEMY_SFX_MRSTFOOTSTPS2		(0x4)
#define ENEMY_SFX_MRSTFOOTSTPS3		(0x5)




#define SFX_GINGERDBLEJUMP1		(0x0)
#define SFX_GINGEREXERT1		(0x1)
#define SFX_GINGEREXERT2		(0x2)
#define SFX_GINGERJUMP1			(0x3)
#define SFX_GINGERLAND			(0x4)
#define SFX_GINGERPUSH1			(0x5)
#define SFX_GINGERSTEP			(0x6)

#define SFX_ROCKYAAAAAAGH		(0x10)
#define SFX_ROCKYEXERT1			(0x11)
#define SFX_ROCKYJUMP1			(0x12)
#define SFX_ROCKYLAND			(0x13)
#define SFX_ROCKYSTEP			(0x14)

#define SFX_NICKJUMP			(0x20)
#define SFX_NICKLAND			(0x21)
#define SFX_NICKPUSH1			(0x22)
#define SFX_NICKSTEP			(0x23)

#define SFX_FETCHDBLEJUMP		(0x30)
#define SFX_FETCHEXERT			(0x31)
#define SFX_FETCHJUMP			(0x32)
#define SFX_FETCHLAND			(0x33)
#define SFX_FETCHPUSH1			(0x34)
#define SFX_FETCHSTEP			(0x35)

#define SFX_MRSTMINISCULE		(0x40)
#define SFX_MRSTCHICKENS		(0x41)
#define SFX_MRSTCHICKENS2		(0x42)
#define SFX_MRSTFOOTSTPS1		(0x43)
#define SFX_MRSTFOOTSTPS2		(0x44)
#define SFX_MRSTFOOTSTPS3		(0x45)

#define SFX_MRTINMEHEAD			(0x50)
#define SFX_MRTHUH1				(0x51)
#define SFX_MRTSTEP				(0x52)
#define SFX_MRTNOCHICKESCAPES	(0x53)
#define SFX_MRTTHIEVEBUGGRS		(0x54)

#define SFX_DOGBARK1			(0x60)
#define SFX_DOGBARK2			(0x61)
#define SFX_DOGBARK3			(0x62)
#define SFX_DOGGROWLBIG			(0x63)
#define SFX_DOGGROWLS1			(0x64)
#define SFX_DOGGROWLS2			(0x65)
#define SFX_DOGSCRATCH1			(0x66)
#define SFX_DOGSCRATCH2			(0x67)
#define SFX_DOGSKIDS			(0x68)
#define SFX_DOGSNIFFS1			(0x69)
#define SFX_DOGSNIFFS2			(0x6A)
#define SFX_DOGSNORES1			(0x6B)
#define SFX_DOGWALKS1			(0x6C)
#define SFX_DOGWALKS2			(0x6D)
#define SFX_DOGWHIMPER1			(0x6E)
#define SFX_DOGWHIMPER2			(0x6F)
#define SFX_DOGYAWNS1			(0x70)
#define SFX_DOGYELPS1			(0x71)

#define SFX_SUCKER				(0x7E)
#define SFX_TESTLOOP			(0x7F)

#define LOADSND_MAXSAMPLES		(0x80)



enum
{
	SFX_CATAPULT_BOIING,
	SFX_CATAPULT_WINDING,
	SFX_CATAPULT_LAUNCH,
	SFX_CATAPULT_SPLASH,
	SFX_CATAPULT_BIGSPLASH,
	SFX_CATAPULT_BACKGROUNDS,
	NUM_CATAPULT_SAMPLES
};


enum
{
	SFX_SEESAW_LAUNCH,
	SFX_SEESAW_BOUNCE,
	SFX_SEESAW_CRASH,
	SFX_SEESAW_LAND,
	NUM_SEESAW_SAMPLES,
};


enum
{
	SFX_FIREWORKS_LAUNCH,
	SFX_FIREWORKS_HIT,
	SFX_FIREWORKS_RUNBACK,
	SFX_FIREWORKS_WIND,
	SFX_FIREWORKS_THUD,
	NUM_FIREWORKS_SAMPLES,
};

enum
{
	SFX_EGGLAYING_SPLAT,
	SFX_EGGLAYING_LAY,
	SFX_EGGLAYING_LAY_SQUELCH,
	SFX_EGGLAYING_LAY_FART,
	SFX_EGGLAYING_TIRED,
	NUM_EGGLAYING_SAMPLES,
};

enum
{
	SFX_CONSTRUCT_HAT1,
	SFX_CONSTRUCT_HAT2,
	SFX_CONSTRUCT_HAT3,
	SFX_CONSTRUCT_KICK,
	SFX_CONSTRUCT_KICK2,
	SFX_CONSTRUCT_CRASH,
	SFX_CONSTRUCT_SNARE,
	NUM_CONSTRUCT_SAMPLES,
};





extern SfxSampleType	*pSamples[];

int loadsndLoadBank(char *);
int loadsndKillBanks(void);
SfxSampleType *loadsndGetSample(SfxSampleType **ppS, int offset, char *sName);
int loadsndSetUpGeneric(void);
SfxSampleType **loadsndSetUpCharacter(int ch);
SfxSampleType **loadsndSetUpEnemy(int ch);

void loadsndSubGames(int level, SfxSampleType **pSamples, int arraySize);



#endif