// 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,
	ga_fullconsole
} 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 3bit weapon mask and shift, convenience.
	BT_WEAPONMASK		= (8+16+32),
	BT_WEAPONSHIFT		= 3,

    //new stuff - bit 6 indicates its a new thing
    BT_DOSDOOM          = 64,
    BT_JUMP             = (64+8),
    BT_DUCK             = (64+16),

	// 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				128

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

extern	gameaction_t	gameaction;


#endif
//-----------------------------------------------------------------------------
//
// $Log:$
//
//-----------------------------------------------------------------------------
