home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 113 / EnigmaAmiga113CD.iso / software / sviluppo / glquake_src / quakedef.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-16  |  8.5 KB  |  336 lines

  1. /*
  2. Copyright (C) 1996-1997 Id Software, Inc.
  3.  
  4. This program is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU General Public License
  6. as published by the Free Software Foundation; either version 2
  7. of the License, or (at your option) any later version.
  8.  
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
  12.  
  13. See the GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18.  
  19. */
  20. // quakedef.h -- primary header for client
  21.  
  22. //#define GLTEST      // experimental stuff
  23.  
  24. #define QUAKE_GAME      // as opposed to utilities
  25.  
  26. #define VERSION       1.09
  27. #define GLQUAKE_VERSION   1.00
  28. #define D3DQUAKE_VERSION  0.01
  29. #define WINQUAKE_VERSION  0.996
  30. #define LINUX_VERSION   1.30
  31. #define X11_VERSION     1.10
  32.  
  33. //define  PARANOID      // speed sapping error checking
  34.  
  35. #ifdef QUAKE2
  36. #define GAMENAME  "id1"   // directory to look in by default
  37. #else
  38. #define GAMENAME  "id1"
  39. #endif
  40.  
  41. #include <math.h>
  42. #include <string.h>
  43. #include <stdarg.h>
  44. #include <stdio.h>
  45. #include <stdlib.h>
  46. #include <setjmp.h>
  47.  
  48. #if defined(_WIN32) && !defined(WINDED)
  49.  
  50. #if defined(_M_IX86)
  51. #define __i386__  1
  52. #endif
  53.  
  54. void  VID_LockBuffer (void);
  55. void  VID_UnlockBuffer (void);
  56.  
  57. #else
  58.  
  59. #define VID_LockBuffer()
  60. #define VID_UnlockBuffer()
  61.  
  62. #endif
  63.  
  64. #if defined __i386__ // && !defined __sun__
  65. #define id386 1
  66. #else
  67. #define id386 0
  68. #endif
  69.  
  70. #if id386
  71. #define UNALIGNED_OK  1 // set to 0 if unaligned accesses are not supported
  72. #else
  73. #define UNALIGNED_OK  0
  74. #endif
  75.  
  76. // !!! if this is changed, it must be changed in d_ifacea.h too !!!
  77. #define CACHE_SIZE  32    // used to align key data structures
  78.  
  79. #define UNUSED(x) (x = x) // for pesky compiler / lint warnings
  80.  
  81. #define MINIMUM_MEMORY      0x550000
  82. #define MINIMUM_MEMORY_LEVELPAK (MINIMUM_MEMORY + 0x100000)
  83.  
  84. #define MAX_NUM_ARGVS 50
  85.  
  86. // up / down
  87. #define PITCH 0
  88.  
  89. // left / right
  90. #define YAW   1
  91.  
  92. // fall over
  93. #define ROLL  2
  94.  
  95.  
  96. #define MAX_QPATH   64      // max length of a quake game pathname
  97. #define MAX_OSPATH    128     // max length of a filesystem pathname
  98.  
  99. #define ON_EPSILON    0.1     // point on plane side epsilon
  100.  
  101. #define MAX_MSGLEN    8000    // max length of a reliable message
  102. #define MAX_DATAGRAM  1024    // max length of unreliable message
  103.  
  104. //
  105. // per-level limits
  106. //
  107. #define MAX_EDICTS    600     // FIXME: ouch! ouch! ouch!
  108. #define MAX_LIGHTSTYLES 64
  109. #define MAX_MODELS    256     // these are sent over the net as bytes
  110. #define MAX_SOUNDS    256     // so they cannot be blindly increased
  111.  
  112. #define SAVEGAME_COMMENT_LENGTH 39
  113.  
  114. #define MAX_STYLESTRING 64
  115.  
  116. //
  117. // stats are integers communicated to the client by the server
  118. //
  119. #define MAX_CL_STATS    32
  120. #define STAT_HEALTH     0
  121. #define STAT_FRAGS      1
  122. #define STAT_WEAPON     2
  123. #define STAT_AMMO     3
  124. #define STAT_ARMOR      4
  125. #define STAT_WEAPONFRAME  5
  126. #define STAT_SHELLS     6
  127. #define STAT_NAILS      7
  128. #define STAT_ROCKETS    8
  129. #define STAT_CELLS      9
  130. #define STAT_ACTIVEWEAPON 10
  131. #define STAT_TOTALSECRETS 11
  132. #define STAT_TOTALMONSTERS  12
  133. #define STAT_SECRETS    13    // bumped on client side by svc_foundsecret
  134. #define STAT_MONSTERS   14    // bumped by svc_killedmonster
  135.  
  136. // stock defines
  137.  
  138. #define IT_SHOTGUN        1
  139. #define IT_SUPER_SHOTGUN    2
  140. #define IT_NAILGUN        4
  141. #define IT_SUPER_NAILGUN    8
  142. #define IT_GRENADE_LAUNCHER   16
  143. #define IT_ROCKET_LAUNCHER    32
  144. #define IT_LIGHTNING      64
  145. #define IT_SUPER_LIGHTNING      128
  146. #define IT_SHELLS               256
  147. #define IT_NAILS                512
  148. #define IT_ROCKETS              1024
  149. #define IT_CELLS                2048
  150. #define IT_AXE                  4096
  151. #define IT_ARMOR1               8192
  152. #define IT_ARMOR2               16384
  153. #define IT_ARMOR3               32768
  154. #define IT_SUPERHEALTH          65536
  155. #define IT_KEY1                 131072
  156. #define IT_KEY2                 262144
  157. #define IT_INVISIBILITY     524288
  158. #define IT_INVULNERABILITY    1048576
  159. #define IT_SUIT         2097152
  160. #define IT_QUAD         4194304
  161. #define IT_SIGIL1               (1<<28)
  162. #define IT_SIGIL2               (1<<29)
  163. #define IT_SIGIL3               (1<<30)
  164. #define IT_SIGIL4               (1<<31)
  165.  
  166. //===========================================
  167. //rogue changed and added defines
  168.  
  169. #define RIT_SHELLS              128
  170. #define RIT_NAILS               256
  171. #define RIT_ROCKETS             512
  172. #define RIT_CELLS               1024
  173. #define RIT_AXE                 2048
  174. #define RIT_LAVA_NAILGUN        4096
  175. #define RIT_LAVA_SUPER_NAILGUN  8192
  176. #define RIT_MULTI_GRENADE       16384
  177. #define RIT_MULTI_ROCKET        32768
  178. #define RIT_PLASMA_GUN          65536
  179. #define RIT_ARMOR1              8388608
  180. #define RIT_ARMOR2              16777216
  181. #define RIT_ARMOR3              33554432
  182. #define RIT_LAVA_NAILS          67108864
  183. #define RIT_PLASMA_AMMO         134217728
  184. #define RIT_MULTI_ROCKETS       268435456
  185. #define RIT_SHIELD              536870912
  186. #define RIT_ANTIGRAV            1073741824
  187. #define RIT_SUPERHEALTH         2147483648
  188.  
  189. //MED 01/04/97 added hipnotic defines
  190. //===========================================
  191. //hipnotic added defines
  192. #define HIT_PROXIMITY_GUN_BIT 16
  193. #define HIT_MJOLNIR_BIT       7
  194. #define HIT_LASER_CANNON_BIT  23
  195. #define HIT_PROXIMITY_GUN   (1<<HIT_PROXIMITY_GUN_BIT)
  196. #define HIT_MJOLNIR         (1<<HIT_MJOLNIR_BIT)
  197. #define HIT_LASER_CANNON    (1<<HIT_LASER_CANNON_BIT)
  198. #define HIT_WETSUIT         (1<<(23+2))
  199. #define HIT_EMPATHY_SHIELDS (1<<(23+3))
  200.  
  201. //===========================================
  202.  
  203. #define MAX_SCOREBOARD    16
  204. #define MAX_SCOREBOARDNAME  32
  205.  
  206. #define SOUND_CHANNELS    8
  207.  
  208. // This makes anyone on id's net privileged
  209. // Use for multiplayer testing only - VERY dangerous!!!
  210. // #define IDGODS
  211.  
  212. #include "common.h"
  213. #include "bspfile.h"
  214. #include "vid.h"
  215. #include "sys.h"
  216. #include "zone.h"
  217. #include "mathlib.h"
  218.  
  219. typedef struct
  220. {
  221.   vec3_t  origin;
  222.   vec3_t  angles;
  223.   int   modelindex;
  224.   int   frame;
  225.   int   colormap;
  226.   int   skin;
  227.   int   effects;
  228. } entity_state_t;
  229.  
  230.  
  231. #include "wad.h"
  232. #include "draw.h"
  233. #include "cvar.h"
  234. #include "screen.h"
  235. #include "net.h"
  236. #include "protocol.h"
  237. #include "cmd.h"
  238. #include "sbar.h"
  239. #include "sound.h"
  240. #include "render.h"
  241. #include "client.h"
  242. #include "progs.h"
  243. #include "server.h"
  244.  
  245. #ifdef GLQUAKE
  246. #include "gl_model.h"
  247. #else
  248. #include "model.h"
  249. #include "d_iface.h"
  250. #endif
  251.  
  252. #include "input.h"
  253. #include "world.h"
  254. #include "keys.h"
  255. #include "console.h"
  256. #include "view.h"
  257. #include "menu.h"
  258. #include "crc.h"
  259. #include "cdaudio.h"
  260.  
  261. #ifdef GLQUAKE
  262. #include "glquake.h"
  263. #endif
  264.  
  265. //=============================================================================
  266.  
  267. // the host system specifies the base of the directory tree, the
  268. // command line parms passed to the program, and the amount of memory
  269. // available for the program to use
  270.  
  271. typedef struct
  272. {
  273.   char  *basedir;
  274.   char  *cachedir;    // for development over ISDN lines
  275.   int   argc;
  276.   char  **argv;
  277.   void  *membase;
  278.   int   memsize;
  279. } quakeparms_t;
  280.  
  281.  
  282. //=============================================================================
  283.  
  284.  
  285.  
  286. extern qboolean noclip_anglehack;
  287.  
  288.  
  289. //
  290. // host
  291. //
  292. extern  quakeparms_t host_parms;
  293.  
  294. extern  cvar_t    sys_ticrate;
  295. extern  cvar_t    sys_nostdout;
  296. extern  cvar_t    developer;
  297.  
  298. extern  qboolean  host_initialized;   // true if into command execution
  299. extern  double    host_frametime;
  300. extern  byte    *host_basepal;
  301. extern  byte    *host_colormap;
  302. extern  int     host_framecount;  // incremented every frame, never reset
  303. extern  double    realtime;     // not bounded in any way, changed at
  304.                     // start of every frame, never reset
  305.  
  306. void Host_ClearMemory (void);
  307. void Host_ServerFrame (void);
  308. void Host_InitCommands (void);
  309. void Host_Init (quakeparms_t *parms);
  310. void Host_Shutdown(void);
  311. void Host_Error (char *error, ...);
  312. void Host_EndGame (char *message, ...);
  313. void Host_Frame (float time);
  314. void Host_Quit_f (void);
  315. void Host_ClientCommands (char *fmt, ...);
  316. void Host_ShutdownServer (qboolean crash);
  317.  
  318. extern qboolean   msg_suppress_1;   // suppresses resolution and cache size console output
  319.                     //  an fullscreen DIB focus gain/loss
  320. extern int      current_skill;    // skill level for currently loaded level (in case
  321.                     //  the user changes the cvar while the level is
  322.                     //  running, this reflects the level actually in use)
  323.  
  324. extern qboolean   isDedicated;
  325.  
  326. extern int      minimum_memory;
  327.  
  328. //
  329. // chase
  330. //
  331. extern  cvar_t  chase_active;
  332.  
  333. void Chase_Init (void);
  334. void Chase_Reset (void);
  335. void Chase_Update (void);
  336.