FS2_Open
Open source remastering of the Freespace 2 engine
hudtargetbox.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) Volition, Inc. 1999. All rights reserved.
3  *
4  * All source code herein is the property of Volition, Inc. You may not sell
5  * or otherwise commercially exploit the source or things you created based on the
6  * source.
7  *
8 */
9 
10 
11 
12 #ifndef __FREESPACE_HUDTARGETBOX_H__
13 #define __FREESPACE_HUDTARGETBOX_H__
14 
15 #include "hud/hud.h"
16 #include "radar/radarsetup.h"
17 #include "ship/ship.h"
18 
19 class object;
20 
21 #define TBOX_FLASH_DURATION 1400
22 #define TBOX_FLASH_INTERVAL 200
23 
24 // Flash timers that don't actually affect the targetbox have been moved to respective gauge classes (Swifty)
25 #define NUM_TBOX_FLASH_TIMERS 5
26 #define TBOX_FLASH_NAME 0
27 #define TBOX_FLASH_CARGO 1
28 #define TBOX_FLASH_HULL 2
29 #define TBOX_FLASH_STATUS 3
30 #define TBOX_FLASH_SUBSYS 4
31 
32 extern int Target_static_looping;
33 extern int Target_display_cargo;
34 extern char Cargo_string[256];
35 
37 
38 //used to track if the player has wireframe hud target box turned on
39 extern int Targetbox_wire;
40 extern int Targetbox_shader_effect;
41 extern bool Lock_targetbox_mode;
42 
43 class HudGaugeTargetBox: public HudGauge // HUD_TARGET_MONITOR
44 {
45  hud_frames Monitor_frame;
46  hud_frames Integrity_bar;
47  int Monitor_mask;
48 
49  char static_fname[MAX_FILENAME_LEN];
50  hud_anim Monitor_static;
51 
52  int Viewport_w;
53  int Viewport_h;
54  int Viewport_offsets[2];
55 
56  int Integrity_bar_offsets[2];
57  int integrity_bar_h;
58  int Status_offsets[2];
59 
60  int Name_offsets[2];
61  int Class_offsets[2];
62  int Dist_offsets[2];
63  int Speed_offsets[2];
64  int Cargo_string_offsets[2];
65 
66  // remember, these coords describe the rightmost position of this element, not the leftmost like it usually does.
67  int Hull_offsets[2];
68 
69  int Cargo_scan_start_offsets[2];
70  int Cargo_scan_h;
71  int Cargo_scan_w;
72 
73  int Subsys_name_offsets[2];
74  bool Use_subsys_name_offsets;
75 
76  int Subsys_integrity_offsets[2];
77  bool Use_subsys_integrity_offsets;
78 
79  int Disabled_status_offsets[2];
80  bool Use_disabled_status_offsets;
81 
82  bool Desaturated;
83 
84  // first element is time flashing expires, second element is time of next flash
85  int Next_flash_timers[NUM_TBOX_FLASH_TIMERS];
86 
87  int flash_flags;
88 public:
90 
91  void initBitmaps(char *fname_monitor, char *fname_monitor_mask, char *fname_integrity, char *fname_static);
92  void initViewportOffsets(int x, int y);
93  void initViewportSize(int w, int h);
94  void initIntegrityOffsets(int x, int y);
95  void initIntegrityHeight(int h);
96  void initStatusOffsets(int x, int y);
97  void initNameOffsets(int x, int y);
98  void initClassOffsets(int x, int y);
99  void initDistOffsets(int x, int y);
100  void initSpeedOffsets(int x, int y);
101  void initCargoStringOffsets(int x, int y);
102  void initHullOffsets(int x, int y);
103  void initCargoScanStartOffsets(int x, int y);
104  void initCargoScanSize(int w, int h);
105  void initSubsysNameOffsets(int x, int y, bool activate);
106  void initSubsysIntegrityOffsets(int x, int y, bool activate);
107  void initDisabledStatusOffsets(int x, int y, bool activate);
108  void initDesaturate(bool desaturate);
109 
110  void initialize();
111  void pageIn();
112  void render(float frametime);
113  void renderTargetShip(object *target_objp);
114  void renderTargetWeapon(object *target_objp);
115  void renderTargetDebris(object *target_objp);
116  void renderTargetAsteroid(object *target_objp);
117  void renderTargetJumpNode(object *target_objp);
118  void renderTargetSetup(vec3d *camera_eye, matrix *camera_orient, float zoom);
119  void renderTargetClose();
120  void renderTargetForeground();
121  void renderTargetIntegrity(int disabled, int force_obj_num = -1);
122  int maybeFlashElement(int index, int flash_fast=0);
123  void renderTargetShipInfo(object *target_objp);
124  void maybeRenderCargoScan(ship_info *target_sip);
125  void initFlashTimer(int index);
126  void showTargetData(float frametime);
127 };
128 
129 class HudGaugeExtraTargetData: public HudGauge // HUD_TARGET_MONITOR_EXTRA_DATA
130 {
131  hud_frames bracket;
132 
133  int flash_timer[2];
134  bool flash_flags;
135 
136  int bracket_offsets[2]; // Targetbox_coords[gr_screen.res][TBOX_EXTRA]
137  int dock_offsets[2]; // Targetbox_coords[gr_screen.res][TBOX_EXTRA_DOCK]
138  int dock_max_w;
139  int time_offsets[2]; // Targetbox_coords[gr_screen.res][TBOX_EXTRA_TIME]
140  int order_offsets[2]; // Targetbox_coords[gr_screen.res][TBOX_EXTRA_ORDERS]
141  int order_max_w;
142 public:
144  void initBitmaps(char *fname);
145  void initBracketOffsets(int x, int y);
146  void initDockOffsets(int x, int y);
147  void initDockMaxWidth(int width);
148  void initTimeOffsets(int x, int y);
149  void initOrderOffsets(int x, int y);
150  void initOrderMaxWidth(int width);
151  void updateFrame();
152  void render(float frametime);
153  void initialize();
154  void initDockFlashTimer();
155  void startFlashDock(int duration=TBOX_FLASH_DURATION);
156  int maybeFlashDock(int flash_fast=0);
157  void endFlashDock();
158  void pageIn();
159 };
160 
161 void hud_targetbox_init();
163 void hud_get_target_strength(object *objp, float *shields, float *integrity);
164 
165 // used to flash text, uses the TBOX_FLASH_ #defines above
166 void hud_targetbox_start_flash(int index, int duration=TBOX_FLASH_DURATION);
168 
169 // functions to manage the targetbox static that appears when sensors are severely damaged
172 
174 void hud_cargo_scan_update(object *targetp, float frametime);
175 
176 void hud_update_ship_status(object *targetp);
177 
178 int hud_targetbox_subsystem_in_view(object *target_objp, int *sx, int *sy);
179 void hud_targetbox_truncate_subsys_name(char *outstr);
180 
181 //swich through the valid targetbox modes
183 
184 #endif /* __FREESPACE_HUDTARGETBOX_H__ */
#define MAX_FILENAME_LEN
Definition: pstypes.h:324
int Target_static_looping
void initViewportOffsets(int x, int y)
void initDesaturate(bool desaturate)
GLfloat GLfloat GLfloat GLfloat h
Definition: Glext.h:7280
void renderTargetShipInfo(object *target_objp)
void renderTargetAsteroid(object *target_objp)
void renderTargetForeground()
GLuint index
Definition: Glext.h:5608
void hud_targetbox_truncate_subsys_name(char *outstr)
void renderTargetShip(object *target_objp)
void initTimeOffsets(int x, int y)
void initBracketOffsets(int x, int y)
int Target_window_coords[GR_NUM_RESOLUTIONS][4]
#define NUM_TBOX_FLASH_TIMERS
Definition: hudtargetbox.h:25
Definition: pstypes.h:88
#define GR_NUM_RESOLUTIONS
Definition: 2d.h:651
void hud_targetbox_init_flash()
char Cargo_string[256]
int maybeFlashElement(int index, int flash_fast=0)
int Target_display_cargo
void initCargoStringOffsets(int x, int y)
void initIntegrityOffsets(int x, int y)
void initSubsysNameOffsets(int x, int y, bool activate)
object * objp
Definition: lua.cpp:3105
void initOrderOffsets(int x, int y)
void initSubsysIntegrityOffsets(int x, int y, bool activate)
void initDockMaxWidth(int width)
GLint GLsizei width
Definition: Gl.h:1505
Definition: hud.h:201
int Targetbox_shader_effect
void hud_cargo_scan_update(object *targetp, float frametime)
void hud_update_ship_status(object *targetp)
#define TBOX_FLASH_DURATION
Definition: hudtargetbox.h:21
int hud_targetbox_subsystem_in_view(object *target_objp, int *sx, int *sy)
void initStatusOffsets(int x, int y)
void initBitmaps(char *fname_monitor, char *fname_monitor_mask, char *fname_integrity, char *fname_static)
void renderTargetSetup(vec3d *camera_eye, matrix *camera_orient, float zoom)
void showTargetData(float frametime)
void hud_update_target_static()
void hud_targetbox_start_flash(int index, int duration=TBOX_FLASH_DURATION)
void initDisabledStatusOffsets(int x, int y, bool activate)
void initCargoScanStartOffsets(int x, int y)
void initHullOffsets(int x, int y)
void renderTargetDebris(object *target_objp)
Definition: hud.h:32
void renderTargetJumpNode(object *target_objp)
void render(float frametime)
GLint GLint GLint GLint GLint x
Definition: Glext.h:5182
Definition: object.h:141
void initFlashTimer(int index)
void initIntegrityHeight(int h)
Definition: hud.h:22
void render(float frametime)
void hud_targetbox_switch_wireframe_mode()
void initDistOffsets(int x, int y)
void startFlashDock(int duration=TBOX_FLASH_DURATION)
GLubyte GLubyte GLubyte GLubyte w
Definition: Glext.h:5679
void hud_init_target_static()
void initDockOffsets(int x, int y)
void initNameOffsets(int x, int y)
void initSpeedOffsets(int x, int y)
bool Lock_targetbox_mode
int maybeFlashDock(int flash_fast=0)
void initViewportSize(int w, int h)
void renderTargetIntegrity(int disabled, int force_obj_num=-1)
void hud_targetbox_end_flash(int index)
void hud_update_cargo_scan_sound()
void initClassOffsets(int x, int y)
void hud_get_target_strength(object *objp, float *shields, float *integrity)
int Targetbox_wire
void renderTargetWeapon(object *target_objp)
void hud_targetbox_init()
void initBitmaps(char *fname)
void maybeRenderCargoScan(ship_info *target_sip)
void initOrderMaxWidth(int width)
void initCargoScanSize(int w, int h)
GLint y
Definition: Gl.h:1505