28 #define HUD_WINGMAN_STATUS_NUM_FRAMES 5
29 #define BACKGROUND_LEFT 0
30 #define BACKGROUND_MIDDLE 1
31 #define BACKGROUND_RIGHT 2
32 #define WINGMAN_STATUS_DOTS 3
33 #define WINGMAN_STATUS_NAMES 4
35 #define HUD_WINGMAN_STATUS_NONE 0 // wingman doesn't exist
36 #define HUD_WINGMAN_STATUS_DEAD 1 // wingman has died
37 #define HUD_WINGMAN_STATUS_ALIVE 2 // wingman is in the mission
38 #define HUD_WINGMAN_STATUS_NOT_HERE 3 // wingman hasn't arrived, or has departed
50 #define HUD_WINGMAN_UPDATE_STATUS_INTERVAL 200
51 static int HUD_wingman_update_timer;
55 static int HUD_wingman_flash_is_bright;
93 HUD_wingman_status[wing_index].
used = used;
143 if ( wing_index == -1 )
146 HUD_wingman_status[wing_index].
ignore = 1;
160 HUD_wingman_status[
i].
ignore = 0;
161 HUD_wingman_status[
i].
used = 0;
176 int wing_index,wing_pos;
192 HUD_wingman_status[wing_index].
used = 1;
197 if ( HUD_wingman_status[wing_index].hull[wing_pos] <= 0 ) {
325 int sx, sy, header_x, header_y,
bitmap;
327 if((num_wings_to_draw < 1) || (num_wings_to_draw > 5)){
353 header_y =
position[1] + header_offsets[1];
356 header_y = sy + header_offsets[1];
370 for (
int i = 0;
i < num_wings_to_draw;
i++ ) {
377 if(num_wings_to_draw > 2 && bitmap > 0) {
378 for(
int i = 0;
i < num_wings_to_draw - 2;
i++){
393 int i, sx, sy, is_bright,
bitmap = -1;
399 if(num_wings_to_draw == 1) {
401 sy =
position[1] + single_wing_offsets[1];
419 switch( HUD_wingman_status[wing_index].status[i] ) {
423 if ( HUD_wingman_status[wing_index].hull[i] > 0.5
f ) {
468 renderString(sx - (
int)((
float)abbrev_width/2.0
f+0.5
f), sy, abbrev);
475 switch ( num_wings_to_draw ) {
481 if ( HUD_wingman_status[i].used > 0 ) {
505 int i,
count, num_wings_to_draw = 0;
508 if ( (HUD_wingman_status[i].used > 0) && (HUD_wingman_status[i].ignore == 0) ) {
525 if ( (HUD_wingman_status[i].used <= 0) || (HUD_wingman_status[i].ignore == 1) ) {
541 HUD_wingman_flash_duration[
i][j] =
timestamp(0);
546 HUD_wingman_flash_is_bright = 0;
573 int index, draw_bright=0;
580 HUD_wingman_flash_is_bright ^= (1<<
index);
583 if ( HUD_wingman_flash_is_bright & (1<<index) ) {
594 bool draw_bright =
false;
618 if ( wing_index < 0 )
632 int i,
pos, wing_bitfield = 0;
639 wing_bitfield |= (1<<
pos);
645 if (!(wing_bitfield & (1<<i)))
void hud_init_wingman_status_gauge()
virtual void initialize()
void hud_set_wingman_status_none(int wing_index, int wing_pos)
int timestamp(int delta_ms)
char wing_status_wing_pos
#define HUD_WINGMAN_STATUS_NONE
#define HUD_OBJECT_WINGMAN_STATUS
int hud_wingman_status_wingmen_exist(int num_wings_to_draw)
void renderDots(int wing_index, int screen_index, int num_wings_to_draw)
void hud_wingman_status_update()
#define IS_MISSION_MULTI_TEAMS
char wing_status_wing_index
void initWingmate4Offsets(int x, int y)
#define HUD_WINGMAN_UPDATE_STATUS_INTERVAL
void setGaugeColor(int bright_index=-4)
void initWingmate6Offsets(int x, int y)
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
float hull[MAX_SHIPS_PER_WING]
void hud_wingman_status_set_index(wing *wingp, ship *shipp, p_object *pobjp)
void initLeftFrameEndX(int x)
void hud_set_wingman_status_departed(int wing_index, int wing_pos)
#define END_OF_LIST(head)
int right_frame_start_offset
void initFixedHeaderPosition(bool fixed)
int next_flash[MAX_SQUADRON_WINGS][MAX_SHIPS_PER_WING]
void render(float frametime)
void gr_set_color_fast(color *dst)
#define MAX_SHIPS_PER_WING
#define HUD_WINGMAN_STATUS_ALIVE
#define MAX_SQUADRON_WINGS
void initRightBgOffset(int offset)
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.
wingman_status HUD_wingman_status[MAX_SQUADRON_WINGS]
#define TBOX_FLASH_DURATION
bool fixed_header_position
hud_frames Wingman_status_middle
int wingmate_offsets[MAX_SHIPS_PER_WING][2]
void hud_wingman_kill_multi_teams()
float get_hull_pct(object *objp)
char Squadron_wing_names[MAX_SQUADRON_WINGS][NAME_LENGTH]
void initMultipleWingOffsets(int x, int y)
void initGrowMode(int mode)
void initBitmaps(char *fname_left, char *fname_middle, char *fname_right, char *fname_dots)
hud_frames Wingman_status_left
#define HUD_WINGMAN_STATUS_NOT_HERE
hud_frames Wingman_status_dots
bool maybeFlashStatus(int wing_index, int wing_pos)
void renderString(int x, int y, const char *str)
GLint GLint GLint GLint GLint x
object Objects[MAX_OBJECTS]
const char * XSTR(const char *str, int index)
int hud_wingman_status_maybe_flash(int wing_index, int wing_pos)
void initHeaderOffsets(int x, int y)
struct Wingman_status wingman_status
#define HUD_WINGMEN_STATUS
void renderBackground(int num_wings_to_draw)
GLubyte GLubyte GLubyte GLubyte w
void hud_wingman_status_init_flash()
void bm_page_in_aabitmap(int bitmapnum, int nframes)
Marks a texture as being used for this level, and is anti-aliased.
int multiple_wing_offsets[2]
void hud_wingman_status_init_late_wings()
int single_wing_offsets[2]
void gr_get_string_size(int *w, int *h, const char *text, int len=9999)
void initWingNameOffsets(int x, int y)
void hud_set_wingman_status_dead(int wing_index, int wing_pos)
void initSingleWingOffsets(int x, int y)
void hud_set_wingman_status_alive(int wing_index, int wing_pos)
#define HUD_WINGMAN_STATUS_DEAD
#define timestamp_elapsed(stamp)
void initWingmate1Offsets(int x, int y)
#define OF_SHOULD_BE_DEAD
#define TBOX_FLASH_INTERVAL
void hud_wingman_status_start_flash(int wing_index, int wing_pos)
void initWingmate3Offsets(int x, int y)
int ship_index[MAX_SHIPS_PER_WING]
hud_frames Wingman_status_right
void initWingWidth(int w)
int status[MAX_SHIPS_PER_WING]
void renderBitmap(int x, int y)
int ship_squadron_wing_lookup(const char *wing_name)
void initWingmate5Offsets(int x, int y)
void initWingmate2Offsets(int x, int y)