]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/hud.qh
Optimize team color loading a bit
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / hud.qh
index 30f93d498505265192f2e4693c1f31162a4182a8..19cd36ddb0b0551bd4bc6833ef5b73f8be5da9d4 100644 (file)
@@ -54,6 +54,8 @@ float hud_fade_alpha;
 string hud_skin_path;
 string hud_skin_prev;
 
+vector myteamcolors;
+
 var vector progressbar_color;
 
 entity highlightedPanel_backup;
@@ -92,7 +94,6 @@ var string panel_bg_border_str;
 var float panel_bg_padding;
 var string panel_bg_padding_str;
 
-.string panel_cvar;
 .void() panel_draw;
 
 float current_player;
@@ -125,6 +126,7 @@ float current_player;
                HUD_PANEL_LAST = HUD_PANEL_##NAME = HUD_PANEL_NUM; \
                entity hud_panelent = spawn(); \
                hud_panel[HUD_PANEL_##NAME] = hud_panelent; \
+               hud_panelent.classname = "hud_panel"; \
                hud_panelent.panel_name = #name; \
                hud_panelent.panel_id = HUD_PANEL_##NAME; \
                hud_panelent.panel_draw = ##draw_func; \
@@ -186,7 +188,10 @@ if(!autocvar__hud_configure && panel_bg_str == "0") {\
 // Get value for panel_bg_color: if "" fetch default, else use panel_bg_color. Convert pants, shirt or teamcolor into a vector.
 #define HUD_Panel_GetColor()\
 if((teamplay) && panel_bg_color_team) {\
-       panel_bg_color = colormapPaletteColor(mod(stof(getplayerkeyvalue(current_player - 1, "colors")), 16), 1) * panel_bg_color_team;\
+       if(autocvar__hud_configure && myteam == NUM_SPECTATOR)\
+               panel_bg_color = '1 0 0' * panel_bg_color_team;\
+       else\
+               panel_bg_color = myteamcolors * panel_bg_color_team;\
 } else if (autocvar_hud_configure_teamcolorforced && autocvar__hud_configure && panel_bg_color_team) {\
        panel_bg_color = '1 0 0' * panel_bg_color_team;\
 } else {\
@@ -316,9 +321,10 @@ else\
        }\
 }
 
+// NOTE: in hud_configure mode cvars must be reloaded every frame
 #define HUD_Panel_UpdateCvars() \
-panel_enabled = cvar(strcat("hud_panel_", panel.panel_name)); \
-if(panel.update_time < time) { \
+if(panel.update_time <= time) { \
+       if(autocvar__hud_configure) panel_enabled = cvar(strcat("hud_panel_", panel.panel_name)); \
        panel_pos = stov(cvar_string(strcat("hud_panel_", panel.panel_name, "_pos"))); \
        panel_size = stov(cvar_string(strcat("hud_panel_", panel.panel_name, "_size"))); \
        panel_bg_str = cvar_string(strcat("hud_panel_", panel.panel_name, "_bg")); \
@@ -343,7 +349,7 @@ if(panel.update_time < time) { \
        panel.current_panel_bg_color_team = panel_bg_color_team; \
        panel.current_panel_bg_padding = panel_bg_padding; \
        panel.current_panel_fg_alpha = panel_fg_alpha; \
-       panel.update_time = (autocvar__hud_configure) ? time : time + 2; \
+       panel.update_time = (autocvar__hud_configure) ? time : time + autocvar_hud_panel_update_interval; \
 } else { \
        panel_pos = panel.current_panel_pos; \
        panel_size = panel.current_panel_size; \
@@ -357,6 +363,7 @@ if(panel.update_time < time) { \
 } ENDS_WITH_CURLY_BRACE
 
 #define HUD_Panel_UpdatePosSize() {\
+panel_enabled = cvar(strcat("hud_panel_", panel.panel_name)); \
 panel_pos = stov(cvar_string(strcat("hud_panel_", panel.panel_name, "_pos"))); \
 panel_size = stov(cvar_string(strcat("hud_panel_", panel.panel_name, "_size"))); \
 HUD_Panel_GetScaledVectors()\