Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

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