float hud_draw_maximized;
float hud_panel_radar_maximized;
+float chat_panel_modified;
+float radar_panel_modified;
vector mousepos;
vector panel_click_distance; // mouse cursor distance from the top left corner of the panel (saved only upon a click)
var float panel_enabled;
var vector panel_pos;
var vector panel_size;
-var string panel_bg;
var string panel_bg_str; // "_str" vars contain the raw value of the cvar, non-"_str" contains what hud.qc code should use
var vector panel_bg_color;
var string panel_bg_color_str;
HUD_PANEL(ENGINEINFO , HUD_EngineInfo , engineinfo) \
HUD_PANEL(INFOMESSAGES , HUD_InfoMessages , infomessages) \
HUD_PANEL(PHYSICS , HUD_Physics , physics) \
- HUD_PANEL(CENTERPRINT , HUD_CenterPrint , centerprint)
+ HUD_PANEL(CENTERPRINT , HUD_CenterPrint , centerprint) \
+ HUD_PANEL(BUFFS , HUD_Buffs , buffs)
#define HUD_PANEL(NAME,draw_func,name) \
float HUD_PANEL_##NAME; \
- void ##draw_func(void); \
+ void draw_func(void); \
void RegisterHUD_Panel_##NAME() \
{ \
HUD_PANEL_LAST = HUD_PANEL_##NAME = HUD_PANEL_NUM; \
hud_panelent.classname = "hud_panel"; \
hud_panelent.panel_name = #name; \
hud_panelent.panel_id = HUD_PANEL_##NAME; \
- hud_panelent.panel_draw = ##draw_func; \
+ hud_panelent.panel_draw = draw_func; \
++HUD_PANEL_NUM; \
} \
- ACCUMULATE_FUNCTION(RegisterHUD_Panels, RegisterHUD_Panel_##NAME)
+ ACCUMULATE_FUNCTION(RegisterHUD_Panels, RegisterHUD_Panel_##NAME);
HUD_PANELS
#undef HUD_PANEL
// ----------------------
// Little help for the poor people who have to make sense of this: Start from the bottom ;)
-// Get value for panel_bg: if "" fetch default, else use panel_bg_str
+// Get value for panel.current_panel_bg: if "" fetch default, else use panel_bg_str
// comment on last line of macro: // we probably want to see a background in config mode at all times...
#define HUD_Panel_GetBg()\
+string panel_bg;\
if(!autocvar__hud_configure && panel_bg_str == "0") {\
panel_bg = "0";\
} else {\
}\
}\
}\
-}
+}\
+if(panel.current_panel_bg)\
+ strunzone(panel.current_panel_bg);\
+panel.current_panel_bg = strzone(panel_bg);
// 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()\
panel_bg_color_team = stof(panel_bg_color_team_str);\
}
-// 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 == highlightedPanel))\
-{\
- panel_bg_alpha *= hud_fade_alpha;\
- panel_fg_alpha *= hud_fade_alpha;\
-} ENDS_WITH_CURLY_BRACE
-
// Get value for panel_bg_alpha: if "" fetch default, else use panel_bg_alpha. Also do various menu dialog fadeout/in checks, and minalpha checks
// comment on line 3 of macro: // do not set a minalpha cap when showing the config dialog for this panel
#define HUD_Panel_GetBgAlpha()\
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_GetBg()\
- if (panel_bg != "0") {\
+ if (panel.current_panel_bg != "0") {\
HUD_Panel_GetColorTeam()\
HUD_Panel_GetColor()\
HUD_Panel_GetBgAlpha()\
}\
HUD_Panel_GetFgAlpha()\
HUD_Panel_GetPadding()\
+ panel.current_panel_bg_alpha = panel_bg_alpha; \
+ panel.current_panel_fg_alpha = panel_fg_alpha; \
if(menu_enabled == 2 && panel == highlightedPanel) {\
HUD_Panel_UpdatePosSize_ForMenu()\
- } \
+ } else {\
+ panel_bg_alpha *= hud_fade_alpha;\
+ panel_fg_alpha *= hud_fade_alpha;\
+ }\
panel.current_panel_pos = panel_pos; \
panel.current_panel_size = panel_size; \
- if(panel.current_panel_bg != "") \
- strunzone(panel.current_panel_bg); \
- panel.current_panel_bg = strzone(panel_bg); \
- panel.current_panel_bg_alpha = panel_bg_alpha; \
panel.current_panel_bg_border = panel_bg_border; \
panel.current_panel_bg_color = panel_bg_color; \
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 + autocvar_hud_panel_update_interval; \
} else { \
panel_pos = panel.current_panel_pos; \
panel_size = panel.current_panel_size; \
- panel_bg = panel.current_panel_bg; \
- panel_bg_alpha = panel.current_panel_bg_alpha; \
+ panel_bg_alpha = panel.current_panel_bg_alpha * hud_fade_alpha; \
panel_bg_border = panel.current_panel_bg_border; \
panel_bg_color = panel.current_panel_bg_color; \
panel_bg_color_team = panel.current_panel_bg_color_team; \
panel_bg_padding = panel.current_panel_bg_padding; \
- panel_fg_alpha = panel.current_panel_fg_alpha; \
+ panel_fg_alpha = panel.current_panel_fg_alpha * hud_fade_alpha; \
} ENDS_WITH_CURLY_BRACE
#define HUD_Panel_UpdatePosSize() {\
HUD_Panel_GetBorder() \
} ENDS_WITH_CURLY_BRACE
+#define NOTIFY_MAX_ENTRIES 10
+#define NOTIFY_ICON_MARGIN 0.02
-#define KN_MAX_ENTRIES 10
+float notify_index;
+float notify_count;
+float notify_times[NOTIFY_MAX_ENTRIES];
+string notify_attackers[NOTIFY_MAX_ENTRIES];
+string notify_victims[NOTIFY_MAX_ENTRIES];
+string notify_icons[NOTIFY_MAX_ENTRIES];
-float kn_index;
-float notify_times[KN_MAX_ENTRIES];
-string notify_icon[KN_MAX_ENTRIES];
-string notify_attackers[KN_MAX_ENTRIES];
-string notify_victims[KN_MAX_ENTRIES];
void HUD_Notify_Push(string icon, string attacker, string victim);
var void HUD_ModIcons_GameType(vector pos, vector size);