Fix crash if Num_walls=0
[btb/d2x.git] / main / vclip.h
1 /* $Id: vclip.h,v 1.5 2004-08-28 23:17:45 schaffner 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  */
20
21
22 #ifndef _VCLIP_H
23 #define _VCLIP_H
24
25 #include "gr.h"
26 #include "object.h"
27 #include "piggy.h"
28 #include "cfile.h"
29
30 #define VCLIP_SMALL_EXPLOSION       2
31 #define VCLIP_PLAYER_HIT            1
32 #define VCLIP_MORPHING_ROBOT        10
33 #define VCLIP_PLAYER_APPEARANCE     61
34 #define VCLIP_POWERUP_DISAPPEARANCE 62
35 #define VCLIP_VOLATILE_WALL_HIT     5
36 #define VCLIP_WATER_HIT             84
37 #define VCLIP_AFTERBURNER_BLOB      95
38 #define VCLIP_MONITOR_STATIC        99
39
40 #define VCLIP_MAXNUM                110
41 #define VCLIP_MAX_FRAMES            30
42
43 // vclip flags
44 #define VF_ROD      1       // draw as a rod, not a blob
45
46 typedef struct {
47         fix             play_time;          // total time (in seconds) of clip
48         int             num_frames;
49         fix             frame_time;         // time (in seconds) of each frame
50         int             flags;
51         short           sound_num;
52         bitmap_index    frames[VCLIP_MAX_FRAMES];
53         fix             light_value;
54 } __pack__ vclip;
55
56 extern int Num_vclips;
57 extern vclip Vclip[VCLIP_MAXNUM];
58
59 // draw an object which renders as a vclip.
60 void draw_vclip_object(object *obj, fix timeleft, int lighted, int vclip_num);
61 extern void draw_weapon_vclip(object *obj);
62
63 #ifdef FAST_FILE_IO
64 #define vclip_read_n(vc, n, fp) cfread(vc, sizeof(vclip), n, fp)
65 #else
66 /*
67  * reads n vclip structs from a CFILE
68  */
69 extern int vclip_read_n(vclip *vc, int n, CFILE *fp);
70 #endif
71
72 #endif /* _VCLIP_H */