]> icculus.org git repositories - btb/d2x.git/blob - main/vclip.h
linux fixes
[btb/d2x.git] / main / vclip.h
1 /* $Id: vclip.h,v 1.4 2003-10-10 09:36:35 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  * Stuff for video clips.
18  *
19  * Old Log:
20  * Revision 1.2  1995/09/14  14:14:45  allender
21  * return void in draw_vclip_object
22  *
23  * Revision 1.1  1995/05/16  16:04:35  allender
24  * Initial revision
25  *
26  * Revision 2.0  1995/02/27  11:32:42  john
27  * New version 2.0, which has no anonymous unions, builds with
28  * Watcom 10.0, and doesn't require parsing BITMAPS.TBL.
29  *
30  * Revision 1.33  1994/11/21  11:17:57  adam
31  * *** empty log message ***
32  *
33  * Revision 1.32  1994/10/12  13:07:07  mike
34  * Add VCLIP_POWERUP_DISAPPEARANCE.
35  *
36  * Revision 1.31  1994/10/12  10:23:54  adam
37  * *** empty log message ***
38  *
39  * Revision 1.30  1994/10/11  12:25:21  matt
40  * Added "hot rocks" that create badass explosion when hit by weapons
41  *
42  * Revision 1.29  1994/10/06  14:10:07  matt
43  * Added constant for player appearence effect
44  *
45  * Revision 1.28  1994/09/26  08:40:30  adam
46  * *** empty log message ***
47  *
48  * Revision 1.27  1994/09/10  17:30:57  mike
49  * move a prototype here, had been defined in object.c
50  *
51  * Revision 1.26  1994/09/09  20:04:25  mike
52  * Add weapon_vclip.
53  *
54  * Revision 1.25  1994/08/31  19:27:09  mike
55  * Increase max number of Vclips for new pile of weapon powerups.
56  *
57  * Revision 1.24  1994/08/14  23:14:43  matt
58  * Added animating bitmap hostages, and cleaned up vclips a bit
59  *
60  * Revision 1.23  1994/07/23  19:56:39  matt
61  * Took out unused constant
62  *
63  * Revision 1.22  1994/07/22  10:42:10  adam
64  * upped max no. of vclips
65  *
66  * Revision 1.21  1994/06/14  21:15:14  matt
67  * Made rod objects draw lighted or not depending on a parameter, so the
68  * materialization effect no longer darkens.
69  *
70  * Revision 1.20  1994/06/09  19:38:16  john
71  * Made each Vclip have its own sound... but only used in the
72  * materialization center.
73  *
74  * Revision 1.19  1994/06/09  11:46:26  john
75  * Took out unused vclip defines.
76  *
77  * Revision 1.18  1994/06/08  18:16:33  john
78  * Bunch of new stuff that basically takes constants out of the code
79  * and puts them into bitmaps.tbl.
80  *
81  * Revision 1.17  1994/06/08  12:49:01  mike
82  * Add light_value to vclip.
83  *
84  * Revision 1.16  1994/06/08  11:43:28  mike
85  * Allow 20 vclips, I think (anyway, more than it used to be, probably 12).
86  *
87  * Revision 1.15  1994/06/03  10:48:22  matt
88  * Made vclips (used by explosions) which can be either rods or blobs, as
89  * specified in BITMAPS.TBL.  (This is for the materialization center effect).
90  *
91  * Revision 1.14  1994/06/01  17:21:08  john
92  * Added muzzle flash
93  *
94  * Revision 1.13  1994/06/01  10:34:02  john
95  * Added robot morphing effect.
96  *
97  * Revision 1.12  1994/05/16  16:17:38  john
98  * Bunch of stuff on my Inferno Task list May16-23
99  *
100  * Revision 1.11  1994/05/10  18:32:50  john
101  * *** empty log message ***
102  *
103  * Revision 1.10  1994/04/29  14:35:52  matt
104  * Added second kind of fireball
105  *
106  * Revision 1.9  1994/04/11  10:36:31  yuan
107  * Started adding types for exploding hostages.
108  *
109  * Revision 1.8  1994/04/07  16:27:43  yuan
110  * Added SUPERPIG the robot with 200 hit points.
111  * Now robots can take multiple hits before blowing up.
112  *
113  * Revision 1.7  1994/04/07  13:45:58  yuan
114  * Defined Pclips... maybe shouldn't be in this file.
115  *
116  * Revision 1.6  1994/03/28  20:58:22  yuan
117  * Added blood vclip constant
118  *
119  * Revision 1.5  1994/03/15  16:31:56  yuan
120  * Cleaned up bm-loading code.
121  * (And structures)
122  *
123  * Revision 1.4  1994/03/04  17:09:43  yuan
124  * New wall stuff
125  *
126  * Revision 1.3  1994/01/11  10:59:01  yuan
127  * Added effects
128  *
129  * Revision 1.2  1994/01/06  17:13:15  john
130  * Added Video clip functionality
131  *
132  * Revision 1.1  1994/01/06  15:10:15  john
133  * Initial revision
134  *
135  *
136  */
137
138
139 #ifndef _VCLIP_H
140 #define _VCLIP_H
141
142 #include "gr.h"
143 #include "object.h"
144 #include "piggy.h"
145 #include "cfile.h"
146
147 #define VCLIP_SMALL_EXPLOSION       2
148 #define VCLIP_PLAYER_HIT            1
149 #define VCLIP_MORPHING_ROBOT        10
150 #define VCLIP_PLAYER_APPEARANCE     61
151 #define VCLIP_POWERUP_DISAPPEARANCE 62
152 #define VCLIP_VOLATILE_WALL_HIT     5
153 #define VCLIP_WATER_HIT             84
154 #define VCLIP_AFTERBURNER_BLOB      95
155 #define VCLIP_MONITOR_STATIC        99
156
157 #define VCLIP_MAXNUM                110
158 #define VCLIP_MAX_FRAMES            30
159
160 // vclip flags
161 #define VF_ROD      1       // draw as a rod, not a blob
162
163 typedef struct {
164         fix             play_time;          // total time (in seconds) of clip
165         int             num_frames;
166         fix             frame_time;         // time (in seconds) of each frame
167         int             flags;
168         short           sound_num;
169         bitmap_index    frames[VCLIP_MAX_FRAMES];
170         fix             light_value;
171 } __pack__ vclip;
172
173 extern int Num_vclips;
174 extern vclip Vclip[VCLIP_MAXNUM];
175
176 // draw an object which renders as a vclip.
177 void draw_vclip_object(object *obj, fix timeleft, int lighted, int vclip_num);
178 extern void draw_weapon_vclip(object *obj);
179
180 #ifdef FAST_FILE_IO
181 #define vclip_read_n(vc, n, fp) cfread(vc, sizeof(vclip), n, fp)
182 #else
183 /*
184  * reads n vclip structs from a CFILE
185  */
186 extern int vclip_read_n(vclip *vc, int n, CFILE *fp);
187 #endif
188
189 #endif /* _VCLIP_H */