zduke/source/doomlayer/d_event.h

99 lines
2 KiB
C
Raw Permalink Normal View History

2020-07-17 08:59:23 +00:00
// 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_H__
#define __D_EVENT_H__
#include "doomtype.h"
//
// Event handling.
//
// Input event types.
enum EGenericEvent
{
EV_None,
EV_KeyDown, // data1: scan code, data2: Qwerty ASCII code, data3: modifiers
EV_KeyUp, // same
EV_Mouse, // x, y: mouse movement deltas
EV_GUI_Event // subtype specifies actual event
};
// Event structure.
struct event_t
{
BYTE type;
BYTE subtype;
SWORD data1; // keys / mouse/joystick buttons
SWORD data2;
SWORD data3;
int x; // mouse/joystick x move
int y; // mouse/joystick y move
};
typedef enum
{
ga_nothing,
ga_loadlevel,
ga_newgame,
ga_newgame2,
ga_loadgame,
ga_savegame,
ga_autosave,
ga_playdemo,
ga_completed,
ga_victory,
ga_worlddone,
ga_screenshot,
ga_fullconsole
} gameaction_t;
void D_PostEvent (const event_t *ev);
void D_ProcessEvents ();
void D_AddResponder (bool (*responder)(const event_t *ev), int priority);
void D_RemoveResponder (bool (*responder)(const event_t *ev));
//
// GLOBAL VARIABLES
//
#define MAXEVENTS 128
extern event_t events[MAXEVENTS];
extern int eventhead;
extern int eventtail;
extern gameaction_t gameaction;
#define MAX_RESPONDERS 20
typedef bool (*responder_p)(const event_t *);
extern responder_p Responders[MAX_RESPONDERS];
extern int ResponderPriorities[MAX_RESPONDERS];
#endif