X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud%2Fhud.qh;h=0eb81916cec1562540c718b4589fb0a2c7dd640d;hb=d77d35f12d537628d021b946d5fd6aa20734042d;hp=d05b04090018a3432bf9b7821bb7077c31d8e9e3;hpb=be37ea91fb3bbd1a6fa4f0b70b32d1ea95343ad4;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/hud/hud.qh b/qcsrc/client/hud/hud.qh index d05b04090..0eb81916c 100644 --- a/qcsrc/client/hud/hud.qh +++ b/qcsrc/client/hud/hud.qh @@ -3,6 +3,24 @@ #include #include +vector OFFSET_CURSOR = '0 0 0'; +vector SIZE_CURSOR = '32 32 0'; +void draw_cursor(vector pos, vector ofs, string img, vector col, float a); +void draw_cursor_normal(vector pos, vector col, float a); +void LoadMenuSkinValues(); + +void HUD_Scale_Disable(); +void HUD_Scale_Enable(); + +#define HUD_ScaleX(f) (f * hud_scale.x) +#define HUD_ScaleY(f) (f * hud_scale.y) +#define HUD_ShiftX(f) (f + hud_shift.x + hud_shift.z * (f - hud_scale_center.x)) +#define HUD_ShiftY(f) (f + hud_shift.y + hud_shift.z * (f - hud_scale_center.y)) +vector HUD_Scale(vector v); +vector HUD_Shift(vector v); + +vector HUD_GetFontsize(string cvarname); + void Hud_Dynamic_Frame(); bool HUD_Radar_Clickable(); @@ -11,19 +29,25 @@ bool HUD_WouldShowCursor(); bool QuickMenu_IsOpened(); REGISTRY(hud_panels, BITS(6)) -#define hud_panels_from(i) _hud_panels_from(i, NULL) REGISTER_REGISTRY(hud_panels) -#define REGISTER_HUD_PANEL(id, draw_func, configflags, showflags) \ +REGISTRY_DEFINE_GET(hud_panels, NULL) + +#define _REGISTER_HUD_PANEL(id, draw_func, export_func, configflags, showflags) \ void draw_func(); \ + void export_func(int fh); \ REGISTER(hud_panels, HUD_PANEL, id, m_id, new_pure(hud_panel)) { \ this.panel_id = this.m_id; \ this.panel_draw = draw_func; \ + this.panel_export = export_func; \ this.panel_name = strzone(strtolower(#id)); \ this.panel_configflags = configflags; \ this.panel_showflags = showflags; \ } +#define REGISTER_HUD_PANEL(id, draw_func, configflags, showflags) \ + _REGISTER_HUD_PANEL(id, draw_func, draw_func##_Export, configflags, showflags) + #define HUD_PANEL(NAME) HUD_PANEL_##NAME // draw the background/borders @@ -38,7 +62,7 @@ REGISTER_REGISTRY(hud_panels) ); \ MACRO_END -int panel_order[hud_panels_MAX]; +int panel_order[REGISTRY_MAX(hud_panels)]; string hud_panelorder_prev; bool hud_draw_maximized; @@ -53,9 +77,9 @@ float HUD_Radar_InputEvent(float bInputType, float nPrimary, float nSecondary); void HUD_Radar_Hide_Maximized(); float HUD_GetRowCount(int item_count, vector size, float item_aspect); -vector HUD_Get_Num_Color (float hp, float maxvalue); -void DrawNumIcon(vector myPos, vector mySize, float theTime, string icon, bool vertical, bool icon_right_align, vector color, float theAlpha); -void DrawNumIcon_expanding(vector myPos, vector mySize, float theTime, string icon, bool vertical, int icon_right_align, vector color, float theAlpha, float fadelerp); +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 DrawNumIcon_expanding(vector myPos, vector mySize, float theTime, string icon, bool vertical, bool isInfinite, int icon_right_align, vector color, float theAlpha, float fadelerp); void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float theAlpha, int drawflag); vector HUD_GetTableSize_BestItemAR(int item_count, vector psize, float item_aspect); @@ -83,8 +107,7 @@ entity highlightedPanel; float highlightedAction; // 0 = nothing, 1 = move, 2 = resize const float BORDER_MULTIPLIER = 4; -float scoreboard_bottom; -int weapon_accuracy[Weapons_MAX]; +int weapon_accuracy[REGISTRY_MAX(Weapons)]; entity complain_weapon; int complain_weapon_type; @@ -98,12 +121,14 @@ int ts_primary, ts_secondary; float weapontime; float weaponprevtime; +float timer; float teamnagger; int hudShiftState; const int S_SHIFT = 1; const int S_CTRL = 2; const int S_ALT = 4; +const int S_TAB = 8; float hud_fade_alpha; @@ -149,6 +174,7 @@ float panel_bg_padding; string panel_bg_padding_str; classfield(HUDPanel) .void() panel_draw; +classfield(HUDPanel) .void(int fh) panel_export; // chat panel can be reduced / moved while the mapvote is active // let know the mapvote panel about chat pos and size @@ -157,6 +183,26 @@ float chat_sizey; float current_player; +float autocvar__menu_alpha; // updated by the menu VM, useful to tell when the menu is being drawn + +string autocvar__hud_panelorder; + +bool autocvar_hud_cursormode = true; +string autocvar_hud_dock; +float autocvar_hud_dock_alpha; +string autocvar_hud_dock_color; +bool autocvar_hud_dock_color_team; +string autocvar_hud_panel_bg; +float autocvar_hud_panel_bg_alpha; +float autocvar_hud_panel_bg_border; +vector autocvar_hud_panel_bg_color; +float autocvar_hud_panel_bg_color_team; +float autocvar_hud_panel_bg_padding; +float autocvar_hud_panel_fg_alpha; +string autocvar_hud_skin; +float autocvar_hud_progressbar_alpha; +float autocvar_hud_panel_update_interval; + float autocvar_hud_dynamic_follow; float autocvar_hud_dynamic_follow_scale; vector autocvar_hud_dynamic_follow_scale_xyz; @@ -207,7 +253,7 @@ REGISTER_HUD_PANEL(WEAPONS, HUD_Weapons, PANEL_CONFIG_MAIN | PANE REGISTER_HUD_PANEL(AMMO, HUD_Ammo, PANEL_CONFIG_MAIN | PANEL_CONFIG_CANBEOFF, PANEL_SHOW_MAINGAME ) // AMMO REGISTER_HUD_PANEL(POWERUPS, HUD_Powerups, PANEL_CONFIG_MAIN | PANEL_CONFIG_CANBEOFF, PANEL_SHOW_MAINGAME ) // POWERUPS REGISTER_HUD_PANEL(HEALTHARMOR, HUD_HealthArmor, PANEL_CONFIG_MAIN | PANEL_CONFIG_CANBEOFF, PANEL_SHOW_MAINGAME ) // HEALTHARMOR -REGISTER_HUD_PANEL(NOTIFY, HUD_Notify, PANEL_CONFIG_MAIN | PANEL_CONFIG_CANBEOFF, PANEL_SHOW_MAINGAME | PANEL_SHOW_MINIGAME ) // NOTIFY +REGISTER_HUD_PANEL(NOTIFY, HUD_Notify, PANEL_CONFIG_MAIN | PANEL_CONFIG_CANBEOFF, PANEL_SHOW_MAINGAME | PANEL_SHOW_MINIGAME | PANEL_SHOW_WITH_SB) // NOTIFY REGISTER_HUD_PANEL(TIMER, HUD_Timer, PANEL_CONFIG_MAIN | PANEL_CONFIG_CANBEOFF, PANEL_SHOW_MAINGAME | PANEL_SHOW_MINIGAME | PANEL_SHOW_WITH_SB) // TIMER REGISTER_HUD_PANEL(RADAR, HUD_Radar, PANEL_CONFIG_MAIN | PANEL_CONFIG_CANBEOFF, PANEL_SHOW_MAINGAME ) // RADAR REGISTER_HUD_PANEL(SCORE, HUD_Score, PANEL_CONFIG_MAIN | PANEL_CONFIG_CANBEOFF, PANEL_SHOW_MAINGAME | PANEL_SHOW_MINIGAME ) // SCORE @@ -228,6 +274,8 @@ REGISTER_HUD_PANEL(MAPVOTE, MapVote_Draw, PANEL_CONFIG_NO REGISTER_HUD_PANEL(ITEMSTIME, HUD_ItemsTime, PANEL_CONFIG_MAIN | PANEL_CONFIG_CANBEOFF, PANEL_SHOW_MAINGAME ) // ITEMSTIME REGISTER_HUD_PANEL(QUICKMENU, HUD_QuickMenu, PANEL_CONFIG_MAIN , PANEL_SHOW_MAINGAME | PANEL_SHOW_MINIGAME ) // QUICKMENU REGISTER_HUD_PANEL(SCOREBOARD, Scoreboard_Draw, PANEL_CONFIG_NO , PANEL_SHOW_MAINGAME | PANEL_SHOW_MINIGAME | PANEL_SHOW_MAPVOTE | PANEL_SHOW_WITH_SB) // SCOREBOARD +REGISTER_HUD_PANEL(STRAFEHUD, HUD_StrafeHUD, PANEL_CONFIG_MAIN | PANEL_CONFIG_CANBEOFF, PANEL_SHOW_MAINGAME ) // STRAFEHUD +REGISTER_HUD_PANEL(PICKUP, HUD_Pickup, PANEL_CONFIG_MAIN | PANEL_CONFIG_CANBEOFF, PANEL_SHOW_MAINGAME ) // PICKUP // always add new panels to the end of list // Because calling lots of functions in QC apparently cuts fps in half on many machines: