24 #define NUM_RETICLE_ANIS 11 // keep up to date when modifying the number of reticle ani files
26 #define RETICLE_TOP_ARC 0
27 #define RETICLE_LASER_WARN 1
28 #define RETICLE_LOCK_WARN 2
29 #define RETICLE_LEFT_ARC 3
30 #define RETICLE_RIGHT_ARC 4
31 #define RETICLE_ONE_PRIMARY 5
32 #define RETICLE_TWO_PRIMARY 6
33 #define RETICLE_ONE_SECONDARY 7
34 #define RETICLE_TWO_SECONDARY 8
35 #define RETICLE_THREE_SECONDARY 9
37 #define RETICLE_CENTER 10
215 #define THREAT_DUMBFIRE (1<<0)
216 #define THREAT_ATTEMPT_LOCK (1<<1)
217 #define THREAT_LOCK (1<<2)
219 #define THREAT_UPDATE_DUMBFIRE_TIME 1000 // time between checking for dumbfire threats
220 #define THREAT_UPDATE_LOCK_TIME 500 // time between checking for lock threats
222 #define THREAT_DUMBFIRE_FLASH 180
223 #define THREAT_LOCK_FLASH 180
224 static int Threat_lock_timer;
225 static int Threat_lock_frame;
237 mprintf((
"Cannot load hud ani: %s\n", fname));
261 int centerX =
position[0] + (ax / 2);
262 int centerY =
position[1] + (ay / 2);
265 if (fpi->active == 2)
267 else if (fpi->active == 1)
294 mprintf((
"Model %s does not have a defined eyepoint. Firepoint display could not be generated\n", pm->
filename));
312 for (
int j = 0; j < num_slots; j++) {
313 int fpactive = bankactive;
335 firepoint tmp = { { fpfromeye.
xyz.x - ep.
x, ep.
y - fpfromeye.
xyz.y }, fpactive };
438 mprintf((
"Cannot load hud ani: %s\n", fname));
449 float desired_speed, max_speed, current_speed, absolute_speed, absolute_displayed_speed, max_displayed_speed, percent_max, percent_aburn_max;
450 int desired_y_pos, y_end;
456 if ( current_speed < 0.0
f){
457 current_speed = 0.0f;
461 if ( max_speed <= 0 ) {
472 if ( desired_speed < 0.0
f ){
473 desired_speed = 0.0f;
478 if (max_speed <= 0) {
481 percent_max = current_speed / max_speed;
484 percent_aburn_max = 0.0f;
485 if ( percent_max > 1 ) {
488 if ( percent_aburn_max > 1.0
f ) {
489 percent_aburn_max = 1.0f;
491 if ( percent_aburn_max < 0 ) {
492 percent_aburn_max = 0.0f;
497 if ( percent_aburn_max > 0 ) {
529 sprintf(buf,
XSTR(
"%d%%", 326),
fl2i( (desired_speed/max_speed)*100 + 0.5
f ));
532 sprintf(buf,
"%d",
fl2i(desired_speed * Hud_speed_multiplier + 0.5
f));
559 int sx, sy, x_pos, y_pos,
w,
h;
575 sy =
fl2i(y_end - h/2.0
f + 1.5);
588 if ( current_speed <= 9.5 ) {
590 }
else if ( current_speed <= 99.5 ) {
603 if ( current_speed <= 9.5 ) {
634 if ( y_end < (
position[1] + h - 1) ) {
673 mprintf((
"Cannot load hud ani: %s\n", fname_arc));
678 mprintf((
"Cannot load hud ani: %s\n", fname_laser));
683 mprintf((
"Cannot load hud ani: %s\n", fname_lock));
716 int frame_offset, num_frames;
721 Assert( num_frames >= 2 );
741 int frame_offset, num_frames;
746 Assert( num_frames >= 2 );
804 char *fname_primary_link_1,
805 char *fname_primary_link_2,
806 char *fname_secondary_link_1,
807 char *fname_secondary_link_2,
808 char *fname_secondary_link_3)
827 Warning(
LOCATION,
"Cannot load hud ani: %s\n", fname_secondary_link_1);
832 Warning(
LOCATION,
"Cannot load hud ani: %s\n", fname_secondary_link_2);
837 Warning(
LOCATION,
"Cannot load hud ani: %s\n", fname_secondary_link_3);
853 int gauge_index=0, frame_offset=0;
901 if ( gauge_index != -1 ) {
908 if ( num_banks <= 0 ) {
912 switch( num_banks ) {
936 if ( gauge_index != -1 ) {
952 Threat_lock_frame = 1;
987 }
else if ( rval == 2 ) {
1001 Threat_lock_frame++;
1002 if ( Threat_lock_frame > 2 ) {
1003 Threat_lock_frame = 1;
virtual void initialize()
int Orbit_center_offsets[2]
int timestamp(int delta_ms)
#define PLAYER_FLAGS_MATCH_TARGET
#define MULTIPLAYER_CLIENT
#define MY_NET_PLAYER_NUM
void init1PrimaryOffsets(int x, int y)
void renderBitmapEx(int frame, int x, int y, int w, int h, int sx, int sy)
int primary_bank_weapons[MAX_SHIP_PRIMARY_BANKS]
void initGlideOffsets(int x, int y, bool custom)
matrix * vm_matrix_x_matrix(matrix *dest, const matrix *src0, const matrix *src1)
#define LINK_THREE_SECONDARY
#define LINK_TWO_SECONDARY
GLfloat GLfloat GLfloat GLfloat h
int Laser_warn_offsets[2]
void initFirepointDisplay(bool firepoint, int scaleX, int scaleY, int size)
polymodel * model_get(int model_num)
weapon_info Weapon_info[MAX_WEAPON_TYPES]
SCP_vector< game_snd > Snds
#define LINK_ONE_SECONDARY
void hud_num_make_mono(char *num_str, int font_num)
Convert a number string to use mono-spaced 1 character.
missile threat indicator flashes
void setGaugeColor(int bright_index=-4)
int next_primary_fire_stamp[MAX_SHIP_PRIMARY_BANKS]
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
#define GR_NUM_RESOLUTIONS
int Outer_circle_radius[GR_NUM_RESOLUTIONS]
#define THREAT_ATTEMPT_LOCK
SCP_vector< firepoint > fp
void render(float frametime)
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 SIF2_DYN_PRIMARY_LINKING
hud_frames throttle_frames
#define THREAT_LOCK_FLASH
matrix * vm_copy_transpose(matrix *dest, const matrix *src)
vec3d * vm_vec_rotate(vec3d *dest, const vec3d *src, const matrix *m)
int Hud_throttle_h[GR_NUM_RESOLUTIONS]
bool Use_custom_match_speed
void renderThrottleLine(int y)
int current_secondary_bank
GLenum GLuint GLenum GLsizei const GLchar * buf
int Hud_reticle_center[GR_NUM_RESOLUTIONS][2]
void renderThrottleSpeed(float current_speed, int y_end)
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.
void initBitmaps(char *fname_arc, char *fname_primary_link_1, char *fname_primary_link_2, char *fname_secondary_link_1, char *fname_secondary_link_2, char *fname_secondary_link_3)
void initAburnHeight(int h)
int Reticle_frame_coords[NUM_HUD_RETICLE_STYLES][GR_NUM_RESOLUTIONS][NUM_RETICLE_ANIS][2]
player Players[MAX_PLAYERS]
void renderThrottleBackground(int y_end)
void render(float frametime)
typedef int(SCP_EXT_CALLCONV *SCPDLL_PFVERSION)(SCPDLL_Version *)
#define THREAT_UPDATE_LOCK_TIME
void initThrottleSizes(int w, int h)
void initLaserWarnOffsets(int x, int y)
#define HUD_OBJECT_CENTER_RETICLE
void init2SecondaryOffsets(int x, int y)
hud_frames weapon_linking_modes[NUM_WEAPON_LINK_MODES]
bool object_get_gliding(object *objp)
int ship_get_sound(object *objp, GameSoundsIndex id)
Returns a ship-specific sound index.
int primary_animation_done_time[MAX_SHIP_PRIMARY_BANKS]
void initOrbitRadius(int radius)
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
#define NUM_WEAPON_LINK_MODES
#define MULTI_OBSERVER(np)
int snd_play(game_snd *gs, float pan, float vol_scale, int priority, bool is_voice_msg)
#define SF_PRIMARY_LINKED
#define THREAT_UPDATE_DUMBFIRE_TIME
#define HUD_OBJECT_THREAT
HudGaugeThreatIndicator()
void renderString(int x, int y, const char *str)
int Zero_speed_offsets[2]
GLint GLint GLint GLint GLint x
object Objects[MAX_OBJECTS]
const char * XSTR(const char *str, int index)
void init2PrimaryOffsets(int x, int y)
int Target_speed_offsets[2]
ubyte lcl_get_font_index(int font_num)
void render(float frametime)
void initLockWarnOffsets(int x, int y)
int Reticle_launch_coords[GR_NUM_RESOLUTIONS][2]
void initMatchSpeedOffsets(int x, int y, bool custom)
void init3SecondaryOffsets(int x, int y)
int ship_dumbfire_threat(ship *sp)
void init1SecondaryOffsets(int x, int y)
GLubyte GLubyte GLubyte GLubyte w
int Match_speed_offsets[2]
void bm_page_in_aabitmap(int bitmapnum, int nframes)
Marks a texture as being used for this level, and is anti-aliased.
void hud_start_text_flash(char *txt, int t, int interval)
float Hud_speed_multiplier
void initZeroSpeedOffsets(int x, int y, bool show)
int last_fired_point[MAX_SHIP_PRIMARY_BANKS]
void gr_get_string_size(int *w, int *h, const char *text, int len=9999)
void initBitmaps(char *fname)
int Hud_throttle_aburn_h[GR_NUM_RESOLUTIONS]
int Hud_throttle_frame_w[GR_NUM_RESOLUTIONS]
void getFirepointStatus()
SCP_vector< ship_info > Ship_info
#define HUD_OBJECT_THROTTLE
vec3d afterburner_max_vel
#define timestamp_elapsed(stamp)
void renderPrintf(int x, int y, const char *format,...)
int Weapon_link_offsets[NUM_WEAPON_LINK_MODES][2]
char Reticle_frame_names[NUM_HUD_RETICLE_STYLES][GR_NUM_RESOLUTIONS][NUM_RETICLE_ANIS][MAX_FILENAME_LEN]
eye view_positions[MAX_EYES]
void initBitmaps(char *fname_arc, char *fname_laser, char *fname_lock)
#define PF_AFTERBURNER_ON
void renderThrottleForeground(int y_end)
void initOrbitCenterOffsets(int x, int y, bool orbiting)
void initBitmaps(char *fname)
#define HUD_OBJECT_WEAPON_LINKING
#define HUD_CENTER_RETICLE
#define THREAT_DUMBFIRE_FLASH
void hud_update_reticle(player *pp)
#define HUD_THROTTLE_GAUGE
int ship_lock_threat(ship *sp)
int Hud_throttle_bottom_y[NUM_HUD_RETICLE_STYLES][GR_NUM_RESOLUTIONS]
void showBackground(bool show)
void render(float frametime)
char filename[FILESPEC_LENGTH]
net_player Net_players[MAX_PLAYERS]
int primary_bank_slot_count[MAX_SHIP_PRIMARY_BANKS]
int Hud_throttle_aburn_button[GR_NUM_RESOLUTIONS]
void initMaxSpeedOffsets(int x, int y, bool show)
void initThrottleStartY(int y)
void renderCircle(int x, int y, int diameter)
void initTargetSpeedOffsets(int x, int y, bool show, bool percent)
void renderBitmap(int x, int y)
#define NUM_HUD_RETICLE_STYLES