]> git.lizzy.rs Git - plan9front.git/blob - sys/src/games/doom/doomdef.h
games/doom: fix mips
[plan9front.git] / sys / src / games / doom / doomdef.h
1 // Emacs style mode select   -*- C++ -*- 
2 //-----------------------------------------------------------------------------
3 //
4 // $Id:$
5 //
6 // Copyright (C) 1993-1996 by id Software, Inc.
7 //
8 // This source is available for distribution and/or modification
9 // only under the terms of the DOOM Source Code License as
10 // published by id Software. All rights reserved.
11 //
12 // The source is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
15 // for more details.
16 //
17 // DESCRIPTION:
18 //  Internally used data structures for virtually everything,
19 //   key definitions, lots of other stuff.
20 //
21 //-----------------------------------------------------------------------------
22
23 #ifndef __DOOMDEF__
24 #define __DOOMDEF__
25
26 #include <u.h>
27 #include <libc.h>
28 #include <stdio.h>
29
30 //
31 // Global parameters/defines.
32 //
33 // DOOM version
34 enum { VERSION =  110 };
35
36
37 // Game mode handling - identify IWAD version
38 //  to handle IWAD dependend animations etc.
39 typedef enum
40 {
41   shareware,    // DOOM 1 shareware, E1, M9
42   registered,   // DOOM 1 registered, E3, M27
43   commercial,   // DOOM 2 retail, E1 M34
44   // DOOM 2 german edition not handled
45   retail,       // DOOM 1 retail, E4, M36
46   indetermined  // Well, no IWAD found.
47   
48 } GameMode_t;
49
50
51 // Mission packs - might be useful for TC stuff?
52 typedef enum
53 {
54   doom,         // DOOM 1
55   doom2,        // DOOM 2
56   pack_tnt,     // TNT mission pack
57   pack_plut,    // Plutonia pack
58   none
59
60 } GameMission_t;
61
62
63 // Identify language to use, software localization.
64 typedef enum
65 {
66   english,
67   french,
68   german,
69   unknown
70
71 } Language_t;
72
73
74 // If rangecheck is undefined,
75 // most parameter validation debugging code will not be compiled
76 #define RANGECHECK
77
78 // This one switches between MIT SHM (no proper mouse)
79 // and XFree86 DGA (mickey sampling). The original
80 // linuxdoom used SHM, which is default.
81 //#define X11_DGA               1
82
83 //
84 // For resize of screen, at start of game.
85 // It will not work dynamically, see visplanes.
86 //
87 #define BASE_WIDTH              320
88
89 // It is educational but futile to change this
90 //  scaling e.g. to 2. Drawing of status bar,
91 //  menues etc. is tied to the scale implied
92 //  by the graphics.
93 #define SCREEN_MUL              1
94 #define INV_ASPECT_RATIO        0.625 // 0.75, ideally
95
96 // Defines suck. C sucks.
97 // C++ might sucks for OOP, but it sure is a better C.
98 // So there.
99 #define SCREENWIDTH  (SCREEN_MUL*BASE_WIDTH)
100 #define SCREENHEIGHT ((int)(SCREEN_MUL*BASE_WIDTH*INV_ASPECT_RATIO))
101
102 // The maximum number of players, multiplayer/networking.
103 #define MAXPLAYERS              4
104
105 // State updates, number of tics / second.
106 #define TICRATE         35
107
108 // The current state of the game: whether we are
109 // playing, gazing at the intermission screen,
110 // the game final animation, or a demo. 
111 typedef enum
112 {
113     GS_LEVEL,
114     GS_INTERMISSION,
115     GS_FINALE,
116     GS_DEMOSCREEN
117 } gamestate_t;
118
119 //
120 // Difficulty/skill settings/filters.
121 //
122
123 // Skill flags.
124 #define MTF_EASY                1
125 #define MTF_NORMAL              2
126 #define MTF_HARD                4
127
128 // Deaf monsters/do not react to sound.
129 #define MTF_AMBUSH              8
130
131 typedef enum
132 {
133     sk_baby,
134     sk_easy,
135     sk_medium,
136     sk_hard,
137     sk_nightmare
138 } skill_t;
139
140
141
142
143 //
144 // Key cards.
145 //
146 typedef enum
147 {
148     it_bluecard,
149     it_yellowcard,
150     it_redcard,
151     it_blueskull,
152     it_yellowskull,
153     it_redskull,
154     
155     NUMCARDS
156     
157 } card_t;
158
159
160
161 // The defined weapons,
162 //  including a marker indicating
163 //  user has not changed weapon.
164 typedef enum
165 {
166     wp_fist,
167     wp_pistol,
168     wp_shotgun,
169     wp_chaingun,
170     wp_missile,
171     wp_plasma,
172     wp_bfg,
173     wp_chainsaw,
174     wp_supershotgun,
175
176     NUMWEAPONS,
177     
178     // No pending weapon change.
179     wp_nochange
180
181 } weapontype_t;
182
183
184 // Ammunition types defined.
185 typedef enum
186 {
187     am_clip,    // Pistol / chaingun ammo.
188     am_shell,   // Shotgun / double barreled shotgun.
189     am_cell,    // Plasma rifle, BFG.
190     am_misl,    // Missile launcher.
191     NUMAMMO,
192     am_noammo   // Unlimited for chainsaw / fist.       
193
194 } ammotype_t;
195
196
197 // Power up artifacts.
198 typedef enum
199 {
200     pw_invulnerability,
201     pw_strength,
202     pw_invisibility,
203     pw_ironfeet,
204     pw_allmap,
205     pw_infrared,
206     NUMPOWERS
207     
208 } powertype_t;
209
210
211
212 //
213 // Power up durations,
214 //  how many seconds till expiration,
215 //  assuming TICRATE is 35 ticks/second.
216 //
217 typedef enum
218 {
219     INVULNTICS  = (30*TICRATE),
220     INVISTICS   = (60*TICRATE),
221     INFRATICS   = (120*TICRATE),
222     IRONTICS    = (60*TICRATE)
223     
224 } powerduration_t;
225
226
227
228
229 //
230 // DOOM keyboard definition.
231 // This is the stuff configured by Setup.Exe.
232 // Most key data are simple ascii (uppercased).
233 //
234 #define KEY_RIGHTARROW  0xae
235 #define KEY_LEFTARROW   0xac
236 #define KEY_UPARROW     0xad
237 #define KEY_DOWNARROW   0xaf
238 #define KEY_ESCAPE      27
239 #define KEY_ENTER       13
240 #define KEY_TAB         9
241 #define KEY_F1          (0x80+0x3b)
242 #define KEY_F2          (0x80+0x3c)
243 #define KEY_F3          (0x80+0x3d)
244 #define KEY_F4          (0x80+0x3e)
245 #define KEY_F5          (0x80+0x3f)
246 #define KEY_F6          (0x80+0x40)
247 #define KEY_F7          (0x80+0x41)
248 #define KEY_F8          (0x80+0x42)
249 #define KEY_F9          (0x80+0x43)
250 #define KEY_F10         (0x80+0x44)
251 #define KEY_F11         (0x80+0x57)
252 #define KEY_F12         (0x80+0x58)
253
254 #define KEY_BACKSPACE   127
255 #define KEY_PAUSE       0xff
256
257 #define KEY_EQUALS      0x3d
258 #define KEY_MINUS       0x2d
259
260 #define KEY_RSHIFT      (0x80+0x36)
261 #define KEY_RCTRL       (0x80+0x1d)
262 #define KEY_RALT        (0x80+0x38)
263
264 #define KEY_LALT        KEY_RALT
265
266
267
268 // DOOM basic types (boolean),
269 //  and max/min values.
270 //#include "doomtype.h"
271
272 // Fixed point.
273 //#include "m_fixed.h"
274
275 // Endianess handling.
276 //#include "m_swap.h"
277
278
279 // Binary Angles, sine/cosine/atan lookups.
280 //#include "tables.h"
281
282 // Event type.
283 //#include "d_event.h"
284
285 // Game function, skills.
286 //#include "g_game.h"
287
288 // All external data is defined here.
289 //#include "doomdata.h"
290
291 // All important printed strings.
292 // Language selection (message strings).
293 //#include "dstrings.h"
294
295 // Player is a special actor.
296 //struct player_s;
297
298
299 //#include "d_items.h"
300 //#include "d_player.h"
301 //#include "p_mobj.h"
302 //#include "d_net.h"
303
304 // PLAY
305 //#include "p_tick.h"
306
307
308
309
310 // Header, generated by sound utility.
311 // The utility was written by Dave Taylor.
312 //#include "sounds.h"
313
314
315
316
317 #endif          // __DOOMDEF__
318 //-----------------------------------------------------------------------------
319 //
320 // $Log:$
321 //
322 //-----------------------------------------------------------------------------