@@ -291,7 +291,7 @@ static int Damage_flash_timer;
291291
292292HudGauge::HudGauge ():
293293base_w(0 ), base_h(0 ), gauge_type(-1 ), font_num(font::FONT1 ), lock_color(false ), sexp_lock_color(false ), reticle_follow(false ),
294- active(false ), off_by_default(false ), sexp_override(false ), pop_up(false ), disabled_views(0 ), only_render_in_chase_view(false ), render_for_cockpit_toggle(0 ), custom_gauge(false ),
294+ active(false ), off_by_default(false ), sexp_override(false ), pop_up(false ), disabled_views(0 ), scripting_render_override( false ), only_render_in_chase_view(false ), render_for_cockpit_toggle(0 ), custom_gauge(false ),
295295texture_target(-1 ), canvas_w(-1 ), canvas_h(-1 ), target_w(-1 ), target_h(-1 )
296296{
297297 position[0 ] = 0 ;
@@ -323,7 +323,7 @@ texture_target(-1), canvas_w(-1), canvas_h(-1), target_w(-1), target_h(-1)
323323HudGauge::HudGauge (int _gauge_object, int _gauge_config, bool _slew, bool _message, int _disabled_views, int r, int g, int b):
324324base_w(0 ), base_h(0 ), gauge_type(_gauge_config), gauge_object(_gauge_object), font_num(font::FONT1 ), lock_color(false ), sexp_lock_color(false ),
325325reticle_follow(_slew), active(false ), off_by_default(false ), sexp_override(false ), pop_up(false ), message_gauge(_message),
326- disabled_views(_disabled_views), only_render_in_chase_view(false ), render_for_cockpit_toggle(0 ), custom_gauge(false ), textoffset_x(0 ), textoffset_y(0 ), texture_target(-1 ),
326+ disabled_views(_disabled_views), scripting_render_override( false ), only_render_in_chase_view(false ), render_for_cockpit_toggle(0 ), custom_gauge(false ), textoffset_x(0 ), textoffset_y(0 ), texture_target(-1 ),
327327canvas_w(-1 ), canvas_h(-1 ), target_w(-1 ), target_h(-1 )
328328{
329329 Assertion (_gauge_config <= NUM_HUD_GAUGES && _gauge_config >= 0 , " Gauge has an invalid config ID!" );
@@ -367,7 +367,7 @@ canvas_w(-1), canvas_h(-1), target_w(-1), target_h(-1)
367367HudGauge::HudGauge (int _gauge_config, bool _slew, int r, int g, int b, char * _custom_name, char * _custom_text, char * frame_fname, int txtoffset_x, int txtoffset_y):
368368base_w(0 ), base_h(0 ), gauge_type(_gauge_config), gauge_object(HUD_OBJECT_CUSTOM ), font_num(font::FONT1 ), lock_color(false ), sexp_lock_color(false ),
369369reticle_follow(_slew), active(false ), off_by_default(false ), sexp_override(false ), pop_up(false ), message_gauge(false ),
370- disabled_views(VM_EXTERNAL | VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY ), can_popup(false ), use_iff_color(false ), use_tag_color(false ), only_render_in_chase_view(false ),
370+ disabled_views(VM_EXTERNAL | VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY ), scripting_render_override( false ), can_popup(false ), use_iff_color(false ), use_tag_color(false ), only_render_in_chase_view(false ),
371371render_for_cockpit_toggle(0 ), custom_gauge(true ), textoffset_x(txtoffset_x), textoffset_y(txtoffset_y), texture_target(-1 ), canvas_w(-1 ), canvas_h(-1 ), target_w(-1 ), target_h(-1 )
372372{
373373 position[0 ] = 0 ;
@@ -780,6 +780,16 @@ void HudGauge::updateSexpOverride(bool sexp)
780780 sexp_override = sexp;
781781}
782782
783+ bool HudGauge::getScriptingOverride () const
784+ {
785+ return scripting_render_override;
786+ }
787+
788+ void HudGauge::updateScriptingOverride (bool toggle)
789+ {
790+ scripting_render_override = toggle;
791+ }
792+
783793void HudGauge::updatePopUp (bool pop_up_flag)
784794{
785795 pop_up = pop_up_flag;
@@ -1415,6 +1425,10 @@ bool HudGauge::canRender() const
14151425 }
14161426 }
14171427
1428+ if (scripting_render_override) {
1429+ return false ;
1430+ }
1431+
14181432 return true ;
14191433}
14201434
@@ -4342,6 +4356,21 @@ HudGauge *hud_get_gauge(const char *name, bool check_all_custom_gauges)
43424356 if (idx >= 0 && idx < (int )default_hud_gauges.size ())
43434357 gauge = default_hud_gauges[idx].get ();
43444358 }
4359+
4360+ // If we still haven't found it then we might be using ship specific builtin gauges and not a default_hud_gauge
4361+ if (gauge == nullptr ) {
4362+ ship_info* player_sip = nullptr ;
4363+ if (Player_ship && Player_ship->ship_info_index >= 0 )
4364+ player_sip = &Ship_info[Player_ship->ship_info_index ];
4365+
4366+ if (player_sip != nullptr ) {
4367+ for (auto & ship_gauge : player_sip->hud_gauges ) {
4368+ if (!stricmp (name, ship_gauge->getConfigName ().c_str ())) {
4369+ gauge = ship_gauge.get ();
4370+ }
4371+ }
4372+ }
4373+ }
43454374 return gauge;
43464375}
43474376
0 commit comments