/* Snake_Windows.h  External definitions */

#define	Snake_Windows_h	1

#include	<EXEC/Types.h>
#include	<EXEC/devices.h>
#include	<EXEC/io.h>
#include	<EXEC/memory.h>
#include	<Devices/gameport.h>
#include	<Devices/inputevent.h>
#include	<Devices/audio.h>
#include	<Libraries/dos.h>
#include	<Intuition/Intuition.h>
#include	<WorkBench/StartUp.h>
#include	<Functions.h>

/* The standard sound period */
#define	SoundPeriod		428L

/* Some RAW keyboard stuff... */
#define	RAW_ESC		0x45
#define	RAW_HELP	0x5F
#define	RAW_MAX		0x5F
#define	EMPTY_KEYBOARD	(IEQUALIFIER_CAPSLOCK | IEQUALIFIER_NUMERICPAD | IEQUALIFIER_REPEAT)

typedef	struct	ScoreList_rec
	{
		UBYTE	str[16];
		ULONG	score;
	}	ScoreList_rec;

typedef	struct	KeyList_rec
	{
		UBYTE	str[3];
		UBYTE	raw;
	}	KeyList_rec;

#define	MAX_LEVEL	50
#define	NUM_COL		40
#define	NUM_ROW		24

typedef	BYTE		Pit_Screen_Col[NUM_ROW];
typedef	Pit_Screen_Col	Pit_Screen[NUM_COL];

/* These CAN NOT change!!!  They are connected to the TOOLS menu... */
#define	NORMAL_BRICK	1
#define	MOVING_BRICK	2
#define	DROP_BRICK	3
#define	POPUP_BRICK	4
#define	GROW_FOOD	5
#define	SHRINK_FOOD	6
#define	EMPTY_SQUARE	0

extern	Pit_Screen	All_Pit_Screens[MAX_LEVEL];
extern	ScoreList_rec	ScoreList[8];
extern	KeyList_rec	KeyList[4];

extern		char	*Save_File;

extern	struct	Image	Head[4];
extern	struct	Image	Body[4];
extern	struct	Image	Turn[4];
extern	struct	Image	Tail[4];
extern	struct	Image	ShrinkFood;
extern	struct	Image	GrowFood;
extern	struct	Image	PopUpBrick;
extern	struct	Image	DropBrick;
extern	struct	Image	MoveBrick;
extern	struct	Image	Brick;
extern	struct	Image	Empty;

extern	struct	Window	*MyWindow;

extern	struct	MsgPort		*Timer;
extern	struct	timerequest	Time_Req;

extern	struct	Image		Splash;

extern	short		OpenMyWindow();
extern	VOID		CloseMyWindow();
extern	short		Request_SelectLevel();
extern	VOID		Request_SelectKeys();
extern	VOID		Request_HighScores();
extern	short		Request_Pause();
extern	VOID		fix_KeyList();
extern	VOID		UpDate_Status();
extern	VOID		Edit_Screens();
extern	VOID		SetUp_For_Save();
extern	VOID		Save_It_Now();
extern	VOID		Play_Game();
extern	VOID		Set_Color_Level();
extern	VOID		Cycle_Colors();
extern	VOID		Do_Fade();
extern	VOID		UnDo_Fade();
extern	VOID		Show_Title();
extern	VOID		Hide_Title();
extern	UBYTE		Convert_Key();
extern	VOID		ShowWait();
extern	VOID		MyMain();

extern	VOID		Sound_Eat();
extern	VOID		Sound_Move();
extern	VOID		Sound_Dead();
extern	VOID		Sound_Finish();
extern	VOID		Sound_Play();
extern	VOID		Init_Sound();
extern	VOID		Stop_Sound();
extern	VOID		Stop_This_Channel();
extern	VOID		Start_This_Channel();

extern	struct	IntuitionBase	*IntuitionBase;
extern	struct	GfxBase		*GfxBase;
