FS2_Open
Open source remastering of the Freespace 2 engine
fireballs.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) Volition, Inc. 1999. All rights reserved.
3  *
4  * All source code herein is the property of Volition, Inc. You may not sell
5  * or otherwise commercially exploit the source or things you created based on the
6  * source.
7  *
8 */
9 
10 
11 
12 #ifndef _FIREBALLS_H
13 #define _FIREBALLS_H
14 
15 #include "globalincs/pstypes.h"
16 #include "model/modelrender.h"
17 
18 class object;
19 class ship_info;
20 class asteroid_info;
21 
22 // values correspond to the fireball render types
23 #define FIREBALL_MEDIUM_EXPLOSION 0
24 #define FIREBALL_LARGE_EXPLOSION 1
25 #define FIREBALL_WARP_EFFECT 2
26 
27 // these values correspond to the fireball.tbl default entries
28 #define FIREBALL_EXPLOSION_MEDIUM 0 // Used for the 4 little explosions before a ship explodes
29 #define FIREBALL_WARP 1 // Used for the warp in / warp out effect
30 #define FIREBALL_KNOSSOS 2 // Used for the KNOSSOS warp in / warp out effect
31 #define FIREBALL_ASTEROID 3
32 #define FIREBALL_EXPLOSION_LARGE1 4 // Used for the big explosion when a ship breaks into pieces
33 #define FIREBALL_EXPLOSION_LARGE2 5 // Used for the big explosion when a ship breaks into pieces
34 
35 #define MAX_FIREBALL_TYPES 32 // The maximum number of fireballs that can be defined
36 #define NUM_DEFAULT_FIREBALLS 6
37 
38 #define FIREBALL_NUM_LARGE_EXPLOSIONS 2
39 
41 extern int Num_fireball_types;
42 
43 // all this moved here by Goober5000 because it makes more sense in the H file
44 typedef struct fireball_lod {
46  int bitmap_id;
48  int fps;
49 } fireball_lod;
50 
51 typedef struct fireball_info {
52  int lod_count;
53  float exp_color[3];
56 
57 // flag values for fireball struct flags member
58 #define FBF_WARP_CLOSE_SOUND_PLAYED (1<<0)
59 #define FBF_WARP_CAPITAL_SIZE (1<<1)
60 #define FBF_WARP_CRUISER_SIZE (1<<2)
61 #define FBF_WARP_3D (1<<3) // Goober5000
62 #define FBF_WARP_VIA_SEXP (1<<4) // Goober5000
63 
64 typedef struct fireball {
65  int objnum; // If -1 this object is unused
66  int fireball_info_index; // Index into Fireball_info array
69  int orient; // For fireballs, which orientation. For warps, 0 is warpin, 1 is warpout
70  int flags; // see #define FBF_*
71  char lod; // current LOD
72  float time_elapsed; // in seconds
73  float total_time; // total lifetime of animation in seconds
74  int warp_open_sound_index; // for warp-effect - Goober5000
75  int warp_close_sound_index; // for warp-effect - Goober5000
76 } fireball;
77 // end move
78 
79 void fireball_init();
80 void fireball_render_DEPRECATED(object * obj);
81 void fireball_render(object* obj, draw_list *scene);
82 void fireball_delete( object * obj );
83 void fireball_process_post(object * obj, float frame_time);
84 
85 // reversed is for warp_in/out effects
86 // Velocity: If not NULL, the fireball will move at a constant velocity.
87 // warp_lifetime: If warp_lifetime > 0.0f then makes the explosion loop so it lasts this long. Only works for warp effect
88 int fireball_create(vec3d *pos, int fireball_type, int render_type, int parent_obj, float size, int reversed=0, vec3d *velocity=NULL, float warp_lifetime=0.0f, int ship_class=-1, matrix *orient=NULL, int low_res=0, int extra_flags=0, int warp_open_sound=-1, int warp_close_sound=-1);
90 void fireball_close();
91 
92 // Returns 1 if you can remove this fireball
93 int fireball_is_perishable(object * obj);
94 
95 // Returns 1 if this fireball is a warp
96 int fireball_is_warp(object * obj);
97 
98 // Returns life left of a fireball in seconds
99 float fireball_lifeleft( object *obj );
100 
101 // Returns life left of a fireball in percent
102 float fireball_lifeleft_percent( object *obj );
103 
104 // returns the lighting color (in [0...1] range) to use for explosion
105 void fireball_get_color(int idx, float *red, float *green, float *blue);
106 
107 // returns the index of the fireball bitmap for this ship. -1 if there is none.
109 
110 // returns the index of the fireball bitmap for this asteroid. -1 if there is none.
112 
113 // returns the intensity of a wormhole
114 float fireball_wormhole_intensity( object *obj );
115 
116 // internal function to draw warp grid.
117 extern void warpin_render(object *obj, matrix *orient, vec3d *pos, int texture_bitmap_num, float radius, float life_percent, float max_radius, int warp_3d = 0 );
118 
119 extern void warpin_queue_render(draw_list *scene, object *obj, matrix *orient, vec3d *pos, int texture_bitmap_num, float radius, float life_percent, float max_radius, int warp_3d);
120 
121 extern int Warp_model;
122 
123 // Goober5000
124 extern int Knossos_warp_ani_used;
125 
126 #endif /* _FIREBALLS_H */
#define MAX_FILENAME_LEN
Definition: pstypes.h:324
void fireball_close()
Definition: fireballs.cpp:937
int fireball_info_index
Definition: fireballs.h:66
int bitmap_id
Definition: fireballs.h:46
int objnum
Definition: fireballs.h:65
int orient
Definition: fireballs.h:69
int num_frames
Definition: fireballs.h:47
float fireball_wormhole_intensity(object *obj)
Definition: fireballs.cpp:1031
Definition: pstypes.h:88
float fireball_lifeleft_percent(object *obj)
Definition: fireballs.cpp:686
float time_elapsed
Definition: fireballs.h:72
GLclampf f
Definition: Glext.h:7097
int fireball_render_type
Definition: fireballs.h:67
hull_check orient
Definition: lua.cpp:5049
int warp_open_sound_index
Definition: fireballs.h:74
GLsizeiptr size
Definition: Glext.h:5496
#define MAX_FIREBALL_TYPES
Definition: fireballs.h:35
int flags
Definition: fireballs.h:70
char filename[MAX_FILENAME_LEN]
Definition: fireballs.h:45
int warp_close_sound_index
Definition: fireballs.h:75
int fireball_is_warp(object *obj)
Definition: fireballs.cpp:601
int Warp_model
Definition: fireballs.cpp:32
int fireball_asteroid_explosion_type(asteroid_info *aip)
Definition: fireballs.cpp:1014
GLclampf GLclampf blue
Definition: Glext.h:5177
int fireball_is_perishable(object *obj)
Definition: fireballs.cpp:540
void fireball_render(object *obj, draw_list *scene)
Definition: fireballs.cpp:1055
void warpin_render(object *obj, matrix *orient, vec3d *pos, int texture_bitmap_num, float radius, float life_percent, float max_radius, int warp_3d=0)
void warpin_queue_render(draw_list *scene, object *obj, matrix *orient, vec3d *pos, int texture_bitmap_num, float radius, float life_percent, float max_radius, int warp_3d)
void fireball_delete(object *obj)
Definition: fireballs.cpp:458
float total_time
Definition: fireballs.h:73
int Num_fireball_types
Definition: fireballs.cpp:50
int Knossos_warp_ani_used
Definition: fireballs.cpp:33
int idx
Definition: multiui.cpp:761
GLclampf green
Definition: Glext.h:5177
float exp_color[3]
Definition: fireballs.h:53
struct fireball_info fireball_info
Definition: object.h:141
int fireball_ship_explosion_type(ship_info *sip)
Definition: fireballs.cpp:993
char lod
Definition: fireballs.h:71
int fireball_used[MAX_FIREBALL_TYPES]
Definition: fireballs.cpp:47
void fireball_get_color(int idx, float *red, float *green, float *blue)
Definition: fireballs.cpp:972
float frame_time
Definition: multi.cpp:1426
int current_bitmap
Definition: fireballs.h:68
struct fireball_lod fireball_lod
hull_check pos
Definition: lua.cpp:5050
GLsizei GLsizei GLuint * obj
Definition: Glext.h:5619
float fireball_lifeleft(object *obj)
Definition: fireballs.cpp:669
void fireball_render_DEPRECATED(object *obj)
Definition: fireballs.cpp:377
void fireball_process_post(object *obj, float frame_time)
Definition: fireballs.cpp:643
void fireball_render_plane(int plane)
Definition: vecmat.h:72
GLint lod
Definition: Glext.h:7352
int fireball_create(vec3d *pos, int fireball_type, int render_type, int parent_obj, float size, int reversed=0, vec3d *velocity=NULL, float warp_lifetime=0.0f, int ship_class=-1, matrix *orient=NULL, int low_res=0, int extra_flags=0, int warp_open_sound=-1, int warp_close_sound=-1)
Definition: fireballs.cpp:788
void fireball_init()
Definition: fireballs.cpp:342
struct fireball fireball