15#define HUD_ScaleX(f) (f * hud_scale.x)
16#define HUD_ScaleY(f) (f * hud_scale.y)
17#define HUD_ShiftX(f) (f + hud_shift.x + hud_shift.z * (f - hud_scale_center.x))
18#define HUD_ShiftY(f) (f + hud_shift.y + hud_shift.z * (f - hud_scale_center.y))
36#define _REGISTER_HUD_PANEL(id, draw_func, export_func, configflags, showflags) \
38 void export_func(int fh); \
39 REGISTER(hud_panels, HUD_PANEL, id, m_id, new_pure(hud_panel)) \
41 this.panel_id = this.m_id; \
42 this.panel_draw = draw_func; \
43 this.panel_export = export_func; \
44 this.panel_name = strzone(strtolower(#id)); \
45 this.panel_configflags = configflags; \
46 this.panel_showflags = showflags; \
49#define REGISTER_HUD_PANEL(id, draw_func, configflags, showflags) \
50 _REGISTER_HUD_PANEL(id, draw_func, draw_func##_Export, configflags, showflags)
52#define HUD_PANEL(NAME) HUD_PANEL_##NAME
55#define HUD_Panel_DrawBg() MACRO_BEGIN \
56 if (panel.current_panel_bg != "0" && panel.current_panel_bg != "") \
58 HUD_Shift(panel_pos - '1 1 0' * panel_bg_border), \
59 panel.current_panel_bg, \
60 HUD_Scale(panel_size + '1 1 0' * 2 * panel_bg_border), \
61 panel_bg_color, panel_bg_alpha, \
62 HUD_Scale('1 1 0' * BORDER_MULTIPLIER * panel_bg_border) \
91string MakeRaceString(
int cp,
float mytime,
float theirtime,
float othertime,
float lapdelta,
string theirname);
151classfield(HUDPanel) .vector current_panel_pos;
152classfield(HUDPanel) .vector current_panel_size;
154classfield(HUDPanel) .float current_panel_bg_alpha;
155classfield(HUDPanel) .float current_panel_bg_border;
156classfield(HUDPanel) .vector current_panel_bg_color;
157classfield(HUDPanel) .float current_panel_bg_color_team;
158classfield(HUDPanel) .float current_panel_bg_padding;
159classfield(HUDPanel) .float current_panel_fg_alpha;
178classfield(HUDPanel) .void(
int fh) panel_export;
294#define HUD_Panel_GetBg() MACRO_BEGIN \
296 if (!autocvar__hud_configure && panel_bg_str == "0") \
300 if (panel_bg_str == "") \
301 panel_bg_str = autocvar_hud_panel_bg; \
302 if (panel_bg_str == "0" && !autocvar__hud_configure) \
306 if (panel_bg_str == "0" && autocvar__hud_configure) \
307 panel_bg_alpha_str = "0"; \
308 panel_bg = strcat(hud_skin_path, "/", panel_bg_str); \
309 if (precache_pic(panel_bg) == "") \
311 panel_bg = strcat(hud_skin_path, "/", "border_default"); \
312 if (precache_pic(panel_bg) == "") \
313 panel_bg = strcat("gfx/hud/default/", "border_default"); \
317 strcpy(panel.current_panel_bg, panel_bg); \
321#define HUD_Panel_GetColor() MACRO_BEGIN \
322 if (teamplay && panel_bg_color_team > 0) \
324 if (autocvar__hud_configure && myteam == NUM_SPECTATOR) \
325 panel_bg_color = '1 0 0' * panel_bg_color_team; \
327 panel_bg_color = myteamcolors * panel_bg_color_team; \
329 else if (autocvar_hud_configure_teamcolorforced && autocvar__hud_configure && panel_bg_color_team > 0) \
330 panel_bg_color = '1 0 0' * panel_bg_color_team; \
333 if (panel_bg_color_str == "") \
334 panel_bg_color = autocvar_hud_panel_bg_color; \
337 if (panel_bg_color_str == "shirt") \
338 panel_bg_color = colormapPaletteColor(floor(entcs_GetClientColors(current_player) / 16), 0); \
339 else if (panel_bg_color_str == "pants") \
340 panel_bg_color = colormapPaletteColor(entcs_GetClientColors(current_player) % 16, 1); \
342 panel_bg_color = stov(panel_bg_color_str); \
348#define HUD_Panel_GetColorTeam() MACRO_BEGIN \
349 if (panel_bg_color_team_str == "") \
350 panel_bg_color_team = autocvar_hud_panel_bg_color_team; \
352 panel_bg_color_team = stof(panel_bg_color_team_str); \
357#define HUD_Panel_GetBgAlpha() MACRO_BEGIN \
358 if (panel_bg_alpha_str == "") \
359 panel_bg_alpha_str = ftos(autocvar_hud_panel_bg_alpha); \
360 panel_bg_alpha = stof(panel_bg_alpha_str); \
361 if (autocvar__hud_configure) \
363 if (!panel_enabled) \
364 panel_bg_alpha = 0.25; \
365 else if (hud_configure_menu_open == 2 && panel == highlightedPanel) \
366 panel_bg_alpha = (1 - autocvar__menu_alpha) * max(cvar("hud_configure_bg_minalpha"), panel_bg_alpha) + autocvar__menu_alpha * panel_bg_alpha; \
368 panel_bg_alpha = max(cvar("hud_configure_bg_minalpha"), panel_bg_alpha); \
374#define HUD_Panel_GetFgAlpha() MACRO_BEGIN \
375 panel_fg_alpha = autocvar_hud_panel_fg_alpha; \
376 if (autocvar__hud_configure && !panel_enabled) \
377 panel_fg_alpha = 0.25; \
381#define HUD_Panel_GetBorder() MACRO_BEGIN \
382 if (panel_bg_border_str == "") \
383 panel_bg_border = autocvar_hud_panel_bg_border; \
385 panel_bg_border = stof(panel_bg_border_str); \
390#define HUD_Panel_GetPadding() MACRO_BEGIN \
391 if (panel_bg_padding_str == "") \
392 panel_bg_padding = autocvar_hud_panel_bg_padding; \
394 panel_bg_padding = stof(panel_bg_padding_str); \
395 panel_bg_padding = min(min(panel_size.x, panel_size.y) * 0.5 - 5, panel_bg_padding); \
400#define HUD_Panel_UpdatePosSize_ForMenu() MACRO_BEGIN \
401 vector new_size = panel_size; \
402 float max_panel_width = 0.52 * vid_conwidth; \
403 if (panel_size.x > max_panel_width) \
405 new_size.x = max_panel_width; \
406 new_size.y = panel_size.y * (new_size.x / panel_size.x); \
408 vector new_pos = vec2(panel_bg_border + 0.5 * max_panel_width, 0.5 * vid_conheight) - 0.5 * new_size; \
409 panel_pos = (1 - autocvar__menu_alpha) * panel_pos + (autocvar__menu_alpha) * new_pos; \
410 panel_size = (1 - autocvar__menu_alpha) * panel_size + (autocvar__menu_alpha) * new_size; \
414#define HUD_Panel_ScalePosSize() MACRO_BEGIN \
415 panel_pos.x *= vid_conwidth; \
416 panel_pos.y *= vid_conheight; \
417 panel_size.x *= vid_conwidth; \
418 panel_size.y *= vid_conheight; \
424#define Hud_Panel_GetPanelEnabled() \
425 panel_enabled = ((panel.panel_configflags & PANEL_CONFIG_CANBEOFF) \
426 ? cvar(strcat("hud_panel_", panel.panel_name)) : true)
428#define HUD_Panel_UpdatePosSize() MACRO_BEGIN \
429 Hud_Panel_GetPanelEnabled(); \
430 panel_pos = stov(cvar_string(strcat("hud_panel_", panel.panel_name, "_pos"))); \
431 panel_size = stov(cvar_string(strcat("hud_panel_", panel.panel_name, "_size"))); \
432 HUD_Panel_ScalePosSize(); \
433 if (hud_configure_menu_open == 2 && panel == highlightedPanel) \
434 HUD_Panel_UpdatePosSize_ForMenu(); \
435 panel_bg_border_str = cvar_string(strcat("hud_panel_", panel.panel_name, "_bg_border")); \
436 HUD_Panel_GetBorder(); \
#define BIT(n)
Only ever assign into the first 24 bits in QC (so max is BIT(23)).
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
void HUD_MinigameStatus()
ERASEABLE float blink(float base, float range, float freq)
int race_CheckName(string net_name)
const float NOTIFY_ICON_MARGIN
string panel_bg_color_team_str
float autocvar_hud_progressbar_alpha
const int PANEL_CONFIG_NO
float notify_times[NOTIFY_MAX_ENTRIES]
void draw_cursor_normal(vector pos, vector col, float a)
float hud_panel_radar_bottom
float HUD_Radar_InputEvent(float bInputType, float nPrimary, float nSecondary)
bool hud_panel_radar_mouse
float hud_dynamic_shake_time
entity highlightedPanel_backup
bool radar_panel_modified
float autocvar_hud_dock_alpha
string notify_icons[NOTIFY_MAX_ENTRIES]
string panel_bg_border_str
vector panel_click_distance
void HUD_Notify_Push(string icon, string attacker, string victim)
void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, float length_ratio, bool vertical, float baralign, vector theColor, float theAlpha, int drawflag)
string autocvar__hud_panelorder
string MakeRaceString(int cp, float mytime, float theirtime, float othertime, float lapdelta, string theirname)
var void HUD_ModIcons_GameType(vector pos, vector size)
float autocvar__menu_alpha
float hud_dynamic_shake_factor
void HUD_Panel_LoadCvars()
vector HUD_Shift(vector v)
float autocvar_hud_panel_bg_alpha
string panel_bg_alpha_str
vector hud_dynamic_shake_realofs
const int NOTIFY_MAX_ENTRIES
vector autocvar_hud_dynamic_follow_scale_xyz
bool hud_panel_radar_maximized
int panel_order[REGISTRY_MAX(hud_panels)]
void LoadMenuSkinValues()
void draw_cursor(vector pos, vector ofs, string img, vector col, float a)
bool hud_panel_radar_temp_hidden
float autocvar_hud_dynamic_follow
bool HUD_WouldShowCursor()
float panel_bg_color_team
string panel_bg_color_str
bool autocvar_hud_dock_color_team
#define REGISTER_HUD_PANEL(id, draw_func, configflags, showflags)
string hud_panelorder_prev
const int PANEL_SHOW_MAPVOTE
float autocvar_hud_panel_bg_border
const int PANEL_SHOW_MINIGAME
bool QuickMenu_IsOpened()
void HUD_ModIcons_SetFunc()
float complain_weapon_time
vector HUD_GetFontsize(string cvarname)
const int PANEL_SHOW_MAINGAME
string autocvar_hud_dock_color
float autocvar_hud_panel_update_interval
vector autocvar_hud_panel_bg_color
int weapon_accuracy[REGISTRY_MAX(Weapons)]
int autocvar_hud_speed_unit
string notify_attackers[NOTIFY_MAX_ENTRIES]
PlayerScoreField ps_secondary
float HUD_GetRowCount(int item_count, vector size, float item_aspect)
bool autocvar_hud_cursormode
vector cl_followmodel_ofs
PlayerScoreField ps_primary
string autocvar_hud_panel_bg
vector HUD_GetTableSize_BestItemAR(int item_count, vector psize, float item_aspect)
const float BORDER_MULTIPLIER
const int PANEL_SHOW_WITH_SB
float autocvar_hud_panel_bg_padding
string notify_victims[NOTIFY_MAX_ENTRIES]
vector HUD_Scale(vector v)
float autocvar_hud_panel_bg_color_team
const int PANEL_CONFIG_CANBEOFF
string panel_bg_padding_str
const int PANEL_CONFIG_MAIN
float cl_followmodel_time
vector HUD_Get_Num_Color(float hp, float maxvalue, bool blink)
void DrawNumIcon(vector myPos, vector mySize, float theTime, string icon, bool vertical, bool isInfinite, bool icon_right_align, vector color, float theAlpha)
void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float theAlpha, int drawflag)
float autocvar_hud_dynamic_follow_scale
float autocvar_hud_panel_fg_alpha
bool HUD_Radar_Clickable()
void DrawNumIcon_expanding(vector myPos, vector mySize, float theTime, string icon, bool vertical, bool isInfinite, int icon_right_align, vector color, float theAlpha, float fadelerp)
vector panel_click_resizeorigin
void HUD_Radar_Hide_Maximized()
#define REGISTER_REGISTRY(id)
#define REGISTRY(id, max)
Declare a new registry.
#define REGISTRY_DEFINE_GET(id, null)