home *** CD-ROM | disk | FTP | other *** search
/ Learn 3D Graphics Programming on the PC / Learn_3D_Graphics_Programming_on_the_PC_Ferraro.iso / rwdos / global.h < prev    next >
C/C++ Source or Header  |  1995-02-15  |  5KB  |  172 lines

  1. /**********************************************************************
  2.  *
  3.  * File :     global.h
  4.  *
  5.  * Abstract : Global definitions shared across modules
  6.  *
  7.  **********************************************************************
  8.  *
  9.  * This file is a product of Criterion Software Ltd.
  10.  *
  11.  * This file is provided as is with no warranties of any kind and is
  12.  * provided without any obligation on Criterion Software Ltd. or
  13.  * Canon Inc. to assist in its use or modification.
  14.  *
  15.  * Criterion Software Ltd. will not, under any
  16.  * circumstances, be liable for any lost revenue or other damages arising
  17.  * from the use of this file.
  18.  *
  19.  * Copyright (c) 1995 Criterion Software Ltd.
  20.  * All Rights Reserved.
  21.  *
  22.  * RenderWare is a trademark of Canon Inc.
  23.  *
  24.  ************************************************************************/
  25.  
  26. /*--- Option definitions ---*/
  27.  
  28. #define WITH_SCORE          /* Overlay the score on top of the display */
  29. #define WITH_SHADOWS        /* Render shadows under the Rats and Bits  */
  30. /* #define WITH_SOUND          Include sounds */
  31.  
  32. /*--- Include files ---*/
  33.  
  34. #include <stdlib.h>
  35. #include <stdio.h>
  36. #include <stdarg.h>
  37. #include <math.h>
  38. #include <string.h>
  39. #include <time.h>
  40.  
  41. /* Main RenderWare include file */
  42.  
  43. #include "rwlib.h"
  44.  
  45. /* OS specific function prototypes */
  46.  
  47. #include "os.h"
  48.  
  49. /* Module specific data and functions */
  50.  
  51. #include "doscyber.h"
  52. #include "object.h"
  53. #include "gunbit.h"
  54. #include "ratrophy.h"
  55. #include "man.h"
  56.  
  57. #ifdef WITH_SOUND
  58. #include "sound.h"
  59. #endif
  60.  
  61. /*--- Magic Number definitions */
  62.  
  63. /* The hole in the panel that the scene will be rendered into */
  64.  
  65. #define PANEL_HOLE_WIDTH    400
  66. #define PANEL_HOLE_HEIGHT   300
  67. #define PANEL_HOLE_XOFFSET  190
  68. #define PANEL_HOLE_YOFFSET   40
  69.  
  70. /*  World Definitions: The world is made up of 3 separate cells, the
  71.  *  street, the hall and the poolroom. The following diagram should help
  72.  *  to visualize the world. The view is a plan view seen from above.
  73.  *  x marks the initial position if the camera.
  74.  *
  75.  *                         Far
  76.  *
  77.  *             |-------------------------> X
  78.  *             |  Street   |Hall
  79.  *             |           |----|----|
  80.  *             |     x     |----|    |PoolRoom
  81.  *   Left      |           |    |----|            Right
  82.  *             |           |
  83.  *             |           |
  84.  *             |------------
  85.  *             |
  86.  *             Z
  87.  *                           Near
  88.  */
  89.  
  90. /* Street definitions */
  91.  
  92. #define NEAR_STREET     12.0
  93. #define FAR_STREET       0.0
  94. #define LEFT_STREET     -2.0
  95. #define RIGHT_STREET     2.0
  96. #define LEFT_KERB       -1.2
  97. #define RIGHT_KERB       1.2
  98. #define KERB_HEIGHT      0.05
  99. #define STREET_HEIGHT    0.0
  100.  
  101. #define PAD_X           1.5     /* position of the Pad that opens the door */
  102. #define PAD_Y           0.5
  103. #define DOOR_OPEN       10      /* Maximum value for door control variable */
  104. #define DOOR_HEIGHT      0.4    /* Height of the door */
  105.  
  106. /* Hall definitions */
  107.  
  108. #define STEP_HEIGHT      0.045
  109. #define STEP_WIDTH       0.14
  110. #define MAX_STEPS        9
  111.  
  112. #define LEFT_HALL       RIGHT_STREET
  113. #define RIGHT_HALL      3.4
  114. #define FAR_HALL        3.08
  115. #define NEAR_HALL       3.447
  116.  
  117. /* Poolroom definitions */
  118.  
  119. #define LEFT_POOL       RIGHT_HALL
  120. #define RIGHT_POOL      7.4
  121. #define NEAR_POOL       7.08
  122. #define FAR_POOL        FAR_HALL
  123.  
  124. /* Camera definitions */
  125.  
  126. #define CAMERA_START_X  0.0
  127. #define CAMERA_START_Y  0.4
  128. #define CAMERA_START_Z  3.0
  129.  
  130. /* General definitions */
  131.  
  132. #define SHADOW_HEIGHT   0.05        /* height that shadows are drawn above the ground */
  133. #define RICOCHET        (-1.0/8.0)  /* bouncing off of a wall changes velocity by this amount */
  134. #define GRAVITY         0.005       /* the rate that an objects upward velocity decreases */
  135.  
  136. /*--- Macro Definitions ---*/
  137.  
  138. /* Generate a random RwReal in the specified range */
  139.  
  140. #define RANDOM_REAL(min, max) \
  141. (RAdd(min,RMul(RMul(INT2REAL(RwRandom()&0x7fff),CREAL(1.0/32768.0)), RSub(max, min))))                               \
  142.  
  143. /*--- Global Variable Definitions ---*/
  144.  
  145. /* One of the modules should define DEFINE_GLOBAL before including this file
  146.  * this will ensure that each global variable is only declared once
  147.  */
  148.  
  149. #ifdef DEFINE_GLOBAL
  150. #define ref
  151. #define value(x) = (x)
  152. #else
  153.  
  154. #define ref extern
  155. #define value(x)  /* (x) */
  156.  
  157. #endif
  158.  
  159. ref RwCamera    *cpGCamera      value(NULL); /* camera used for all rendering */
  160. ref RwScene     *spGTargetScene value(NULL); /* each rat is represented by a
  161.                                                 polygon in this scene. Picking
  162.                                                 is performed on this simplified
  163.                                                 target scene rather than the
  164.                                                 main scene */
  165. ref RwScene     *spGScene       value(NULL); /* The main scene containing the
  166.                                                 street */
  167. ref RwScene     *spGPoolScene   value(NULL); /* The scene containing the
  168.                                                 poolroom */
  169. ref RwRaster    *rpGPanel       value(NULL); /* The raster for the surrounding
  170.                                                 panel */
  171.  
  172.