#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 CHAR_SFX_PICKUPTALK		(10)


enum
{
	ENEMY_SFX_DOGBARK = 0,		
	ENEMY_SFX_DOGBARK1,		
	ENEMY_SFX_DOGBARK2,		
	ENEMY_SFX_DOGBARK3,		
//	ENEMY_SFX_DOGGROWLBIG,	
	ENEMY_SFX_DOGGROWLS1,	
	ENEMY_SFX_DOGGROWLS2,	
	ENEMY_SFX_DOGSCRATCH1,	
//	ENEMY_SFX_DOGSCRATCH2,	
	ENEMY_SFX_DOGSKIDS,		
	ENEMY_SFX_DOGSNIFFS1,	
	ENEMY_SFX_DOGSNIFFS2,	
	ENEMY_SFX_DOGSNORES1,	
//	ENEMY_SFX_DOGWALKS1,		
//	ENEMY_SFX_DOGWALKS2,	
	ENEMY_SFX_DOGWHIMPER1,	
//	ENEMY_SFX_DOGWHIMPER2,	
	ENEMY_SFX_DOGYAWNS1,	
//	ENEMY_SFX_DOGYELPS1		
};

enum
{
	ENEMY_SFX_MRTINMEHEAD = 0,
	ENEMY_SFX_MRTHUH1,
//	ENEMY_SFX_MRTSTEP,
	ENEMY_SFX_MRTNOCHICKESCAPES,
	ENEMY_SFX_MRTTHIEVEBUGGRS
};

enum
{
	ENEMY_SFX_MRSTMINISCULE = 0,
	ENEMY_SFX_MRSTCHICKENS,
	ENEMY_SFX_MRSTCHICKENS2
//#define ENEMY_SFX_MRSTFOOTSTPS1		(0x3)
//#define ENEMY_SFX_MRSTFOOTSTPS2		(0x4)
//#define ENEMY_SFX_MRSTFOOTSTPS3		(0x5)
};




enum
{
	SFX_GINGERDBLEJUMP1 = 0,	
	SFX_GINGEREXERT1,	
	SFX_GINGEREXERT2,	
	SFX_GINGERJUMP1,		
	SFX_GINGERLAND,		
	SFX_GINGERPUSH1,		
//	SFX_GINGERSTEP,		
	SFX_GINGERTHROW,		
	SFX_GINGERPICKUPTALK
};
enum
{
	SFX_ROCKYAAAAAAGH = 0x10,	
	SFX_ROCKYEXERT1,		
	SFX_ROCKYJUMP1,		
	SFX_ROCKYLAND,		
//	SFX_ROCKYSTEP,		
	SFX_ROCKYTHROW,		
	SFX_ROCKYPICKUPTALK	
};
enum
{
	SFX_NICKJUMP = 0x20,	
	SFX_NICKLAND,	
	SFX_NICKPUSH1,	
//	SFX_NICKSTEP,	
	SFX_NICKPICKUPTALK
};
enum
{
	SFX_FETCHDBLEJUMP = 0x30,
	SFX_FETCHEXERT,	
	SFX_FETCHJUMP,	
	SFX_FETCHLAND,	
	SFX_FETCHPUSH1,	
//	SFX_FETCHSTEP,	
	SFX_FETCHPICKUPTALK
};

enum
{
	SFX_MRSTMINISCULE = 0x40,
	SFX_MRSTCHICKENS,
	SFX_MRSTCHICKENS2
};

enum
{
	SFX_MRTINMEHEAD		= 0x50,
	SFX_MRTHUH1,			
	SFX_MRTNOCHICKESCAPES,
	SFX_MRTTHIEVEBUGGRS,
};

enum
{
	SFX_DOGBARK1			=0x60,
	SFX_DOGBARK2,
	SFX_DOGBARK3,
//	SFX_DOGGROWLBIG,
	SFX_DOGGROWLS1,
	SFX_DOGGROWLS2,
	SFX_DOGSCRATCH1,
//	SFX_DOGSCRATCH2,
	SFX_DOGSKIDS,
	SFX_DOGSNIFFS1,
	SFX_DOGSNIFFS2,
	SFX_DOGSNORES1,
//	SFX_DOGWALKS1,
//	SFX_DOGWALKS2,
	SFX_DOGWHIMPER1,
//	SFX_DOGWHIMPER2,
	SFX_DOGYAWNS1,
//	SFX_DOGYELPS1
};

#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", 
	SFX_EGGLAYING_CAMERA,				// 
	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,
	SFX_CONSTRUCT_TWEEDY1,
	SFX_CONSTRUCT_TWEEDY2,
	SFX_CONSTRUCT_WHOOSH,
	SFX_CONSTRUCT_QUACK,

	NUM_CONSTRUCT_SAMPLES,
};

enum
{
	SFX_ENGINE_SQUEAKS,
	SFX_ENGINE_FAILED,
	SFX_ENGINE_OIL,
	SFX_ENGINE_PUMPER,
	SFX_ENGINE_AH,
	SFX_ENGINE_RUNNING,
	SFX_ENGINE_BADSQUEAK,
	SFX_ENGINE_CAMERA,
	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_ENCOURAGE4,
	SFX_WINGS_FINISH,
	SFX_WINGS_CAMERA,
	SFX_WINGS_CATCH,
	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