home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #6 / amigaacscoverdisc1998-061998.iso / games / descent / source / main / switch.h < prev    next >
Text File  |  1998-06-08  |  4KB  |  131 lines

  1. /*
  2. THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  3. SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
  4. END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  5. ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  6. IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  7. SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  8. FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  9. CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
  10. AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
  11. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
  12. */
  13. /*
  14.  * $Source: f:/miner/source/main/rcs/switch.h $
  15.  * $Revision: 2.0 $
  16.  * $Author: john $
  17.  * $Date: 1995/02/27 11:26:52 $
  18.  * 
  19.  * Triggers and Switches.
  20.  * 
  21.  * $Log: switch.h $
  22.  * Revision 2.0  1995/02/27  11:26:52  john
  23.  * New version 2.0, which has no anonymous unions, builds with
  24.  * Watcom 10.0, and doesn't require parsing BITMAPS.TBL.
  25.  * 
  26.  * Revision 1.19  1995/01/12  17:00:36  rob
  27.  * Fixed a problem with switches and secret levels.
  28.  * 
  29.  * Revision 1.18  1994/10/06  21:24:40  matt
  30.  * Added switch for exit to secret level
  31.  * 
  32.  * Revision 1.17  1994/09/29  17:05:52  matt
  33.  * Removed unused constant
  34.  * 
  35.  * Revision 1.16  1994/09/24  17:10:07  yuan
  36.  * Added Matcen triggers.
  37.  * 
  38.  * Revision 1.15  1994/08/15  18:06:39  yuan
  39.  * Added external trigger.
  40.  * 
  41.  * Revision 1.14  1994/06/16  16:20:52  john
  42.  * Made player start out in physics mode; Neatend up game loop a bit.
  43.  * 
  44.  * Revision 1.13  1994/05/30  20:22:08  yuan
  45.  * New triggers.
  46.  * 
  47.  * Revision 1.12  1994/05/27  10:32:44  yuan
  48.  * New dialog boxes (Walls and Triggers) added.
  49.  * 
  50.  * 
  51.  * Revision 1.11  1994/05/25  18:06:32  yuan
  52.  * Making new dialog box controls for walls and triggers.
  53.  * 
  54.  * Revision 1.10  1994/04/28  18:04:40  yuan
  55.  * Gamesave added.
  56.  * Trigger problem fixed (seg pointer is replaced by index now.)
  57.  * 
  58.  * Revision 1.9  1994/04/26  11:19:01  yuan
  59.  * Make it so a trigger can only be triggered every 5 seconds.
  60.  * 
  61.  */
  62.  
  63. #ifndef _SWITCH_H
  64. #define _SWITCH_H
  65.  
  66. #include "inferno.h"
  67. #include "segment.h"
  68.  
  69. #define    MAX_WALLS_PER_LINK        10
  70.  
  71. #define    TRIGGER_DEFAULT            2*F1_0
  72.  
  73. #define    MAX_TRIGGERS                100
  74. #define    MAX_WALL_SWITCHES            50
  75. #define    MAX_WALL_LINKS                100
  76.  
  77. // Trigger flags      
  78. #define    TRIGGER_CONTROL_DOORS        1    // Control Trigger
  79. #define    TRIGGER_SHIELD_DAMAGE        2    // Shield Damage Trigger
  80. #define    TRIGGER_ENERGY_DRAIN           4    // Energy Drain Trigger
  81. #define    TRIGGER_EXIT                    8    // End of level Trigger
  82. #define    TRIGGER_ON                      16    // Whether Trigger is active
  83. #define    TRIGGER_ONE_SHOT              32    // If Trigger can only be triggered once
  84. #define    TRIGGER_MATCEN                  64    // Trigger for materialization centers
  85. #define    TRIGGER_ILLUSION_OFF         128    // Switch Illusion OFF trigger
  86. #define    TRIGGER_ILLUSION_ON         512    // Switch Illusion ON trigger
  87. #define    TRIGGER_SECRET_EXIT         256    // Exit to secret level
  88.  
  89. // Trigger delay times before they can be retriggered (Recharge time)
  90. #define    TRIGGER_DELAY_DOOR        F1_0*1    // 1 second for doors
  91. #define    TRIGGER_DELAY_ZAPS        F1_0/10    // 1/10 second for quickie stuff
  92.  
  93. // New unimplemented trigger ideas 
  94. #define    TRIGGER_CONTROL_ROBOTS      64    // If Trigger is a Door control trigger (Linked)
  95. #define    CONTROL_ROBOTS                    8    // If Trigger modifies robot behavior
  96. #define    CONTROL_LIGHTS_ON              16    // If Trigger turns on lights in a certain area
  97. #define    CONTROL_LIGHTS_OFF          32    // If Trigger turns off lights in a certain area
  98.  
  99. typedef struct trigger {
  100.     byte        type;
  101.     short        flags;
  102.     fix        value;
  103.     fix        time;
  104.     byte        link_num;
  105.     short     num_links;
  106.     short     seg[MAX_WALLS_PER_LINK];
  107.     short        side[MAX_WALLS_PER_LINK];
  108.     } trigger;
  109.  
  110. //typedef struct link {
  111. //    short     num_walls;
  112. //    short     seg[MAX_WALLS_PER_LINK];
  113. //    short        side[MAX_WALLS_PER_LINK];
  114. //    } link;
  115.  
  116. extern trigger Triggers[MAX_TRIGGERS];
  117. //extern link Links[MAX_WALL_LINKS];
  118.  
  119. extern int Num_triggers;
  120. //extern int Num_links;
  121.  
  122. extern void trigger_init();
  123.  
  124. extern void check_trigger(segment *seg, short side, short objnum);
  125. extern int check_trigger_sub(int trigger_num, int player_num);
  126.  
  127. extern void triggers_frame_process();
  128.  
  129. #endif
  130. 
  131.