ref: 8c723c09234bbfdda47b12e65ca8dfbd58e18673
dir: /src/d_event.h/
//
// Copyright(C) 1993-1996 Id Software, Inc.
// Copyright(C) 2005-2014 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// DESCRIPTION:
//
//
#ifndef __D_EVENT__
#define __D_EVENT__
#include "doomtype.h"
//
// Event handling.
//
// Input event types.
typedef enum
{
// Key press/release events.
// data1: Key code (from doomkeys.h) of the key that was
// pressed or released. This is the key as it appears
// on a US keyboard layout, and does not change with
// layout.
// For ev_keydown only:
// data2: ASCII representation of the key that was pressed that
// changes with the keyboard layout; eg. if 'Z' is
// pressed on a German keyboard, data1='y',data2='z'.
// Not affected by modifier keys.
// data3: ASCII input, fully modified according to keyboard
// layout and any modifier keys that are held down.
// Only set if I_StartTextInput() has been called.
ev_keydown,
ev_keyup,
// Mouse movement event.
// data1: Bitfield of buttons currently held down.
// (bit 0 = left; bit 1 = right; bit 2 = middle).
// data2: X axis mouse movement (turn).
// data3: Y axis mouse movement (forward/backward).
ev_mouse,
// Joystick state.
// data1: Bitfield of buttons currently pressed.
// data2: X axis mouse movement (turn).
// data3: Y axis mouse movement (forward/backward).
// data4: Third axis mouse movement (strafe).
// data5: Fourth axis mouse movement (look)
ev_joystick,
// Quit event. Triggered when the user clicks the "close" button
// to terminate the application.
ev_quit
} evtype_t;
// Event structure.
typedef struct
{
evtype_t type;
// Event-specific data; see the descriptions given above.
int data1, data2, data3, data4, data5;
} event_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,
// 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;
// villsa [STRIFE] Strife specific buttons
// TODO - not finished
typedef enum
{
// Player view look up
BT2_LOOKUP = 1,
// Player view look down
BT2_LOOKDOWN = 2,
// Center player's view
BT2_CENTERVIEW = 4,
// Use inventory item
BT2_INVUSE = 8,
// Drop inventory item
BT2_INVDROP = 16,
// Jump up and down
BT2_JUMP = 32,
// Use medkit
BT2_HEALTH = 128,
} buttoncode2_t;
// Called by IO functions when input is detected.
void D_PostEvent (event_t *ev);
// Read an event from the event queue
event_t *D_PopEvent(void);
#endif