1 /* Emacs style mode select   -*- C++ -*-
2  *-----------------------------------------------------------------------------
3  *
4  *
5  *  PrBoom: a Doom port merged with LxDoom and LSDLDoom
6  *  based on BOOM, a modified and improved DOOM engine
7  *  Copyright (C) 1999 by
8  *  id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
9  *  Copyright (C) 1999-2000 by
10  *  Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze
11  *  Copyright 2005, 2006 by
12  *  Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko
13  *
14  *  This program is free software; you can redistribute it and/or
15  *  modify it under the terms of the GNU General Public License
16  *  as published by the Free Software Foundation; either version 2
17  *  of the License, or (at your option) any later version.
18  *
19  *  This program is distributed in the hope that it will be useful,
20  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
21  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22  *  GNU General Public License for more details.
23  *
24  *  You should have received a copy of the GNU General Public License
25  *  along with this program; if not, write to the Free Software
26  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
27  *  02111-1307, USA.
28  *
29  * DESCRIPTION:
30  *  Event information structures.
31  *
32  *-----------------------------------------------------------------------------*/
33 
34 
35 #ifndef __D_EVENT__
36 #define __D_EVENT__
37 
38 
39 #include "doomtype.h"
40 
41 
42 //
43 // Event handling.
44 //
45 
46 // Input event types.
47 typedef enum
48 {
49 #ifdef __LIBRETRO__
50   ev_none,
51 #endif
52   ev_keydown,
53   ev_keyup,
54   ev_mouse,
55 } evtype_t;
56 
57 // Event structure.
58 typedef struct
59 {
60   evtype_t  type;
61   int       data1;    // keys / mouse/joystick buttons
62   int       data2;    // mouse/joystick x move
63   int       data3;    // mouse/joystick y move
64 } event_t;
65 
66 
67 typedef enum
68 {
69   ga_nothing,
70   ga_loadlevel,
71   ga_newgame,
72   ga_loadgame,
73   ga_savegame,
74   ga_playdemo,
75   ga_completed,
76   ga_victory,
77   ga_worlddone,
78 } gameaction_t;
79 
80 
81 
82 //
83 // Button/action code definitions.
84 //
85 typedef enum
86 {
87   // Press "Fire".
88   BT_ATTACK       = 1,
89 
90   // Use button, to open doors, activate switches.
91   BT_USE          = 2,
92 
93   // Flag: game events, not really buttons.
94   BT_SPECIAL      = 128,
95   BT_SPECIALMASK  = 3,
96 
97   // Flag, weapon change pending.
98   // If true, the next 4 bits hold weapon num.
99   BT_CHANGE       = 4,
100 
101   // The 4bit weapon mask and shift, convenience.
102 //BT_WEAPONMASK   = (8+16+32),
103   BT_WEAPONMASK   = (8+16+32+64), // extended to pick up SSG        // phares
104   BT_WEAPONSHIFT  = 3,
105 
106   // Special events
107   BTS_LOADGAME    = 0, // Loads a game
108   // Pause the game.
109   BTS_PAUSE       = 1,
110   // Save the game at each console.
111   BTS_SAVEGAME    = 2,
112   BTS_RESTARTLEVEL= 3, // Restarts the current level
113 
114   // Savegame slot numbers occupy the second byte of buttons.
115   BTS_SAVEMASK    = (4+8+16),
116   BTS_SAVESHIFT   = 2,
117 
118 } buttoncode_t;
119 
120 
121 //
122 // GLOBAL VARIABLES
123 //
124 
125 extern gameaction_t gameaction;
126 
127 #endif
128