35 #define WARPHOLE_GROW_TIME              (2.35f) // time for warphole to reach max size (also time to shrink to nothing once it begins to shrink) 
   37 #define MAX_FIREBALL_LOD                                                4 
   39 #define MAX_FIREBALLS   200 
   41 #define MAX_WARP_LOD    0 
   57 #define FB_INDEX(fb)    (fb-Fireballs) 
   65         float           range_multiplier = 1.0f;
 
   66         object  *fireball_objp; 
 
   69         if((fb == NULL) || (fb->
objnum < 0)){
 
   78         } 
else if ((ship_class >= 0) && (ship_class < static_cast<int>(
Ship_info.size()))) {
 
   83                         range_multiplier = 6.0f;
 
   98         object *fireball_objp;
 
  118 static void fireball_set_default_color(
int idx)
 
  233                                 memset(&fb_color, 0, 
sizeof(
color));
 
  237                         LOD_checker.push_back(lod_check);
 
  238                         LOD_color.push_back(fb_color);
 
  245                 mprintf((
"TABLES: Unable to parse '%s'!  Error message = %s.\n", filename, e.what()));
 
  265         for (lod = LOD_checker.begin(); lod != LOD_checker.end(); ++
lod) {
 
  266                 if ( (i < MAX_FIREBALL_TYPES) && (lod->override < 0) ) {
 
  271                         if (LOD_color[i].
alpha == 255) {
 
  272                                 Fireball_info[
i].
exp_color[0] = (LOD_color[
i].red / 255.0f);
 
  273                                 Fireball_info[
i].
exp_color[1] = (LOD_color[
i].green / 255.0f);
 
  274                                 Fireball_info[
i].
exp_color[2] = (LOD_color[
i].blue / 255.0f);
 
  276                                 fireball_set_default_color(i);
 
  285         for (lod = LOD_checker.begin(); lod != LOD_checker.end(); ++
lod) {
 
  289                         Fireball_info[lod->override].
lod_count = lod->num_lods;
 
  291                         if (LOD_color[i].
alpha == 255) {
 
  292                                 Fireball_info[lod->override].
exp_color[0] = (LOD_color[
i].red / 255.0f);
 
  293                                 Fireball_info[lod->override].
exp_color[1] = (LOD_color[
i].green / 255.0f);
 
  294                                 Fireball_info[lod->override].
exp_color[2] = (LOD_color[
i].blue / 255.0f);
 
  296                                 fireball_set_default_color(lod->override);
 
  303                 for (j = 1; j < Fireball_info[
i].
lod_count; j++) {
 
  304                         sprintf( Fireball_info[i].lod[j].
filename, 
"%s_%d", Fireball_info[i].lod[0].filename, j);
 
  319                 fd = &Fireball_info[
i];
 
  363         mprintf((
"Loading warp model\n"));
 
  385         memset(&p, 0, 
sizeof(p));
 
  388         fb = &Fireballs[
num];
 
  390         if ( Fireballs[num].current_bitmap < 0 )
 
  408                                 Fireballs[num].current_bitmap, 
 
  419                                 Fireballs[num].current_bitmap, 
 
  464         fb = &Fireballs[
num];
 
  496         fb = &Fireballs[
num];
 
  502                 fl = &Fireball_info[Fireballs[
num].fireball_info_index].
lod[fb->
lod];
 
  514                 if ( framenum < 0 ) framenum = 0;
 
  535                 if ( framenum < 0 ) framenum = 0;
 
  548         Assert( Fireballs[num].objnum == objnum );
 
  550         fb = &Fireballs[
num];
 
  576         int             oldest_objnum = -1, oldest_slotnum = -1;
 
  577         float           lifeleft, oldest_lifeleft = 0.0f;
 
  586                         if ( (oldest_objnum < 0) || (lifeleft < oldest_lifeleft) )      {
 
  588                                 oldest_lifeleft = lifeleft;
 
  589                                 oldest_objnum = fb->
objnum;
 
  595         if ( oldest_objnum > -1 )       {
 
  598         return oldest_slotnum;
 
  608         Assert( Fireballs[num].objnum == objnum );
 
  610         fb = &Fireballs[
num];
 
  652         Assert( Fireballs[num].objnum == objnum );
 
  654         fb = &Fireballs[
num];
 
  676         Assert( Fireballs[num].objnum == objnum );
 
  678         fb = &Fireballs[
num];
 
  693         Assert( Fireballs[num].objnum == objnum );
 
  695         fb = &Fireballs[
num];
 
  708         int x, 
y, 
w, 
h, bm_size;
 
  750                         } 
else if(w <= bm_size/2){
 
  752                         } 
else if(w <= (1.56*bm_size)){
 
  761                         } 
else if(w <= bm_size/3){
 
  763                         } 
else if(w <= (1.2*bm_size)){
 
  788 int fireball_create( 
vec3d * 
pos, 
int fireball_type, 
int render_type, 
int parent_obj, 
float size, 
int reverse, 
vec3d *velocity, 
float warp_lifetime, 
int ship_class, 
matrix *orient_override, 
int low_res, 
int extra_flags, 
int warp_open_sound, 
int warp_close_sound)
 
  790         int                             n, objnum, fb_lod;
 
  796         Assert( fireball_type > -1 );
 
  799         fd = &Fireball_info[fireball_type];
 
  820                         if ( Fireballs[n].objnum < 0  ) {
 
  824                 Assert( n != MAX_FIREBALLS );
 
  842         fl = &fd->
lod[fb_lod];
 
  844         fb->
lod = (char)fb_lod;
 
  846         fb->
flags = extra_flags;
 
  851         if(orient_override != NULL){
 
  852                 orient = *orient_override;
 
  854                 if ( parent_obj < 0 )   {
 
  907                 Assert( warp_lifetime >= 4.0
f );                
 
  908                 if ( warp_lifetime < 4.0
f )
 
  909                         warp_lifetime = 4.0f;
 
  952                         fd = &Fireball_info[
i];
 
  974         Assert( red && blue && green );
 
  999         int objecttype_fireballs = -1;
 
 1005         if(ship_fireballs > 0){
 
 1007         } 
else if(objecttype_fireballs > 0){
 
 1024         if (roid_fireballs > 0) {
 
 1038         Assertion( Fireballs[num].objnum == objnum, 
"Basic sanity check. Fireballs[num].objnum (%d) should == objnum (%d)", Fireballs[num].objnum, objnum );
 
 1040         fb = &Fireballs[
num];
 
 1064         fb = &Fireballs[
num];
 
 1066         if ( Fireballs[num].current_bitmap < 0 )
 
 1079                                 Fireballs[num].current_bitmap, 
 
 1091                                 Fireballs[num].current_bitmap, 
 
#define FIREBALL_EXPLOSION_LARGE2
 
#define TMAP_FLAG_SOFT_QUAD
 
GLfloat GLfloat GLfloat GLfloat h
 
void vm_vec_scale_add(vec3d *dest, const vec3d *src1, const vec3d *src2, float k)
 
#define MISSION_FLAG_FULLNEB
 
int fireball_asteroid_explosion_type(asteroid_info *aip)
 
#define DETAIL_FLAG_FIREBALLS
 
SCP_vector< lod_checker > LOD_checker
 
warp hole opening up for departing (Same as warp in for now) 
 
SCP_vector< game_snd > Snds
 
float vm_vec_mag(const vec3d *v)
 
#define FIREBALL_LARGE_EXPLOSION
 
ubyte g3_transfer_vertex(vertex *dest, const vec3d *src)
 
void fireball_parse_tbl()
 
float side_slip_time_const
 
char filename[MAX_FILENAME_LEN]
 
#define TMAP_HTL_3D_UNLIT
 
#define Assertion(expr, msg,...)                                                                        
 
int fireball_used[MAX_FIREBALL_TYPES]
 
void fireball_play_warphole_close_sound(fireball *fb)
 
int Knossos_warp_ani_used
 
#define FIREBALL_EXPLOSION_LARGE1
 
int batch_add_bitmap_rotated(int texture, int tmap_flags, vertex *pnt, float angle, float rad, float alpha, float depth)
 
int warp_open_sound_index
 
void fireball_set_framenum(int num)
 
int required_string_either(char *str1, char *str2)
Checks for one of two required strings. 
 
#define MAX_FIREBALL_TYPES
 
char filename[MAX_FILENAME_LEN]
 
int warp_close_sound_index
 
int bm_load_animation(const char *real_filename, int *nframes, int *fps, int *keyframe, int can_drop_frames, int dir_type)
Loads a bitmap sequance so we can draw with it. 
 
#define CLAMP(x, min, max)
 
#define SND_PRIORITY_DOUBLE_INSTANCE
 
typedef int(SCP_EXT_CALLCONV *SCPDLL_PFVERSION)(SCPDLL_Version *)
 
int fireball_is_warp(object *obj)
 
#define FIREBALL_MEDIUM_EXPLOSION
 
GLdouble GLdouble GLdouble r
 
#define NUM_DEFAULT_FIREBALLS
 
struct matrix::@228::@230 vec
 
void vm_vec_scale(vec3d *dest, float s)
 
int fireball_ship_explosion_type(ship_info *sip)
 
int cf_exists_full(const char *filename, int dir_type)
 
int obj_create(ubyte type, int parent_obj, int instance, matrix *orient, vec3d *pos, float radius, uint flags)
 
void fireball_get_color(int idx, float *red, float *green, float *blue)
 
void g3_set_view_matrix(const vec3d *view_pos, const matrix *view_matrix, float zoom)
 
int snd_play_3d(game_snd *gs, vec3d *source_pos, vec3d *listen_pos, float radius, vec3d *source_vel, int looping, float vol_scale, int priority, vec3d *sound_fvec, float range_factor, int force, bool is_ambient)
 
void stuff_string(char *outstr, int type, int len, char *terminators)
 
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
 
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)
 
ubyte g3_rotate_vertex(vertex *dest, const vec3d *src)
 
int required_string(const char *pstr)
 
int optional_string(const char *pstr)
 
float fireball_lifeleft(object *obj)
 
#define MONITOR(function_name)
 
float fireball_lifeleft_percent(object *obj)
 
int model_load(char *filename, int n_subsystems, model_subsystem *subsystems, int ferror=1, int duplicate=0)
 
void read_file_text(const char *filename, int mode, char *processed_text, char *raw_text)
 
bool Parsing_modular_table
 
warp hole opening up for arriving 
 
GLint GLint GLint GLint GLint x
 
object Objects[MAX_OBJECTS]
 
#define MONITOR_INC(function_name, inc)
 
int fireball_is_perishable(object *obj)
 
void fireball_play_warphole_open_sound(int ship_class, fireball *fb)
 
int g3_get_bitmap_dims(int bitmap, vertex *pos, float radius, int *x, int *y, int *w, int *h, int *size)
 
void fireball_load_data()
 
#define WARPHOLE_GROW_TIME
 
void _cdecl void void _cdecl Error(const char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
 
void fireball_render(object *obj, draw_list *scene)
 
typedef void(APIENTRY *PFNGLARRAYELEMENTEXTPROC)(GLint i)
 
void reset_parse(char *text)
 
int bm_load(const char *real_filename)
Loads a bitmap so we can draw with it later. 
 
GLboolean GLboolean GLboolean b
 
__inline void gr_fog_set(int fog_mode, int r, int g, int b, float fog_near=-1.0f, float fog_far=-1.0f)
 
typedef float(SCP_EXT_CALLCONV *SCPTRACKIR_PFFLOATVOID)()
 
void obj_delete(int objnum)
 
float vm_vec_dist_quick(const vec3d *v0, const vec3d *v1)
 
void fireball_delete(object *obj)
 
SCP_vector< int > explosion_bitmap_anims
 
void fireball_maybe_play_warp_close_sound(fireball *fb)
 
void bm_page_in_texture(int bitmapnum, int nframes)
Marks a texture as being used for this level. 
 
int batch_add_bitmap(int texture, int tmap_flags, vertex *pnt, int orient, float rad, float alpha, float depth)
 
void parse_fireball_tbl(const char *filename)
 
fireball Fireballs[MAX_FIREBALLS]
 
#define FBF_WARP_CLOSE_SOUND_PLAYED
 
#define FBF_WARP_CRUISER_SIZE
 
capital warp hole closing 
 
SCP_vector< ship_info > Ship_info
 
#define TMAP_FLAG_TEXTURED
 
float fireball_wormhole_intensity(object *obj)
 
#define OF_SHOULD_BE_DEAD
 
void fireball_render_DEPRECATED(object *obj)
 
GLsizei GLsizei GLuint * obj
 
fireball_info Fireball_info[MAX_FIREBALL_TYPES]
 
int parse_modular_table(const char *name_check, void(*parse_callback)(const char *filename), int path_type, int sort_type)
 
void fireball_delete_all()
 
capital warp hole opening 
 
#define FBF_WARP_CAPITAL_SIZE
 
#define FIREBALL_ASTEROID
 
SCP_vector< int > explosion_bitmap_anims
 
#define FIREBALL_EXPLOSION_MEDIUM
 
#define FIREBALL_WARP_EFFECT
 
GLclampf GLclampf GLclampf alpha
 
int fireball_get_lod(vec3d *pos, fireball_info *fd, float size)
 
void gr_init_color(color *c, int r, int g, int b)
 
matrix vmd_identity_matrix
 
void fireball_process_post(object *obj, float frame_time)
 
SCP_vector< ship_type_info > Ship_types
 
#define g3_start_frame(zbuffer_flag)
 
int fireball_create(vec3d *pos, int fireball_type, int render_type, int parent_obj, float size, int reverse, vec3d *velocity, float warp_lifetime, int ship_class, matrix *orient_override, int low_res, int extra_flags, int warp_open_sound, int warp_close_sound)