#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 CHAR_SFX_THROW			(9)

#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_GINGERTHROW			(0x7)

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

#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,
	SFX_CATAPULT_WEE1,					
	SFX_CATAPULT_WEE2,					
	SFX_CATAPULT_WEE3,					
	SFX_CATAPULT_WEE4,					
	SFX_CATAPULT_WEE5,					
	SFX_CATAPULT_WEE6,					
	SFX_CATAPULT_WEE7,
	SFX_CATAPULT_JUMPOFF,
	SFX_CATAPULT_METDRUM,
	NUM_CATAPULT_SAMPLES
};


enum
{
	SFX_SEESAW_LAUNCH,
	SFX_SEESAW_BOUNCE,
	SFX_SEESAW_CRASH,
	SFX_SEESAW_LAND,
	SFX_SEESAW_HIT1,					
	SFX_SEESAW_HIT2,					
	SFX_SEESAW_HIT3,					
	SFX_SEESAW_HIT4,					
	SFX_SEESAW_HIT5,					
	SFX_SEESAW_WEE1,					
	SFX_SEESAW_WEE2,					
	SFX_SEESAW_WEE3,					
	SFX_SEESAW_WEE4,					
	SFX_SEESAW_WEE5,					
	SFX_SEESAW_WEE6,					
	SFX_SEESAW_WEE7,					
	NUM_SEESAW_SAMPLES,
};


enum
{
	SFX_FIREWORKS_LAUNCH,
	SFX_FIREWORKS_HIT,
	SFX_FIREWORKS_RUNBACK,
	SFX_FIREWORKS_WIND,
	SFX_FIREWORKS_THUD,
	SFX_FIREWORKS_HIT1,					
	SFX_FIREWORKS_HIT2,					
	SFX_FIREWORKS_HIT3,					
	SFX_FIREWORKS_HIT4,					
	SFX_FIREWORKS_HIT5,					
	SFX_FIREWORKS_WEE1,					
	SFX_FIREWORKS_WEE2,					
	SFX_FIREWORKS_WEE3,					
	SFX_FIREWORKS_WEE4,					
	SFX_FIREWORKS_WEE5,					
	SFX_FIREWORKS_WEE6,					
	SFX_FIREWORKS_WEE7,					
	SFX_FIREWORKS_WHOOSH1,
	SFX_FIREWORKS_WHOOSH2,
	SFX_FIREWORKS_WHOOSH3,
	SFX_FIREWORKS_WHOOSH4,
	SFX_FIREWORKS_WHOOSH5,
	SFX_FIREWORKS_YIPEE,
	SFX_FIREWORKS_CRASH1,
	SFX_FIREWORKS_CRASH2,

	NUM_FIREWORKS_SAMPLES,
};

enum
{
	SFX_EGGLAYING_SPLAT,                //    "eggsplat1",  
	SFX_EGGLAYING_LAY,					//	  "layegg",     
	SFX_EGGLAYING_LAY_SQUELCH,			//	  "oilblob",    
	SFX_EGGLAYING_LAY_FART,				//	  "pumper1",    
	SFX_EGGLAYING_TIRED,				//	  "eggsausted1",
	SFX_EGGLAYING_POP,					//	  "egglaypop01",
	SFX_EGGLAYING_BRILL,				//	  "brilliant",  
	SFX_EGGLAYING_GREAT,				//	  "great",      
	SFX_EGGLAYING_CAUGHT1,				//	  "ing_gen_33a",
	SFX_EGGLAYING_DROP1,				//	  "ing_gen_32a",
	SFX_EGGLAYING_DROP2,				//	  "ing_gen_31b",
	SFX_EGGLAYING_FEEDME1,				//	  "ing_gen_29c",
	SFX_EGGLAYING_EATING1,				//	  "munching02", 
	SFX_EGGLAYING_EATING2,				//	  "munching03", 
	SFX_EGGLAYING_CLUCK,				//	  "cluck_idle", 
	NUM_EGGLAYING_SAMPLES,	
};							



enum
{
	SFX_CONSTRUCT_H,
	SFX_CONSTRUCT_K,
	SFX_CONSTRUCT_KH,
	SFX_CONSTRUCT_KS,
	SFX_CONSTRUCT_KSH,
	SFX_CONSTRUCT_S,
	SFX_CONSTRUCT_SH,
	SFX_CONSTRUCT_HAMMER1,
	SFX_CONSTRUCT_HAMMER2,
	SFX_CONSTRUCT_HAMMER3,
	SFX_CONSTRUCT_SPANNER1,
	SFX_CONSTRUCT_SPANNER2,
	SFX_CONSTRUCT_SPANNER3,
	SFX_CONSTRUCT_SAW1,
	SFX_CONSTRUCT_SAW2,
	SFX_CONSTRUCT_SAW3,
	NUM_CONSTRUCT_SAMPLES,
};

enum
{
	SFX_ENGINE_SQUEAKS,
	SFX_ENGINE_FAILED,
	SFX_ENGINE_OIL,
	SFX_ENGINE_PUMPER,
	SFX_ENGINE_AH,
	SFX_ENGINE_RUNNING,
	NUM_ENGINE_SAMPLES,
};

enum
{
	SFX_FOWLER_BRONZE,
	SFX_FOWLER_SILVER,
	SFX_FOWLER_GOLD,
	SFX_FOWLER_FAIL,
	NUM_SFX_FOWLER_SAMPLES,
};


enum
{
	SFX_WINGS_MAKECLOTH,
	SFX_WINGS_MAKEPOLES,
	SFX_WINGS_MAKESTITCHES,
	SFX_WINGS_DROPCLOTH,
	SFX_WINGS_DROPPOLES,
	SFX_WINGS_DROPSTITCHES,
	SFX_WINGS_GETUP1,
	SFX_WINGS_GETUP2,
	SFX_WINGS_GETUP3,
	SFX_WINGS_GETUP4, 
	SFX_WINGS_TIRED,
	SFX_WINGS_BORED,
	SFX_WINGS_CANTSEE,
	SFX_WINGS_THEREYOUGO,
	SFX_WINGS_TOILET,
	SFX_WINGS_CANWESTOP,
	SFX_WINGS_FRIGHTENED,
	SFX_WINGS_THIRSTY,
	SFX_WINGS_ISFARMER,
	SFX_WINGS_ENCOURAGE1,
	SFX_WINGS_ENCOURAGE2,
	SFX_WINGS_ENCOURAGE3,
	SFX_WINGS_FINISH,
	NUM_WINGS_SAMPLES,	
};



extern SfxSampleType	*pSamples[];
extern SfxSampleType *fowlerSubGameSample[NUM_SFX_FOWLER_SAMPLES];


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