Skip to content

Commit 040c1f3

Browse files
committed
Merge pull request #469 from Yarn366/more_hud_table_options
Shivan Hunter's requested HUD table features
2 parents ed855e6 + 8f6bdcd commit 040c1f3

File tree

5 files changed

+63
-4
lines changed

5 files changed

+63
-4
lines changed

code/hud/hudparse.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2611,9 +2611,11 @@ void load_gauge_extra_target_data(int base_w, int base_h, int hud_font, bool sca
26112611
float origin[2] = {0.0, 1.0};
26122612
int offset[2];
26132613
int dock_offsets[2];
2614+
int dock_max_w;
26142615
int time_offsets[2];
26152616
int bracket_offsets[2];
26162617
int order_offsets[2];
2618+
int order_max_w;
26172619
char fname[MAX_FILENAME_LEN] = "targetview3";
26182620

26192621
if(gr_screen.res == GR_640) {
@@ -2642,6 +2644,9 @@ void load_gauge_extra_target_data(int base_w, int base_h, int hud_font, bool sca
26422644
order_offsets[0] = 8;
26432645
order_offsets[1] = 0;
26442646

2647+
dock_max_w = 173;
2648+
order_max_w = 162;
2649+
26452650
HudGaugeExtraTargetData* hud_gauge = gauge_load_common<HudGaugeExtraTargetData>(base_w, base_h, hud_font, scale_gauge, ship_idx, use_clr, origin[0], origin[1], offset[0], offset[1]);
26462651

26472652
if(optional_string("Filename:")) {
@@ -2653,17 +2658,25 @@ void load_gauge_extra_target_data(int base_w, int base_h, int hud_font, bool sca
26532658
if(optional_string("Dock Offsets:")) {
26542659
stuff_int_list(dock_offsets, 2);
26552660
}
2661+
if(optional_string("Dock Max Width:")) {
2662+
stuff_int(&dock_max_w);
2663+
}
26562664
if(optional_string("Order Offsets:")) {
26572665
stuff_int_list(order_offsets, 2);
26582666
}
2667+
if(optional_string("Order Max Width:")) {
2668+
stuff_int(&order_max_w);
2669+
}
26592670
if(optional_string("Time Offsets:")) {
26602671
stuff_int_list(time_offsets, 2);
26612672
}
26622673

26632674
hud_gauge->initBitmaps(fname);
26642675
hud_gauge->initBracketOffsets(bracket_offsets[0], bracket_offsets[1]);
26652676
hud_gauge->initDockOffsets(dock_offsets[0], dock_offsets[1]);
2677+
hud_gauge->initDockMaxWidth(dock_max_w);
26662678
hud_gauge->initOrderOffsets(order_offsets[0], order_offsets[1]);
2679+
hud_gauge->initOrderMaxWidth(order_max_w);
26672680
hud_gauge->initTimeOffsets(time_offsets[0], time_offsets[1]);
26682681

26692682
if(ship_idx->at(0) >= 0) {
@@ -2742,6 +2755,12 @@ void load_gauge_radar_std(int base_w, int base_h, int hud_font, bool scale_gauge
27422755
if(optional_string("Filename:")) {
27432756
stuff_string(fname, F_NAME, MAX_FILENAME_LEN);
27442757
}
2758+
if(optional_string("Radar Center Offsets:")) {
2759+
stuff_float_list(Radar_center_offsets, 2);
2760+
}
2761+
if(optional_string("Radar Size:")) {
2762+
stuff_int_list(Radar_radius, 2);
2763+
}
27452764
if(optional_string("Infinity Distance Offsets:")) {
27462765
stuff_int_list(Radar_dist_offsets[2], 2);
27472766
}
@@ -2845,6 +2864,12 @@ void load_gauge_radar_orb(int base_w, int base_h, int hud_font, bool scale_gauge
28452864
if(optional_string("Filename:")) {
28462865
stuff_string(fname, F_NAME, MAX_FILENAME_LEN);
28472866
}
2867+
if(optional_string("Radar Center Offsets:")) {
2868+
stuff_float_list(Radar_center_offsets, 2);
2869+
}
2870+
if(optional_string("Radar Size:")) {
2871+
stuff_int_list(Radar_radius, 2);
2872+
}
28482873
if(optional_string("Infinity Distance Offsets:")) {
28492874
stuff_int_list(Radar_dist_offsets[2], 2);
28502875
}
@@ -3986,6 +4011,7 @@ void load_gauge_wingman_status(int base_w, int base_h, int hud_font, bool scale_
39864011
float origin[2] = {1.0, 0.0};
39874012
int offset[2];
39884013
int header_offsets[2];
4014+
bool fixed_header_position;
39894015
int left_frame_end_x;
39904016

39914017
int single_wing_offsets[2];
@@ -4011,6 +4037,7 @@ void load_gauge_wingman_status(int base_w, int base_h, int hud_font, bool scale_
40114037

40124038
header_offsets[0] = 2;
40134039
header_offsets[1] = 2;
4040+
fixed_header_position = false;
40144041
left_frame_end_x = 71;
40154042

40164043
single_wing_offsets[0] = 28;
@@ -4054,6 +4081,9 @@ void load_gauge_wingman_status(int base_w, int base_h, int hud_font, bool scale_
40544081
if(optional_string("Header Offsets:")) {
40554082
stuff_int_list(header_offsets, 2);
40564083
}
4084+
if(optional_string("Fixed Header Position:")) {
4085+
stuff_boolean(&fixed_header_position);
4086+
}
40574087
if(optional_string("Left Background Width:")) {
40584088
stuff_int(&left_frame_end_x);
40594089
}
@@ -4098,6 +4128,7 @@ void load_gauge_wingman_status(int base_w, int base_h, int hud_font, bool scale_
40984128

40994129
hud_gauge->initBitmaps(fname_left, fname_middle, fname_right, fname_dots);
41004130
hud_gauge->initHeaderOffsets(header_offsets[0], header_offsets[1]);
4131+
hud_gauge->initFixedHeaderPosition(fixed_header_position);
41014132
hud_gauge->initLeftFrameEndX(left_frame_end_x);
41024133
hud_gauge->initMultipleWingOffsets(multiple_wing_offsets[0], multiple_wing_offsets[1]);
41034134
hud_gauge->initSingleWingOffsets(single_wing_offsets[0], single_wing_offsets[1]);

code/hud/hudtargetbox.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1379,6 +1379,11 @@ void HudGaugeExtraTargetData::initDockOffsets(int x, int y)
13791379
dock_offsets[1] = y;
13801380
}
13811381

1382+
void HudGaugeExtraTargetData::initDockMaxWidth(int width)
1383+
{
1384+
dock_max_w = width;
1385+
}
1386+
13821387
void HudGaugeExtraTargetData::initTimeOffsets(int x, int y)
13831388
{
13841389
time_offsets[0] = x;
@@ -1391,6 +1396,11 @@ void HudGaugeExtraTargetData::initOrderOffsets(int x, int y)
13911396
order_offsets[1] = y;
13921397
}
13931398

1399+
void HudGaugeExtraTargetData::initOrderMaxWidth(int width)
1400+
{
1401+
order_max_w = width;
1402+
}
1403+
13941404
void HudGaugeExtraTargetData::initBitmaps(char *fname)
13951405
{
13961406
bracket.first_frame = bm_load_animation(fname, &bracket.num_frames);
@@ -1442,7 +1452,7 @@ void HudGaugeExtraTargetData::render(float frametime)
14421452
if ( ((Player_ship->team == target_shipp->team) || ((Iff_info[target_shipp->team].flags & IFFF_ORDERS_SHOWN) && !(Iff_info[target_shipp->team].flags & IFFF_ORDERS_HIDDEN)) ) && !(ship_get_SIF(target_shipp) & SIF_NOT_FLYABLE) ) {
14431453
extra_data_shown=1;
14441454
if ( ship_return_orders(outstr, target_shipp) ) {
1445-
gr_force_fit_string(outstr, 255, 162);
1455+
gr_force_fit_string(outstr, 255, order_max_w);
14461456
has_orders = 1;
14471457
} else {
14481458
strcpy_s(outstr, XSTR( "no orders", 337));
@@ -1484,7 +1494,7 @@ void HudGaugeExtraTargetData::render(float frametime)
14841494
sprintf(outstr, XSTR("Docked: %d objects", 1623), dock_count);
14851495
}
14861496

1487-
gr_force_fit_string(outstr, 255, 173);
1497+
gr_force_fit_string(outstr, 255, dock_max_w);
14881498
maybeFlashDock();
14891499

14901500
renderString(position[0] + dock_offsets[0], position[1] + dock_offsets[1], EG_TBOX_EXTRA3, outstr);

code/hud/hudtargetbox.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,15 +135,19 @@ class HudGaugeExtraTargetData: public HudGauge // HUD_TARGET_MONITOR_EXTRA_DATA
135135

136136
int bracket_offsets[2]; // Targetbox_coords[gr_screen.res][TBOX_EXTRA]
137137
int dock_offsets[2]; // Targetbox_coords[gr_screen.res][TBOX_EXTRA_DOCK]
138+
int dock_max_w;
138139
int time_offsets[2]; // Targetbox_coords[gr_screen.res][TBOX_EXTRA_TIME]
139140
int order_offsets[2]; // Targetbox_coords[gr_screen.res][TBOX_EXTRA_ORDERS]
141+
int order_max_w;
140142
public:
141143
HudGaugeExtraTargetData();
142144
void initBitmaps(char *fname);
143145
void initBracketOffsets(int x, int y);
144146
void initDockOffsets(int x, int y);
147+
void initDockMaxWidth(int width);
145148
void initTimeOffsets(int x, int y);
146149
void initOrderOffsets(int x, int y);
150+
void initOrderMaxWidth(int width);
147151
void updateFrame();
148152
void render(float frametime);
149153
void initialize();

code/hud/hudwingmanstatus.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,11 @@ void HudGaugeWingmanStatus::initHeaderOffsets(int x, int y)
219219
header_offsets[1] = y;
220220
}
221221

222+
void HudGaugeWingmanStatus::initFixedHeaderPosition(bool fixed)
223+
{
224+
fixed_header_position = fixed;
225+
}
226+
222227
void HudGaugeWingmanStatus::initLeftFrameEndX(int x)
223228
{
224229
left_frame_end_x = x;
@@ -317,7 +322,7 @@ void HudGaugeWingmanStatus::initGrowMode(int mode) {
317322

318323
void HudGaugeWingmanStatus::renderBackground(int num_wings_to_draw)
319324
{
320-
int sx, sy, bitmap;
325+
int sx, sy, header_x, header_y, bitmap;
321326

322327
if((num_wings_to_draw < 1) || (num_wings_to_draw > 5)){
323328
Int3();
@@ -343,7 +348,14 @@ void HudGaugeWingmanStatus::renderBackground(int num_wings_to_draw)
343348
actual_origin[1] = sy;
344349

345350
// write "wingmen" on gauge
346-
renderString(sx+header_offsets[0], sy+header_offsets[1], XSTR( "wingmen", 352));
351+
if (fixed_header_position) {
352+
header_x = position[0] + header_offsets[0];
353+
header_y = position[1] + header_offsets[1];
354+
} else {
355+
header_x = sx + header_offsets[0];
356+
header_y = sy + header_offsets[1];
357+
}
358+
renderString(header_x, header_y, XSTR( "wingmen", 352));
347359

348360
// bring us to the end of the left portion so we can draw the last or middle bits depending on how many wings we have to draw
349361
if ( grow_mode == GROW_DOWN ) {

code/hud/hudwingmanstatus.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class HudGaugeWingmanStatus: public HudGauge
3939
hud_frames Wingman_status_dots;
4040

4141
int header_offsets[2];
42+
bool fixed_header_position;
4243
int left_frame_end_x;
4344
int right_frame_start_offset;
4445

@@ -59,6 +60,7 @@ class HudGaugeWingmanStatus: public HudGauge
5960
HudGaugeWingmanStatus();
6061
void initBitmaps(char *fname_left, char *fname_middle, char *fname_right, char *fname_dots);
6162
void initHeaderOffsets(int x, int y);
63+
void initFixedHeaderPosition(bool fixed);
6264
void initLeftFrameEndX(int x);
6365
void initSingleWingOffsets(int x, int y);
6466
void initMultipleWingOffsets(int x, int y);

0 commit comments

Comments
 (0)