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) \
37 void draw_func(bool should_draw); \
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;
177classfield(HUDPanel) .void(
bool should_draw) panel_draw;
178classfield(HUDPanel) .void(
int fh) panel_export;
288#define HUD_Panel_GetBg() MACRO_BEGIN \
290 if (!autocvar__hud_configure && panel_bg_str == "0") \
294 if (panel_bg_str == "") \
295 panel_bg_str = autocvar_hud_panel_bg; \
296 if (panel_bg_str == "0" && !autocvar__hud_configure) \
300 if (panel_bg_str == "0" && autocvar__hud_configure) \
301 panel_bg_alpha_str = "0"; \
302 panel_bg = strcat(hud_skin_path, "/", panel_bg_str); \
303 if (precache_pic(panel_bg) == "") \
305 panel_bg = strcat(hud_skin_path, "/", "border_default"); \
306 if (precache_pic(panel_bg) == "") \
307 panel_bg = strcat("gfx/hud/default/", "border_default"); \
311 strcpy(panel.current_panel_bg, panel_bg); \
316#define HUD_Panel_GetColor() MACRO_BEGIN \
317 if (teamplay && panel_bg_color_team > 0) \
318 panel_bg_color = (autocvar__hud_configure && myteam == NUM_SPECTATOR) \
319 ? '1 0 0' * panel_bg_color_team \
320 : myteamcolors * panel_bg_color_team; \
321 else if (autocvar_hud_configure_teamcolorforced && autocvar__hud_configure && panel_bg_color_team > 0) \
322 panel_bg_color = '1 0 0' * panel_bg_color_team; \
325 if (panel_bg_color_str == "") \
326 panel_bg_color = autocvar_hud_panel_bg_color; \
329 if (panel_bg_color_str == "shirt") \
330 panel_bg_color = colormapPaletteColor(floor(entcs_GetClientColors(current_player) / 16), 0); \
331 else if (panel_bg_color_str == "pants") \
332 panel_bg_color = colormapPaletteColor(entcs_GetClientColors(current_player) % 16, 1); \
334 panel_bg_color = stov(panel_bg_color_str); \
340#define HUD_Panel_GetColorTeam() \
341 panel_bg_color_team = ((panel_bg_color_team_str == "") \
342 ? autocvar_hud_panel_bg_color_team \
343 : stof(panel_bg_color_team_str))
346#define HUD_Panel_GetBgAlpha() MACRO_BEGIN \
347 if (panel_bg_alpha_str == "") \
348 panel_bg_alpha_str = ftos(autocvar_hud_panel_bg_alpha); \
349 panel_bg_alpha = stof(panel_bg_alpha_str); \
350 if (autocvar__hud_configure) \
352 if (!panel_enabled) \
353 panel_bg_alpha = 0.25; \
354 else if (hud_configure_menu_open == 2 && panel == highlightedPanel) \
355 panel_bg_alpha = (1 - autocvar__menu_alpha) * max(cvar("hud_configure_bg_minalpha"), panel_bg_alpha) + autocvar__menu_alpha * panel_bg_alpha; \
357 panel_bg_alpha = max(cvar("hud_configure_bg_minalpha"), panel_bg_alpha); \
362#define HUD_Panel_GetFgAlpha() \
363 panel_fg_alpha = ((autocvar__hud_configure && !panel_enabled) \
364 ? panel_fg_alpha = 0.25 \
365 : autocvar_hud_panel_fg_alpha)
368#define HUD_Panel_GetBorder() \
369 panel_bg_border = ((panel_bg_border_str == "") \
370 ? autocvar_hud_panel_bg_border \
371 : stof(panel_bg_border_str))
375#define HUD_Panel_GetPadding() MACRO_BEGIN \
376 panel_bg_padding = ((panel_bg_padding_str == "") \
377 ? autocvar_hud_panel_bg_padding \
378 : stof(panel_bg_padding_str)); \
379 panel_bg_padding = min(min(panel_size.x, panel_size.y) * 0.5 - 5, panel_bg_padding); \
384#define HUD_Panel_UpdatePosSize_ForMenu() MACRO_BEGIN \
385 vector new_size = panel_size; \
386 float max_panel_width = 0.52 * vid_conwidth; \
387 if (panel_size.x > max_panel_width) \
389 new_size.x = max_panel_width; \
390 new_size.y = panel_size.y * (new_size.x / panel_size.x); \
392 vector new_pos = vec2(panel_bg_border + 0.5 * max_panel_width, 0.5 * vid_conheight) - 0.5 * new_size; \
393 panel_pos = (1 - autocvar__menu_alpha) * panel_pos + (autocvar__menu_alpha) * new_pos; \
394 panel_size = (1 - autocvar__menu_alpha) * panel_size + (autocvar__menu_alpha) * new_size; \
398#define HUD_Panel_ScalePosSize() MACRO_BEGIN \
399 panel_pos.x *= vid_conwidth; \
400 panel_pos.y *= vid_conheight; \
401 panel_size.x *= vid_conwidth; \
402 panel_size.y *= vid_conheight; \
408#define HUD_Panel_GetPanelEnabled() \
409 panel_enabled = ((panel.panel_configflags & PANEL_CONFIG_CANBEOFF) \
410 ? cvar(strcat("hud_panel_", panel.panel_name)) \
413#define HUD_Panel_UpdatePosSize() MACRO_BEGIN \
414 HUD_Panel_GetPanelEnabled(); \
415 panel_pos = stov(cvar_string(strcat("hud_panel_", panel.panel_name, "_pos"))); \
416 panel_size = stov(cvar_string(strcat("hud_panel_", panel.panel_name, "_size"))); \
417 HUD_Panel_ScalePosSize(); \
418 if (hud_configure_menu_open == 2 && panel == highlightedPanel) \
419 HUD_Panel_UpdatePosSize_ForMenu(); \
420 panel_bg_border_str = cvar_string(strcat("hud_panel_", panel.panel_name, "_bg_border")); \
421 HUD_Panel_GetBorder(); \
#define BIT(n)
Only ever assign into the first 24 bits in QC (so max is BIT(23)).
void HUD_CenterPrint(bool should_draw)
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
void HUD_Checkpoints(bool should_draw)
void HUD_MinigameStatus(bool should_draw)
void HUD_MinigameBoard(bool should_draw)
void HUD_MinigameMenu(bool should_draw)
void HUD_MinigameHelp(bool should_draw)
void HUD_Ammo(bool should_draw)
void HUD_Chat(bool should_draw)
void HUD_Physics(bool should_draw)
void HUD_Pickup(bool should_draw)
void HUD_Powerups(bool should_draw)
void HUD_Vote(bool should_draw)
void MapVote_Draw(bool should_draw)
ERASEABLE float blink(float base, float range, float freq)
void HUD_EngineInfo(bool should_draw)
void HUD_HealthArmor(bool should_draw)
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)
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
show during map vote
float autocvar_hud_panel_bg_border
const int PANEL_SHOW_MINIGAME
show when minigames panels are shown
bool QuickMenu_IsOpened()
void HUD_ModIcons_SetFunc()
float complain_weapon_time
vector HUD_GetFontsize(string cvarname)
const int PANEL_SHOW_MAINGAME
show in the main HUD
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)
void HUD_ItemsTime(bool should_draw)
const float BORDER_MULTIPLIER
const int PANEL_SHOW_WITH_SB
show when scoreboard is on
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
panel can be disabled (if disabled it's displayed with a low alpha)
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
var void HUD_ModIcons_GameType(vector myPos, vector mySize, bool should_draw)
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()
void HUD_InfoMessages(bool should_draw)
void HUD_ModIcons(bool should_draw)
void HUD_Notify(bool should_draw)
void HUD_PressedKeys(bool should_draw)
void HUD_RaceTimer(bool should_draw)
void HUD_Radar(bool should_draw)
#define REGISTER_REGISTRY(id)
#define REGISTRY(id, max)
Declare a new registry.
#define REGISTRY_DEFINE_GET(id, null)
void HUD_Score(bool should_draw)
void Scoreboard_Draw(bool should_draw)
void HUD_StrafeHUD(bool should_draw)
void HUD_Timer(bool should_draw)
void HUD_Weapons(bool should_draw)