/*****************************************************************************\
 * $VER: TetrisQ_definitions.c 1.4                                           *
 *                               DICE/LATTICE C/SAS C/AZTEC C + AmigaOS 2.04 *
 *                 _                                                         *
 * 5.10.92    _   // (c)1992 by "Quarky" Dieter Temme                        *
 *            \\ //                                                          *
 * :ts=4       \X/ --- Freeware --- ONLY AMIGA MAKES IT POSSIBLE             *
 *                                                                           *
\*****************************************************************************/

#define PRGNAME "TetrisQ"
#define VERSION "1.4"

#define PRGNAMELEN 7

#include <exec/types.h>

#define BBWIDTH		2	/* width of one vertical border of bevel boxes */
#define BBHEIGHT	1	/* height of one horizontal border of bevel boxes */

#define COLS_		10	/* columns of playground */
#define ROWS_		20	/* rows of playground */
#define PIXX_		18	/* no. of horizontal pixels in one stone */
#define PIXY_		9	/* no. of vertical pixels in one stone */
#define PIXXM1_		17	/* PIXX_-1 */
#define PIXYM1_		8	/* PIXY_-1 */

#define PGLEFT_		BBWIDTH
#define PGTOP_		(BBHEIGHT+2*7+2*INTERHEIGHT)
#define PGWIDTH_	(COLS_*PIXX_)
#define PGHEIGHT_	(ROWS_*PIXY_)

#define win_WDT		(PGWIDTH_+2*BBWIDTH)
#define win_HGT		(PGTOP_+PGHEIGHT_+BBHEIGHT)
#define hsc_WDT		(4*INTERWIDTH+4*BBWIDTH+20*8)

/*>>> gadget id coding <<<*/
#define GID_PLAYER2_	0x01 /* only as addition */
#define GID_ABORT_		0x02 /* & +1 */
#define GID_START_		0x04 /* & +1 */

/* gadget index */
#define G_MAX_		1
#define G_ABSMAX_	((G_MAX_<<1)+1)

/*>>> menu id coding <<<*/
#define MEN_PROJECT_	0x81
#define MEN_SETTINGS_	0x82
#define MEN_ABOUT_		1
#define MEN_HELP_		2
#define MEN_HIDE_		3
#define MEN_QUIT_		4
#define MEN_1PLAYER_	5
#define MEN_2PLAYERS_	6
#define MEN_HIGHSCORE_	7
#define MEN_LOADTABLE_	8
#define MEN_SAVEAS_		9
#define MEN_CLEARTABLE_	10
#define MEN_STARTLEVEL_	11
#define MEN_AUTOACT_	12
#define MEN_LASTSAVED_	13
#define MEN_DEFAULTS_	14
#define MEN_SAVESETGS_	15

/* status[] */
#define WAITING_	0
#define RUNNING_	1
#define PAUSING_	2

/* rawkey definitions */
#define DEFPLAYER1KEYS	"\x40\x13\x14\x15\x24\x36"
#define DEFPLAYER2KEYS	"\x0f\x3d\x3e\x3f\x2e\x1f"
#define DEFPAUSEKEY		'\x19'
#define NUMPLAYERKEYS	6	/* number of used keys for each player */
#define MAXKEYLEN		22	/* maximum length of one rawkey definition */

/*>>> "main.c" <<<*/
 void PrintNoMem_(void);
void *MAllocQ_(const ULONG size);
void *AllocMemQ_(const ULONG size, const ULONG flags);
 void CtrlPointer_(const UBYTE action);
	#define MOUSE_SET_		0
	#define MOUSE_CLR_		1
	#define MOUSE_INIT_		2
	#define MOUSE_REMOVE_	3

/*>>> "playerctrl.c" <<<*/
 void PC_CtrlGadgets_(const UBYTE endis, UWORD which);
	#define CG_DIS_		0
	#define CG_EN_		1
	#define CG_REM_		2
	#define CG_ADD_		3
 void PC_CtrlMenu_(const UBYTE endis, const UBYTE itemid);
	#define CM_DIS_		0
	#define CM_EN_		1
	#define CM_UNCHK_	2
	#define CM_CHECK_	3
 void PC_SetWindowTitle_(void);
 void PC_InitWindow_(void);
 void PC_CloseWindow_(void);
 void PC_CtrlWindow_(UBYTE acti);
	#define CW_DEACT_	0
	#define CW_ACTIV_	1
	#define CW_SLEEP_	2
	#define CW_SYSTEM_	4	/* only or'ed with CW_ACTIV_ and CW_SLEEP_ */
 void PC_ResizeWindow_(const BOOL right);
UBYTE PC_GetPlayers_(void);
 void PC_CtrlPlayers_(const UBYTE num);
 BOOL PC_ProcessMenu_(const UBYTE menuno);
 void PC_ProcessGadget_(const UBYTE gadid);
UWORD PC_WaitForEvents_(void);
	#define EV_OPEN_	0x0100
	#define EV_CLOSE_	0x0200
	#define EV_EXIT_	0x0300
	#define EV_MENU_	0x0400
	#define EV_GADGET_	0x0500
	#define EV_RAWKEY_	0x0600
	#define EV_TIMER_	0x0700

/*>>> "levelscore.c" <<<*/
 void LS_ResetLevel_(void);
 void LS_SetTable_(TEXT *path, TEXT *name);
 void LS_LoadTable_(const UBYTE choose);
	#define LT_CHOOSE_	0
	#define LT_LOAD_	1
	#define LT_SHOW_	2
 void LS_AppLoadTable_(void);
 void LS_SaveTable_(const BOOL quiet);
	#define ST_REQUEST_	FALSE
	#define ST_QUIET_	TRUE
 void LS_InitTable_(void);
 void LS_CloseTable_(void);
 void LS_ClearTable_(void);
 void LS_NewLevel_(void);
 void LS_CloseNewLevel_(void);
 void LS_IncScore_(const UBYTE row);
 void LS_CtrlTable_(UBYTE openit);
	#define CT_CLOSE_	0
	#define CT_OPEN_	1
	#define CT_TOGGLE_	2
	#define CT_SHOW_	3
UBYTE LS_GetLevel_(void);
 void LS_IncLevel_(const BOOL inc);
 void LS_IncLines_(const BOOL inc);
	#define IL_INC_		TRUE
	#define IL_RESET_	FALSE
 void LS_StartGame_(void);
 void LS_AbortGame_(void);
 void LS_InputEntry_(void);
 void LS_CloseInputEntry_(void);
 void LS_CtrlGuess_(const UBYTE num);
 void LS_CtrlAutoAct_(const UBYTE new);
	#define CA_TOGGLE_	2
 void LS_LoadSettings_(void);
TEXT *LS_UncodeRawKey_(const UBYTE code);
 void LS_SaveSettings_(void);

/*>>> "figurectrl.c" <<<*/
 void FC_OpenFigure_(void);
 void FC_CloseFigure_(void);
 void FC_StartGame_(void);
 void FC_ProcessKey_(UBYTE chr);
 void FC_ProcessTimer_(UBYTE num);
 void FC_ShowTitle_(const BOOL help);
	#define ST_ABOUT_	FALSE
	#define ST_HELP_	TRUE

/*>>> "timerctrl.c" <<<*/
 void TC_InitTimer_(void);
 void TC_CtrlTimer_(const BOOL start);
	#define CT_STOP_	0
	#define CT_START_	1
 void TC_CloseTimer_(void);
