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)