45 #define BRIEF_CUP_X1                    400 
   46 #define BRIEF_CUP_Y1                    70 
   47 #define BRIEF_CUP_X2                    639 
   48 #define BRIEF_CUP_Y2                    245 
   49 #define BRIEF_CUPINFO_X1        445 
   50 #define BRIEF_CUPINFO_Y1        247 
   51 #define BRIEF_CUPINFO_X2        639 
   52 #define BRIEF_CUPINFO_Y2        438 
  117 #define LOOKAT_DIST     500.0f 
  118 #define STAGE_ADVANCE_DELAY     1000            // time in ms to wait after voice stops before advancing stage 
  136 static int Last_new_stage;
 
  144 static vec3d    Current_cam_pos;                
 
  145 static vec3d    Target_cam_pos;         
 
  146 static matrix   Current_cam_orient;     
 
  147 static matrix   Target_cam_orient;      
 
  148 static matrix   Start_cam_orient;               
 
  149 static vec3d    Start_cam_pos;                  
 
  150 static vec3d    Cam_vel;                                        
 
  151 static vec3d    Current_lookat_pos;     
 
  152 static vec3d    Target_lookat_pos;      
 
  153 static vec3d    Start_lookat_pos;
 
  154 static vec3d    Lookat_vel;                             
 
  156 static float    Start_cam_move;         
 
  157 static float    Total_move_time;                
 
  158 static float    Elapsed_time;
 
  160 static float    Start_dist;
 
  161 static float    End_dist;
 
  162 static float    Dist_change_rate;
 
  164 static vec3d    Acc_limit;
 
  165 static vec3d    Vel_limit;
 
  167 static float    Total_dist;
 
  168 static float    Peak_speed;
 
  169 static float    Cam_accel;
 
  170 static float    Last_dist;
 
  174 static int Brief_stage_highlight_sound_handle = -1;
 
  193 #define BRIGHTEN_LEAD   2 
  196 static int Max_briefing_line_len;
 
  198 static int Voice_started_time;
 
  199 static int Voice_ended_time;
 
  201 static int              Brief_text_wipe_snd;                                    
 
  202 static int              Play_brief_voice;
 
  205 static int              Play_highlight_flag;
 
  206 static int              Cam_target_reached;
 
  207 static int              Cam_movement_done;
 
  229 #define MAX_MOVING_ICONS        MAX_STAGE_ICONS 
  242 #define         MAX_FADING_ICONS        MAX_STAGE_ICONS 
  291                 Briefing_icon_info.clear();
 
  294                         if (Briefing_icon_info.size() >= max_icons) {
 
  318                         Briefing_icon_info.push_back(bii);
 
  324                 const size_t num_species_covered = Briefing_icon_info.size() / 
MIN_BRIEF_ICONS;
 
  325                 size_t bii_index = 0;
 
  328                         for (species = 0; species < num_species_covered; species++)
 
  335                         SCP_string errormsg = 
"The following species are missing icon info in icons.tbl:\n";
 
  337                         for (species = num_species_covered; species < 
Species_info.size(); species++)
 
  348                 mprintf((
"TABLES: Unable to parse '%s'!  Error message = %s.\n", 
"icons.tbl", e.what()));
 
  367                 Icon_movers[i].used = 0;
 
  394                                 if (Briefings[i].
stages[j].icons == NULL) {
 
  400                                 if (Briefings[i].
stages[j].lines == NULL) {
 
  456                                 if ( Briefings[i].
stages[j].icons ) {
 
  463                                 if ( Briefings[i].
stages[j].lines )
 
  466                                 if ( Briefings[i].
stages[j].icons )     {
 
  471                                 if ( Briefings[i].
stages[j].lines )     {
 
  564                                         mprintf((
"Ship '%s' is missing the wing-with-cargo briefing icon!", sip->
name));
 
  571                                         mprintf((
"Ship '%s' is missing the wing briefing icon!", sip->
name));
 
  581                                         mprintf((
"Ship '%s' is missing the ship-with-cargo briefing icon!", sip->
name));
 
  596         return &Briefing_icon_info[bii_index];
 
  663         int                     num_icons, num_stages, 
i, j;
 
  668         for ( i = 0; i < num_stages; i++ ) {
 
  670                 for ( j = 0; j < num_icons; j++ ) {
 
  691         Assert( Briefing != NULL );
 
  698         Total_move_time = 0.0f;
 
  708         Brief_text_wipe_snd = -1;
 
  714 #pragma optimize("", off) 
  726                 fi = &Fading_icons[
i];
 
  746                         bxf = screenX - w / 2.0f + 0.5f;
 
  747                         byf = screenY - h / 2.0f + 0.5f;
 
  765         float time, dist_moved=0.0f;
 
  768         if ( elapsed_time < mi->total_move_time/2.0
f ) {
 
  769                 dist_moved=0.5f*mi->
accel*elapsed_time*elapsed_time;    
 
  789         int                     icon_status[2] = {0,0};
 
  791         float                   icon_x[2], icon_y[2];
 
  794         bs = &Briefing->
stages[stage_num];
 
  801                 for(i = line_num; i < bs->
num_lines; i++)
 
  810                 for(i = line_num; i < bs->
num_lines; i++)
 
  819         for (i=0; i<2; i++) {
 
  829         if ( !icon_status[0] || !icon_status[1] ) {
 
  834         for (i=0; i<2; i++) {
 
  855 void brief_render_icon(
int stage_num, 
int icon_num, 
float frametime, 
int selected, 
float w_scale_factor, 
float h_scale_factor)
 
  861         int                     bx,
by,bc,
w,
h,icon_w,icon_h,icon_bitmap=-1;
 
  862         float                   bxf, byf, dist=0.0f;
 
  865         Assert( Briefing != NULL );
 
  871         int interp_pos_found = 0;
 
  875                 while ( mi != &Icon_move_list ) {
 
  877                         if ( ( mi->
id != 0 ) && ( mi->
id == bi->
id ) ) {
 
  881                                         if ( dist < mi->last_dist ) {
 
  897                                 interp_pos_found = 1;
 
  903         if ( !interp_pos_found )
 
  930                 if ( bi == closeup_icon || selected ) {
 
  937                 float scaled_w, scaled_h;
 
  943                 scaled_w = icon_w * w_scale_factor;
 
  944                 scaled_h = icon_h * h_scale_factor;
 
  945                 bxf = sx - scaled_w / 2.0f + 0.5f;
 
  946                 byf = sy - scaled_h / 2.0f + 0.5f;
 
  962                                 if (bi->
label[0] != 
'\0') {
 
  973                                 if ( Brief_stage_highlight_sound_handle < 0 ) {
 
 1035                 bi->
w = 
fl2i(scaled_w);
 
 1036                 bi->
h = 
fl2i(scaled_h);
 
 1042 #pragma optimize("", on) 
 1050         int i, num_icons, num_lines;
 
 1052         Assert( Briefing != NULL );
 
 1057         if ( Cam_target_reached ) {
 
 1058                 for ( i = 0; i < num_lines; i++ ) {
 
 1063         for ( i = 0; i < num_icons; i++ ) {
 
 1075         int                             x,
y,
i,anim_w,anim_h;
 
 1077         Assert( Briefing != NULL );
 
 1078         bs = &Briefing->
stages[stage_num];
 
 1091                         x = 
fl2i( 
i2fl(bi->
x) + bi->
w/2.0f - anim_w/2.0f );
 
 1092                         y = 
fl2i( 
i2fl(bi->
y) + bi->
h/2.0f - anim_h/2.0f );
 
 1128                 if ( Play_highlight_flag ) {
 
 1130                         Play_highlight_flag = 0;
 
 1147         Assert( Briefing != NULL );
 
 1149         sprintf(buf, 
XSTR( 
"Stage %d of %d", 394), stage_num + 1, stage_max);
 
 1169         Assert( 0<=instance && instance < (
int)(
sizeof(Colored_stream)/
sizeof(*Colored_stream)) );
 
 1174         int src_len = src->size();
 
 1180         if (truncate_len > src_len){
 
 1181                 truncate_len = src_len;
 
 1187         if (truncate_len < src_len) {
 
 1189                         bright_len = truncate_len;
 
 1205                 char last_color = src->at(0).color;
 
 1206                 for (
int current_pos=0; current_pos<truncate_len; current_pos++) {
 
 1209                         if (current_char.
color != last_color){
 
 1211                                 Assert(char_seq_pos < (
int)
sizeof(char_seq));
 
 1212                                 char_seq[char_seq_pos] = 0;         
 
 1222                                 last_color = current_char.
color;
 
 1224                         Assert(char_seq_pos < (
int)
sizeof(char_seq));
 
 1225                         char_seq[char_seq_pos++] = current_char.
letter;         
 
 1229                 Assert(char_seq_pos < (
int)
sizeof(char_seq));
 
 1230                 char_seq[char_seq_pos] = 0;
 
 1242                 for( 
int current_pos = truncate_len; current_pos<truncate_len + bright_len; current_pos++){             
 
 1243                         Assert(char_seq_pos < (
int)
sizeof(char_seq));
 
 1244                         char_seq[char_seq_pos++] = src->at(current_pos).letter;
 
 1246                 Assert(char_seq_pos < (
int)
sizeof(char_seq));
 
 1247                 char_seq[char_seq_pos] = 0;
 
 1284                 Play_brief_voice = 1;
 
 1291         while (yy + fh <= h) {
 
 1298                 yy += fh + line_spacing;
 
 1302                 Play_brief_voice = 0;
 
 1319         if ( pos->
xyz.y < 1 && pos->
xyz.y > -1 )
 
 1346         Assert( Briefing != NULL );
 
 1347         bs = &Briefing->
stages[stage_num];
 
 1365         float time_in_seconds;
 
 1367         time_in_seconds = time / 1000.0f;
 
 1370                 Current_cam_pos = *
pos;
 
 1371                 Current_cam_orient = *
orient;
 
 1374         Target_cam_pos = *
pos;
 
 1375         Target_cam_orient = *
orient;
 
 1376         Start_cam_orient = Current_cam_orient;
 
 1377         Start_cam_pos = Current_cam_pos;                                                                
 
 1379         Total_move_time = time_in_seconds;
 
 1380         Elapsed_time = 0.0f;
 
 1385         Play_highlight_flag = 1;                                                                
 
 1386         Cam_target_reached = 0;
 
 1387         Cam_movement_done=0;
 
 1398         vm_vec_sub(&Lookat_vel, &Target_lookat_pos, &Current_lookat_pos);
 
 1401         Start_dist = 
vm_vec_dist(&Start_cam_pos, &Start_lookat_pos);
 
 1402         End_dist = 
vm_vec_dist(&Target_cam_pos, &Target_lookat_pos);
 
 1403         Dist_change_rate = (End_dist - Start_dist) / time_in_seconds;
 
 1405         Total_dist=
vm_vec_dist(&Start_cam_pos, &Target_cam_pos);
 
 1407         Peak_speed=Total_dist/Total_move_time*2.0f;
 
 1408         Cam_accel = 4*Total_dist/(Total_move_time*Total_move_time);
 
 1413         get_camera_limits(&Start_cam_orient, &Target_cam_orient, Total_move_time, &Acc_limit, &Vel_limit);
 
 1438         return ((character >= 0) && (character <= 32)); 
 
 1458         Assert((0 <= instance) && (instance < (
int)(
sizeof(Colored_stream) / 
sizeof(*Colored_stream))));
 
 1461         char active_color_index;        
 
 1463         active_color_index = default_color_stack[color_stack_index];
 
 1465         int src_len = strlen(src);
 
 1466         for (
int i = 0; 
i < src_len; 
i++)
 
 1477                                 if (color_stack_index > 0)
 
 1479                                         color_stack_index--;
 
 1480                                         active_color_index = default_color_stack[color_stack_index];
 
 1485                         else if (src[
i] == 
'|')
 
 1487                                 active_color_index = default_color_stack[color_stack_index];
 
 1502                                                 color_stack_index++;
 
 1503                                                 default_color_stack[color_stack_index] = active_color_index;
 
 1520                         active_color_index = default_color_stack[color_stack_index];
 
 1525                 dest.
color = active_color_index;
 
 1526                 dest_line.push_back(dest);
 
 1529         Colored_stream[instance].push_back(dest_line);  
 
 1530         return dest_line.size();
 
 1545         int i, n_lines, 
len;
 
 1552         int color_stack_index = 0;
 
 1558                 default_color_stack[0] = default_color;
 
 1566         if ((max_lines > 0) && (n_lines > max_lines)) {
 
 1567                 n_lines = max_lines; 
 
 1571                 Max_briefing_line_len = 1;
 
 1572                 Colored_stream[instance].clear();
 
 1573         } 
else if (n_lines == 0 && !strcmp(src, 
"\n")) {        
 
 1576                 n_chars.push_back(0);
 
 1578         for (i=0; i<n_lines; i++) {
 
 1580                 strncpy(tmp_brief_line, p_str[i], n_chars[i]);
 
 1581                 tmp_brief_line[n_chars[
i]] = 0;
 
 1583                 len = 
brief_text_colorize(&tmp_brief_line[0], instance, default_color_stack, color_stack_index);
 
 1584                 if (len > Max_briefing_line_len)
 
 1585                         Max_briefing_line_len = 
len;
 
 1589         Play_brief_voice = 0;
 
 1609                 if ( Icon_movers[i].used == 0 )
 
 1613         if ( i == MAX_MOVING_ICONS ) 
 
 1616         Icon_movers[
i].
used = 1;
 
 1631         int                             i,j,k,num_movers,is_gone=0;
 
 1634         Assert(new_stage != current_stage);
 
 1636         Assert( Briefing != NULL );
 
 1637         newb = &Briefing->
stages[new_stage];
 
 1638         cb = &Briefing->
stages[current_stage];
 
 1643                 for ( j = 0; j < newb->
num_icons; j++ ) {
 
 1650                                                 Warning(
LOCATION, 
"Too many briefing icons are moving simultaneously!");
 
 1653                                         imi = &Icon_movers[k];
 
 1738         int num_movers, new_time, not_objv = 1;
 
 1740         Assert( Briefing != NULL );
 
 1748         if ( stage_num == Last_new_stage ) {
 
 1755         if ( (Last_new_stage != -1) && not_objv ) {
 
 1759         if ( (Last_new_stage != -1) && (num_movers == 0) && not_objv ) {
 
 1768                 msg = Briefing->
stages[stage_num].
text.c_str();
 
 1770                 msg = 
XSTR( 
"Please review your objectives for this mission.", 395);
 
 1788                 snd_stop(Brief_stage_highlight_sound_handle);
 
 1791         Voice_started_time = 0;
 
 1792         Voice_ended_time = 0;
 
 1794         Brief_stage_highlight_sound_handle = -1;
 
 1795         Last_new_stage = stage_num;
 
 1830         time0 = elapsed_time / total_time;
 
 1831         time1 = (total_time - elapsed_time) / total_time;
 
 1847         float time, dist_moved=0.0f;
 
 1850         if ( elapsed_time < Total_move_time/2.0
f ) {
 
 1851                 dist_moved=0.5f*Cam_accel*elapsed_time*elapsed_time;    
 
 1856         time=elapsed_time - Total_move_time/2.0f;
 
 1857         dist_moved=(Total_dist/2.0f)+(Peak_speed*time) - 0.5f*Cam_accel*time*time;
 
 1872         Elapsed_time += frametime;
 
 1874         if ( Cam_target_reached )
 
 1878         if ( (Elapsed_time < Total_move_time) ) {
 
 1879                 vm_matrix_interpolate(&Target_cam_orient, &Current_cam_orient, &W_init, frametime, &result, &w_out, &Vel_limit, &Acc_limit);
 
 1880                 Current_cam_orient = 
result;
 
 1885         if ( 
vm_vec_cmp( &Current_cam_pos, &Target_cam_pos ) ) {
 
 1887                 if ( dist < Last_dist ) {
 
 1888                         Cam_movement_done=1;
 
 1893                 if ( Cam_movement_done == 0 ) {
 
 1895                         vm_vec_add(&Current_cam_pos, &Start_cam_pos, &dist_moved);
 
 1897                         Current_cam_pos=Target_cam_pos;
 
 1901                 Cam_movement_done=1;
 
 1902                 Current_cam_pos=Target_cam_pos;
 
 1905         if ( Cam_movement_done && (Elapsed_time >= Total_move_time) ) {
 
 1906                 Cam_target_reached=1;
 
 1919         float   dist_to_plane;
 
 1920         float   square_size, ux, uy, uz;
 
 1931         while (dist_to_plane >= 25.0
f)
 
 1933                 square_size *= 10.0f;
 
 1934                 dist_to_plane /= 10.0f;
 
 1950         roundoff = (
int) square_size * 10;
 
 1992         int     i, ncols2, nrows2, d = 1;
 
 1993         vec3d   dfvec, drvec, cur, cur2, tvec, uvec, save, save2;
 
 1995         Assert(square_size > 0.0);
 
 2036         gridp->
ncols = ncols;
 
 2037         gridp->
nrows = nrows;
 
 2044         for (i=0; i<=ncols*d; i++) {
 
 2051         for (i=0; i<=ncols2; i++) {
 
 2060         for (i=0; i<=nrows*d; i++) {
 
 2067         for (i=0; i<=nrows2; i++) {
 
 2084         vec3d   fvec, rvec, cvec;
 
 2117         int     i, ncols, nrows;
 
 2119         ncols = gridp->
ncols;
 
 2120         nrows = gridp->
nrows;
 
 2130         for (i=0; i<=ncols; i++)
 
 2134         for (i=0; i<=nrows; i++)
 
 2148                 if (ii->regular.first_frame >= 0)
 
 2151                         ii->regular.first_frame = -1;
 
 2154                 if (ii->fade.first_frame >= 0)
 
 2157                         ii->fade.first_frame = -1;
 
 2160                 if (ii->highlight.first_frame >= 0)
 
 2163                         ii->highlight.first_frame = -1;
 
 2175         Voice_started_time = 0;
 
 2176         Voice_ended_time = 0;
 
 2193         int load_attempts = 0;
 
 2196                 if ( load_attempts++ > 5 ) {
 
 2220         Assert( Briefing != NULL );
 
 2221         for ( i = 0; i < Briefing->
num_stages; i++ ) {
 
 2249         if (!Voice_started_time) {
 
 2251                 Voice_ended_time = 0;
 
 2312         Last_new_stage = -1;
 
 2351                 Cmd_briefs[i].num_stages = 0;
 
 2380                 if (!Voice_ended_time) {
 
 2393                 if (!Voice_ended_time) {
 
 2401         if (!Voice_ended_time)
 
void brief_render_icon_line(int stage_num, int line_num)
 
SCP_vector< briefing_line > briefing_stream
 
int brief_text_colorize(char *src, int instance, char default_color_stack[], int &color_stack_index)
 
struct screen3d::@234::@236 xyw
 
void lcl_translate_brief_icon_name_gr(char *name)
 
int Briefing_voice_enabled
 
#define GR_RESIZE_MENU_NO_OFFSET
 
void brief_unload_anims()
 
#define MAX_BRIEF_LINE_LEN
 
float Briefing_window_FOV
 
int Num_brief_text_lines[MAX_TEXT_STREAMS]
 
float vm_vec_mag_quick(const vec3d *v)
 
#define ICON_FIGHTER_PLAYER
 
GLfloat GLfloat GLfloat GLfloat h
 
void vm_vec_scale_add(vec3d *dest, const vec3d *src1, const vec3d *src2, float k)
 
color * iff_get_color_by_team(int team, int seen_from_team, int is_bright)
 
int bii_index_ship_with_cargo
 
char * Brief_static_name[GR_NUM_RESOLUTIONS]
 
SCP_string recommendation_text
 
void brief_start_highlight_anims(int stage_num)
 
int brief_text_wipe_finished()
 
bool brief_verify_color_tag(char color_tag)
 
const float BRIEF_TEXT_WIPE_TIME
 
spinning highlight in briefing 
 
int iff_get_alpha_value(bool is_bright)
 
int brief_color_text_init(const char *src, int w, const char default_color, int instance, int max_lines, const bool append)
 
void brief_voice_unpause(int stage_num)
 
int hud_anim_render(hud_anim *ha, float frametime, int draw_alpha, int loop, int hold_last, int reverse, int resize_mode, bool mirror)
Render out a frame of the targetbox static animation, based on how much time has elapsed. 
 
brief_stage stages[MAX_BRIEF_STAGES]
 
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
 
void brief_maybe_create_new_grid(grid *gridp, vec3d *pos, matrix *orient, int force=0)
 
#define GR_NUM_RESOLUTIONS
 
void brief_set_text_color(char color_tag)
 
void gr_init_alphacolor(color *clr, int r, int g, int b, int alpha, int type)
 
__inline void gr_string(int x, int y, const char *string, int resize_mode=GR_RESIZE_FULL)
 
int Brief_voices[MAX_BRIEF_STAGES]
 
#define list_append(head, elem)
 
void brief_common_close()
 
color Brief_color_legacy_neutral
 
void brief_rpd_line(vec3d *v0, vec3d *v1)
 
#define STAGE_ADVANCE_DELAY
 
int bm_get_info(int handle, int *w, int *h, ubyte *flags, int *nframes, int *fps)
Gets info on the bitmap indexed by handle. 
 
struct vec3d::@225::@227 xyz
 
#define ICON_BOMBER_PLAYER
 
char default_briefing_color
 
icon_move_info Icon_movers[MAX_MOVING_ICONS]
 
briefing_icon_info * brief_get_icon_info(brief_icon *bi)
 
int snd_is_playing(int sig)
 
void vm_vec_scale_add2(vec3d *dest, const vec3d *src, float k)
 
void gr_set_color_fast(color *dst)
 
int g3_draw_line(vertex *p0, vertex *p1)
 
std::basic_string< char, std::char_traits< char >, std::allocator< char > > SCP_string
 
cmd_brief Cmd_briefs[MAX_TVT_TEAMS]
 
int Brief_text_coords[GR_NUM_RESOLUTIONS][4]
 
void gr_set_bitmap(int bitmap_num, int alphablend_mode, int bitblt_mode, float alpha)
 
briefing Briefings[MAX_TVT_TEAMS]
 
void anim_release_all_instances(int screen_id)
Free all anim instances that are on the anim_render_list. 
 
int required_string_either(char *str1, char *str2)
Checks for one of two required strings. 
 
GLenum GLuint GLenum GLsizei const GLchar * buf
 
int double_fine_gridlines
 
void brief_set_icon_color(int team)
 
int camera_pos_past_target(vec3d *start, vec3d *current, vec3d *dest)
 
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 IS_VEC_NULL_SQ_SAFE(v)
 
#define ON_BRIEFING_SELECT
 
void gr_set_color(int r, int g, int b)
 
int audiostream_is_playing(int i)
 
#define MAX_GRIDLINE_POINTS
 
void mission_debrief_common_reset()
 
__inline void gr_set_clip(int x, int y, int w, int h, int resize_mode=GR_RESIZE_FULL)
 
int vm_matrix_cmp(const matrix *a, const matrix *b)
 
player Players[MAX_PLAYERS]
 
#define MAX_BRIEF_LINE_W_640
 
void brief_restart_text_wipe()
 
void brief_clear_fade_out_icons()
 
typedef int(SCP_EXT_CALLCONV *SCPDLL_PFVERSION)(SCPDLL_Version *)
 
struct icon_fade_info fade_icon
 
int Brief_text_max_lines[GR_NUM_RESOLUTIONS]
 
matrix * vm_vector_2_matrix(matrix *m, const vec3d *fvec, const vec3d *uvec, const vec3d *rvec)
 
void vm_vec_add2(vec3d *dest, const vec3d *src)
 
void brief_render_icon(int stage_num, int icon_num, float frametime, int selected, float w_scale_factor, float h_scale_factor)
 
char voice[MAX_FILENAME_LEN]
 
struct matrix::@228::@230 vec
 
int bii_index_wing_with_cargo
 
void vm_vec_scale(vec3d *dest, float s)
 
struct icon_move_info icon_move_info
 
int brief_time_to_advance(int stage_num)
 
void brief_modify_grid(grid *gridp)
 
void audiostream_stop(int i, int rewind, int paused)
 
int Brief_static_coords[GR_NUM_RESOLUTIONS][2]
 
void brief_load_voice_file(int voice_num, char *name)
 
void brief_init_screen(int multiplayer_flag)
 
SCP_vector< briefing_icon_info > Briefing_icon_info
 
int Brief_grid_coords[GR_NUM_RESOLUTIONS][4]
 
void g3_set_view_matrix(const vec3d *view_pos, const matrix *view_matrix, float zoom)
 
int Brief_bmap_coords[GR_NUM_RESOLUTIONS][2]
 
void brief_voice_play(int stage_num)
 
#define strnicmp(s1, s2, n)
 
icon_move_info Icon_move_list
 
void brief_reset_icons(int stage_num)
 
void stuff_string(char *outstr, int type, int len, char *terminators)
 
void _cdecl gr_printf(int x, int y, const char *format,...)
 
vec3d gpoints4[MAX_GRIDLINE_POINTS]
 
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
 
vec3d gpoints7[MAX_GRIDLINE_POINTS]
 
int Brief_stage_text_coords[GR_NUM_RESOLUTIONS][2]
 
void brief_camera_move(float frametime, int stage_num)
 
ubyte g3_rotate_vertex(vertex *dest, const vec3d *src)
 
void physics_init(physics_info *pi)
 
int required_string(const char *pstr)
 
float brief_camera_get_dist_moved(float elapsed_time)
 
int snd_play(game_snd *gs, float pan, float vol_scale, int priority, bool is_voice_msg)
 
vec3d gpoints5[MAX_GRIDLINE_POINTS]
 
float vm_vec_dist(const vec3d *v0, const vec3d *v1)
 
int split_str(const char *src, int max_pixel_w, int *n_chars, const char **p_str, int max_lines, char ignore_char)
 
void brief_render_grid(grid *gridp)
 
float Brief_text_wipe_time_elapsed
 
float vm_dist_to_plane(const vec3d *checkp, const vec3d *norm, const vec3d *planep)
 
char Mission_filename[80]
 
icon_fade_info Fading_icons[MAX_FADING_ICONS]
 
void read_file_text(const char *filename, int mode, char *processed_text, char *raw_text)
 
void fsspeech_play(int type, const char *text)
 
void brief_render_elements(vec3d *pos, grid *gridp)
 
void anim_render_all(int screen_id, float frametime)
Display the frames for the currently playing anims. 
 
cmd_brief_stage stage[CMD_BRIEF_STAGES_MAX]
 
int g3_project_vertex(vertex *point)
 
void brief_set_new_stage(vec3d *pos, matrix *orient, int time, int stage_num)
 
void audiostream_unpause(int i, bool via_sexp_or_script)
 
float fl_roundoff(float x, int multiple)
Rounds off a floating point number to a multiple of some number. 
 
void brief_voice_pause(int stage_num)
 
GLint GLint GLint GLint GLint x
 
vec3d gpoints6[MAX_GRIDLINE_POINTS]
 
SCP_vector< game_snd > Snds_iface
 
const char BRIEF_META_CHAR
 
const char * XSTR(const char *str, int index)
 
#define vm_vec_make(v, _x, _y, _z)
 
vec3d gpoints2[MAX_GRIDLINE_POINTS]
 
void brief_blit_stage_num(int stage_num, int stage_max)
 
void mission_brief_common_init()
 
void brief_preload_icon_anim(brief_icon *bi)
 
void vm_vec_copy_scale(vec3d *dest, const vec3d *src, float s)
 
void _cdecl void void _cdecl Error(const char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
 
void brief_reset_last_new_stage()
 
grid * brief_create_grid(grid *gridp, vec3d *forward, vec3d *right, vec3d *center, int nrows, int ncols, float square_size)
 
void brief_common_get_icon_dimensions(int *w, int *h, brief_icon *bi)
 
void brief_preload_fade_anim(brief_icon *bi)
 
vec3d gpoints1[MAX_GRIDLINE_POINTS]
 
void reset_parse(char *text)
 
void hud_anim_init(hud_anim *ha, int sx, int sy, const char *filename)
Initialise the members of the hud_anim struct to default values. 
 
GLuint const GLchar * name
 
__inline void gr_line(int x1, int y1, int x2, int y2, int resize_mode=GR_RESIZE_FULL)
 
void vm_vec_sub(vec3d *dest, const vec3d *src0, const vec3d *src1)
 
void brief_set_camera_target(vec3d *pos, matrix *orient, int time)
 
void audiostream_close_file(int i, int fade)
 
debrief_stage stages[MAX_DEBRIEF_STAGES]
 
bool fsspeech_play_from(int type)
 
void interpolate_matrix(matrix *result, matrix *goal, matrix *start, float elapsed_time, float total_time)
 
SCP_vector< colored_char > briefing_line
 
#define MAX_BRIEF_STAGE_LINES
 
brief_icon * brief_get_closeup_icon()
 
SCP_vector< char > Color_Tags
 
void brief_render_line(int line_num, int x, int y, int instance)
 
GLubyte GLubyte GLubyte GLubyte w
 
void vm_matrix_interpolate(const matrix *goal_orient, const matrix *curr_orient, const vec3d *w_in, float delta_t, matrix *next_orient, vec3d *w_out, const vec3d *vel_limit, const vec3d *acc_limit, int no_overshoot)
 
color Color_briefing_grid
 
void brief_preload_anims()
 
void gr_get_string_size(int *w, int *h, const char *text, int len=9999)
 
void generic_anim_init(generic_anim *ga)
 
void brief_move_icon_reset()
 
grid * brief_create_default_grid(void)
 
#define BI_USE_CARGO_ICON
 
#define MAX_BRIEF_LINE_W_1024
 
float vm_vec_copy_normalize(vec3d *dest, const vec3d *src)
 
bool is_a_word_separator(char character)
 
void brief_grid_read_camera_controls(control_info *ci, float frametime)
 
SCP_vector< ship_info > Ship_info
 
__inline void gr_aabitmap(int x, int y, int resize_mode=GR_RESIZE_FULL, bool mirror=false)
 
int hud_anim_load(hud_anim *ha)
Load a hud_anim. 
 
SCP_vector< species_info > Species_info
 
int vm_vec_cmp(const vec3d *a, const vec3d *b)
 
struct colored_char colored_char
 
void audiostream_play(int i, float volume, int looping)
 
void lcl_translate_brief_icon_name_pl(char *name)
 
void drop_leading_white_space(char *str)
 
debriefing Debriefings[MAX_TVT_TEAMS]
 
int brief_render_text(int line_offset, int x, int y, int h, float frametime, int instance, int line_spacing)
 
int Brief_stage_text_coords_multi[GR_NUM_RESOLUTIONS][2]
 
cmd_brief * Cur_cmd_brief
 
int brief_get_free_move_icon()
 
void brief_preload_highlight_anim(brief_icon *bi)
 
char filename[MAX_FILENAME_LEN]
 
void brief_voice_load_all()
 
int audiostream_open(const char *filename, int type)
 
void brief_render_map(int stage_num, float frametime)
 
int brief_set_move_list(int new_stage, int current_stage, float time)
 
bool gr_unsize_screen_posf(float *x, float *y, float *w, float *h, int resize_mode)
 
vec3d gpoints3[MAX_GRIDLINE_POINTS]
 
float fvi_ray_plane(vec3d *new_pnt, const vec3d *plane_pnt, const vec3d *plane_norm, const vec3d *ray_origin, const vec3d *ray_direction, float rad)
 
int is_white_space(char ch)
 
int bm_unload(int handle, int clear_render_targets, bool nodebug)
Unloads a bitmap's data, but not the bitmap info. 
 
char filename[MAX_FILENAME_LEN]
 
void compute_point_on_plane(vec3d *q, const plane *planep, const vec3d *p)
 
void audiostream_pause(int i, bool via_sexp_or_script)
 
vec3d * vm_vec_cross(vec3d *dest, const vec3d *src0, const vec3d *src1)
 
vec3d gpoints8[MAX_GRIDLINE_POINTS]
 
void brief_parse_icon_tbl()
 
const int HIGHEST_COLOR_STACK_INDEX
 
void gamesnd_play_iface(int n)
 
void brief_voice_unload_all()
 
void mission_brief_common_reset()
 
char label[MAX_LABEL_LEN]
 
SCP_map< char, color * > Tagged_Colors
 
int timer_get_milliseconds()
 
void _cdecl gr_printf_menu(int x, int y, const char *format,...)
 
void vm_vec_add(vec3d *dest, const vec3d *src0, const vec3d *src1)
 
float Master_voice_volume
 
int skip_to_start_of_string(char *pstr, char *end)
 
float brief_icon_get_dist_moved(icon_move_info *mi, float elapsed_time)
 
int Debrief_multi_stages_loaded
 
void brief_voice_stop(int stage_num)
 
#define MAX_DEBRIEF_STAGES
 
#define g3_start_frame(zbuffer_flag)
 
float vm_vec_normalize(vec3d *v)
 
void get_camera_limits(const matrix *start_camera, const matrix *end_camera, float time, vec3d *acc_max, vec3d *w_max)
 
void brief_render_icons(int stage_num, float frametime)
 
void brief_render_fade_outs(float frametime)