/* Emacs style mode select   -*- C++ -*- */
/*-----------------------------------------------------------------------------*/

/* $Id:$*/

/* Copyright (C) 1993-1996 by id Software, Inc.*/

/* This source is available for distribution and/or modification*/
/* only under the terms of the DOOM Source Code License as*/
/* published by id Software. All rights reserved.*/

/* The source is distributed in the hope that it will be useful,*/
/* but WITHOUT ANY WARRANTY; without even the implied warranty of*/
/* FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License*/
/* for more details.*/

/* DESCRIPTION:*/


/*-----------------------------------------------------------------------------*/


#ifndef __D_EVENT__
#define __D_EVENT__


#include "doomtype.h"



/* Event handling.*/


/* Input event types.*/
typedef enum
{
    ev_keydown,
    ev_keyup,
    ev_mouse,
    ev_joystick
} evtype_t;

/* Event structure.*/
typedef struct
{
    evtype_t	type;
    int		data1;		/* keys / mouse/joystick buttons*/
    int		data2;		/* mouse/joystick x move*/
    int		data3;		/* mouse/joystick y move*/
} event_t;


typedef enum
{
    ga_nothing,
    ga_loadlevel,
    ga_newgame,
    ga_loadgame,
    ga_savegame,
    ga_playdemo,
    ga_completed,
    ga_victory,
    ga_worlddone,
    ga_screenshot
} gameaction_t;




/* Button/action code definitions.*/

typedef enum
{
    /* Press "Fire".*/
    BT_ATTACK		= 1,
    /* Use button, to open doors, activate switches.*/
    BT_USE		= 2,

    /* Flag: game events, not really buttons.*/
    BT_SPECIAL		= 128,
    BT_SPECIALMASK	= 3,

    /* Flag, weapon change pending.*/
    /* If true, the next 3 bits hold weapon num.*/
    BT_CHANGE		= 4,
    /* The 4bit weapon mask and shift, convenience.*/
    BT_WEAPONMASK	= (8+16+32+64), /* extended for super shotgun */
    BT_WEAPONSHIFT	= 3,

    /* Pause the game.*/
    BTS_PAUSE		= 1,
    /* Save the game at each console.*/
    BTS_SAVEGAME	= 2,

    /* Savegame slot numbers*/
    /*  occupy the second byte of buttons.    */
    BTS_SAVEMASK	= (4+8+16),
    BTS_SAVESHIFT 	= 2

} buttoncode_t;





/* GLOBAL VARIABLES*/

#define MAXEVENTS		64

extern  event_t		events[MAXEVENTS];
extern  int             eventhead;
extern	int		eventtail;

extern  gameaction_t    gameaction;


#endif
/*-----------------------------------------------------------------------------*/

/* $Log:$*/

/*-----------------------------------------------------------------------------*/
