comments/formatting
[btb/d2x.git] / main / collide.h
1 /* $Id: collide.h,v 1.2 2003-10-10 09:36:34 btb Exp $ */
2 /*
3 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
4 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
5 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
6 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
7 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
8 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
9 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
10 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
11 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
12 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
13 */
14
15 /*
16  *
17  * Header for collide.c
18  *
19  * Old Log:
20  * Revision 1.1  1995/05/16  15:55:09  allender
21  * Initial revision
22  *
23  * Revision 2.0  1995/02/27  11:28:59  john
24  * New version 2.0, which has no anonymous unions, builds with
25  * Watcom 10.0, and doesn't require parsing BITMAPS.TBL.
26  *
27  * Revision 1.23  1995/01/26  22:11:47  mike
28  * Purple chromo-blaster (ie, fusion cannon) spruce up (chromification)
29  *
30  * Revision 1.22  1994/12/21  19:03:24  rob
31  * Fixing score accounting for multiplayer robots
32  *
33  * Revision 1.21  1994/12/21  11:34:56  mike
34  * make control center take badass damage.
35  *
36  * Revision 1.20  1994/10/29  16:53:16  allender
37  * added check_effect_blowup for demo recording to record monitor explosions
38  *
39  * Revision 1.19  1994/10/09  13:46:48  mike
40  * Make public collide_player_and_powerup.
41  *
42  * Revision 1.18  1994/10/05  14:54:29  rob
43  * Added serial game support in control center sequence..
44  *
45  * Revision 1.17  1994/09/15  16:32:12  mike
46  * Prototype collide_player_and_nasty_robot.
47  *
48  * Revision 1.16  1994/09/11  15:49:04  mike
49  * Prototype for maybe_detonate_weapon.
50  *
51  * Revision 1.15  1994/09/09  14:20:07  matt
52  * Added prototype for scrape function
53  *
54  * Revision 1.14  1994/09/02  14:00:44  matt
55  * Simplified explode_object() & mutliple-stage explosions
56  *
57  * Revision 1.13  1994/08/18  10:47:35  john
58  * Cleaned up game sequencing and player death stuff
59  * in preparation for making the player explode into
60  * pieces when dead.
61  *
62  * Revision 1.12  1994/08/17  16:50:08  john
63  * Added damaging fireballs, missiles.
64  *
65  * Revision 1.11  1994/08/03  16:45:31  mike
66  * Prototype a function.
67  *
68  * Revision 1.10  1994/08/03  15:17:41  mike
69  * make matcen whack on you if it's ready to make a robot.
70  *
71  * Revision 1.9  1994/07/22  12:08:03  mike
72  * Make robot hit vclip and sound weapon-based until robot dies, then robot-based.
73  *
74  * Revision 1.8  1994/07/09  17:36:31  mike
75  * Prototype apply_damage_to_robot.
76  *
77  * Revision 1.7  1994/07/09  13:20:36  mike
78  * Prototype apply_damage_to_player.
79  *
80  * Revision 1.6  1994/06/20  23:35:52  john
81  * Bunch of stuff.
82  *
83  * Revision 1.5  1994/06/17  18:04:03  yuan
84  * Added Immaterialization...
85  * Fixed Invulnerability to allow being hit.
86  *
87  * Revision 1.4  1994/05/13  20:28:02  john
88  * Version II of John's new object code.
89  *
90  * Revision 1.3  1994/05/13  12:20:35  john
91  * Fixed some potential problems with code using global variables
92  * that are set in fvi.
93  *
94  * Revision 1.2  1994/05/12  23:20:32  john
95  * Moved all object collision handling into collide.c.
96  *
97  * Revision 1.1  1994/05/12  20:39:09  john
98  * Initial revision
99  *
100  *
101  */
102
103
104 #ifndef _COLLIDE_H
105 #define _COLLIDE_H
106
107 void collide_init();
108 void collide_two_objects(object * A, object * B, vms_vector *collision_point);
109 void collide_object_with_wall(object * A, fix hitspeed, short hitseg, short hitwall, vms_vector * hitpt);
110 extern void apply_damage_to_player(object *player, object *killer, fix damage);
111
112 // Returns 1 if robot died, else 0.
113 extern int apply_damage_to_robot(object *robot, fix damage, int killer_objnum);
114
115 extern int Immaterial;
116
117 extern void collide_player_and_weapon(object * player, object * weapon, vms_vector *collision_point);
118 extern void collide_player_and_materialization_center(object *objp);
119 extern void collide_robot_and_materialization_center(object *objp);
120
121 extern void scrape_object_on_wall(object *obj, short hitseg, short hitwall, vms_vector * hitpt);
122 extern int maybe_detonate_weapon(object *obj0p, object *obj, vms_vector *pos);
123
124 extern void collide_player_and_nasty_robot(object * player, object * robot, vms_vector *collision_point);
125
126 extern void net_destroy_controlcen(object *controlcen);
127 extern void collide_player_and_powerup(object * player, object * powerup, vms_vector *collision_point);
128 extern int check_effect_blowup(segment *seg,int side,vms_vector *pnt, object *blower, int force_blowup_flag);
129 extern void apply_damage_to_controlcen(object *controlcen, fix damage, short who);
130 extern void bump_one_object(object *obj0, vms_vector *hit_dir, fix damage);
131
132 #endif /* _COLLIDE_H */