/* '='='=' '@' '='='='='='='='='=' '@' '='='='='='='='='=' '@' '='='='| */
/* ='='=' '@'@' '='='='='='='='=' '@'@' '='='='='='='='=' '@'@' '='='=| */
/* '='=' '@':'@' '='='='='='='=' '@':'@' '='='='='='='=' '@':'@' '='='| */
/* ='=' '@':':'@' '='='='='='=' '@':':'@' '='='='='='=' '@':':'@' '='=| */
/* '=' '@':':':'@' '='='='='=' '@':':':'@' '='='='='=' '@':':':'@' '='| */
/* =' '@':':':':'@' '='='='=' '@':':':':'@' '='='='=' '@':':':':'@' '=| */
/* ' '@':'                                                       '@' '| */
/*  '@'         3rd Year Project - ROY SCHESTOWITZ - 2002          @' | */
/* '@                                                               @'| */
/* @':':':':':':':':'@' ' '@':':':':':':':':'@' ' '@':':':':':':':':'@| */
/* ':':':':':':':':':'@' '@':':':':':':':':':'@' '@':':':':':':':':':'| */
/* :':':':':':':':':':'@'@':':':':':':':':':':'@'@':':':':':':':':':':| */
/* ':':':': : :':':':':'@':':':':': : :':':':':'@':':':':': : :':':':'| */
/*  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */
/*              Name:           callbacks.h                             */
/*              Version:        0.6.6                                   */
/*              Date:           12/2/2003                               */
/*                                                                      */
/*      Prototypes for callback functions                               */
/*                                                                      */
/*  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */



/************************************************************************/
/**********************  INCLUDES  **************************************/
/************************************************************************/


/************************************************************************/
/**********************  DEFINES  ***************************************/
/************************************************************************/

/*******************/
/* callback values */
/*******************/


/* MAIN MENU */

#define MAIN_MENU_NEW_GAME 1

#define MAIN_MENU_HELP     2

#define MAIN_MENU_UNDO     7

#define MAIN_MENU_SCORE    3

#define MAIN_MENU_GRID     4

#define MAIN_MENU_METERS   5

#define MAIN_MENU_QUIT     6


/* EDIT BOARD SUBMENU */

#define EDIT_START       91

#define EDIT_BLACK       92

#define EDIT_RED         93

#define EDIT_NONE        94

#define EDIT_END         95


/* SAVE SUBMENU */

#define SAVE_SLOT_0        10

#define SAVE_SLOT_1        11

#define SAVE_SLOT_2        12

#define SAVE_SLOT_3        13

#define SAVE_SLOT_4        14

#define SAVE_SLOT_5        15

#define SAVE_SLOT_6        16

#define SAVE_SLOT_7        17

#define SAVE_SLOT_8        18

#define SAVE_SLOT_9        19


/* LOAD SUBMENU */

#define LOAD_SLOT_0        20

#define LOAD_SLOT_1        21

#define LOAD_SLOT_2        22

#define LOAD_SLOT_3        23

#define LOAD_SLOT_4        24

#define LOAD_SLOT_5        25

#define LOAD_SLOT_6        26

#define LOAD_SLOT_7        27

#define LOAD_SLOT_8        28

#define LOAD_SLOT_9        29


/* LOGGING SUBMENU */

#define LOGGING_ACTIVATE   60

#define LOGGING_DEACTIVATE   61


/* GAME MODE SUBMENU */

#define GAMEMODE_CPU     40

#define GAMEMODE_PLAYER  41


/* CUSTOMISED COMPUTATION SUBMENU */

#define CUSTOMISED_LINE         70

#define CUSTOMISED_SCORE        71

#define CUSTOMISED_MOBILITY     72

#define CUSTOMISED_POSITION     73


/* DETERMINISM SUBMENU */

#define DETERMINISM_ON          80

#define DETERMINISM_OFF         81


/* REPORT SUBMENU */

#define REPORT_ON          90

#define REPORT_OFF         91


/* DIFFICULTY SUBMENU */

#define DIF_CALLBACK_BEGINNER          30

#define DIF_CALLBACK_NOVICE            31

#define DIF_CALLBACK_EXPERT            32

#define DIF_CALLBACK_PREMASTER         33

#define DIF_CALLBACK_MASTER            34


/* DIFFICULTY DESCRIPTION SUBMENU */

#define DIF_DESC_CALLBACK_BEGINNER          130

#define DIF_DESC_CALLBACK_NOVICE            131

#define DIF_DESC_CALLBACK_EXPERT            132

#define DIF_DESC_CALLBACK_PREMASTER         133

#define DIF_DESC_CALLBACK_MASTER            134


/* OPENING LIBRARY SUBMENU */

#define LIBRARY_ON         143

#define LIBRARY_OFF        144

/************************************************************************/
/**********************  DATA STRUCTURES  *******************************/
/************************************************************************/


/************************************************************************/
/**********************  PROTOTYPES  ************************************/
/************************************************************************/

/**********************/
/** Submenus callbacks*/
/**********************/

void customise_callback ( int menuentry );
void load ( int menuentry );
void save ( int menuentry );
void log_file_callback ( int menuentry );
void difficulty_callback ( int menuentry );
void difficulty_description_callback ( int menuentry );
void gamemode_callback ( int menuentry );
void opening_library_callback ( int menuentry );
void determinism_callback ( int menuentry );
void report_callback ( int menuentry );
void edit_board_callback ( int menuentry );

/*******************/
/** Menu callbacks */
/*******************/

void menu ( int menuentry );

/********************/
/** Event callbacks */
/********************/

void mouse ( int button, int state, int x_val, int y_val );
void idlefun ( void );
void display ( void );
void reshape ( int w, int h );
void mouse_motion ( int x, int y );
void keyboard ( unsigned char key, int x, int y );

/************/
/** Others **/
/************/

void automated_moves ( void );
void open_log_file ( char *filename );
void open_report ( char *filename );

/*                                                                      */
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */
/*                     end of callbacks.h                               */
/************************************************************************/

