vector panel_click_distance; // mouse cursor distance from the top left corner of the panel (saved only upon a click)
vector panel_click_resizeorigin; // coordinates for opposite point when resizing
float resizeCorner; // 1 = topleft, 2 = topright, 3 = bottomleft, 4 = bottomright
-var float highlightedPanel = -1;
+entity highlightedPanel;
float highlightedAction; // 0 = nothing, 1 = move, 2 = resize
const float BORDER_MULTIPLIER = 0.25;
string hud_skin_path;
string hud_skin_prev;
+vector myteamcolors;
+
var vector progressbar_color;
-var float highlightedPanel_backup = -1;
+entity highlightedPanel_backup;
var vector panel_pos_backup;
var vector panel_size_backup;
-var float highlightedPanel_copied = -1; //this is good only to know if there is something copied
var vector panel_size_copied;
entity panel;
var float panel_bg_padding;
var string panel_bg_padding_str;
-.string panel_cvar;
.void() panel_draw;
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; \
// 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 {\
// the check doesn't allow to fade this panel when showing the panel-specific menu dialog
#define HUD_Panel_ApplyFadeAlpha()\
-if(!(menu_enabled == 2 && panel.panel_id == highlightedPanel))\
+if(!(menu_enabled == 2 && panel == highlightedPanel))\
{\
panel_bg_alpha *= hud_fade_alpha;\
panel_fg_alpha *= hud_fade_alpha;\
if(autocvar__hud_configure) {\
if(!panel_enabled)\
panel_bg_alpha = 0.25;\
- else if(menu_enabled == 2 && panel.panel_id == highlightedPanel)\
+ else if(menu_enabled == 2 && panel == highlightedPanel)\
panel_bg_alpha = (1 - autocvar__menu_alpha) * max(cvar("hud_configure_bg_minalpha"), panel_bg_alpha) + autocvar__menu_alpha * panel_bg_alpha;\
else\
panel_bg_alpha = max(cvar("hud_configure_bg_minalpha"), panel_bg_alpha);\
}\
}
+// 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")); \
panel_bg_border_str = cvar_string(strcat("hud_panel_", panel.panel_name, "_bg_border")); \
panel_bg_padding_str = cvar_string(strcat("hud_panel_", panel.panel_name, "_bg_padding")); \
HUD_Panel_GetStringVars()\
- if(menu_enabled == 2 && panel.panel_id == highlightedPanel) {\
+ if(menu_enabled == 2 && panel == highlightedPanel) {\
HUD_Panel_GetMenuSize()\
HUD_Panel_GetMenuPos()\
} \
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; \
} 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()\
-if(menu_enabled == 2 && panel.panel_id == highlightedPanel) {\
+if(menu_enabled == 2 && panel == highlightedPanel) {\
HUD_Panel_GetMenuSize()\
HUD_Panel_GetMenuPos()\
}\