X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud%2Fhud.qc;h=8ac6a4d991727ede9dbd1528eb5cb7c03667f2a5;hb=5c4c48917aabaa83ad249280d36bd317f4627420;hp=d1029b288a957da7719e7a6287fe144ca884e17e;hpb=674ce2f8b17c4ff0825454aa622089e00dacd075;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/hud/hud.qc b/qcsrc/client/hud/hud.qc index d1029b288..8ac6a4d99 100644 --- a/qcsrc/client/hud/hud.qc +++ b/qcsrc/client/hud/hud.qc @@ -1,11 +1,12 @@ #include "hud.qh" +#include "panel/scoreboard.qh" #include "hud_config.qh" #include "../mapvoting.qh" #include "../teamradar.qh" #include #include -#include +#include #include #include #include @@ -119,6 +120,59 @@ HUD panels ================== */ +void HUD_Panel_LoadCvars() +{ + // NOTE: in hud_configure mode cvars must be reloaded every frame + if (panel.update_time <= time) + { + 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_ScalePosSize(); + panel_bg_str = cvar_string(strcat("hud_panel_", panel.panel_name, "_bg")); + panel_bg_color_str = cvar_string(strcat("hud_panel_", panel.panel_name, "_bg_color")); + panel_bg_color_team_str = cvar_string(strcat("hud_panel_", panel.panel_name, "_bg_color_team")); + panel_bg_alpha_str = cvar_string(strcat("hud_panel_", panel.panel_name, "_bg_alpha")); + 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.current_panel_bg != "0") + { + HUD_Panel_GetBgAlpha(); + HUD_Panel_GetBorder(); + } + HUD_Panel_GetColorTeam(); + HUD_Panel_GetColor(); + HUD_Panel_GetFgAlpha(); + HUD_Panel_GetPadding(); + panel.current_panel_bg_alpha = panel_bg_alpha; + panel.current_panel_fg_alpha = panel_fg_alpha; + if (hud_configure_menu_open == 2 && panel == highlightedPanel) + HUD_Panel_UpdatePosSize_ForMenu(); + else + { + panel_bg_alpha *= hud_fade_alpha * panel_fade_alpha; + panel_fg_alpha *= hud_fade_alpha * panel_fade_alpha; + } + panel.current_panel_pos = panel_pos; + panel.current_panel_size = panel_size; + 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.update_time = (autocvar__hud_configure) ? time : time + autocvar_hud_panel_update_interval; + return; + } + + panel_pos = panel.current_panel_pos; + panel_size = panel.current_panel_size; + panel_bg_alpha = panel.current_panel_bg_alpha * hud_fade_alpha * panel_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 * hud_fade_alpha * panel_fade_alpha; +} + //basically the same code of draw_ButtonPicture and draw_VertButtonPicture for the menu void HUD_Panel_DrawProgressBar(vector theOrigin, vector theSize, string pic, float length_ratio, bool vertical, float baralign, vector theColor, float theAlpha, int drawflag) { @@ -334,8 +388,6 @@ void DrawNumIcon(vector myPos, vector mySize, float x, string icon, bool vertica DrawNumIcon_expanding(myPos, mySize, x, icon, vertical, icon_right_align, color, theAlpha, 0); } -#include "all.inc" - /* ================== Main HUD system @@ -357,33 +409,54 @@ void HUD_Vehicle() } } -bool HUD_Panel_CheckFlags(int showflags) -{ - TC(int, showflags); - if ( HUD_Minigame_Showpanels() ) - return showflags & PANEL_SHOW_MINIGAME; - if(intermission == 2) - return showflags & PANEL_SHOW_MAPVOTE; - return showflags & PANEL_SHOW_MAINGAME; -} +bool HUD_Minigame_Showpanels(); void HUD_Panel_Draw(entity panent) { panel = panent; - if(autocvar__hud_configure) + if (autocvar__hud_configure) { - if(panel.panel_configflags & PANEL_CONFIG_MAIN) - panel.panel_draw(); + if (!(panel.panel_configflags & PANEL_CONFIG_MAIN)) + return; + panel_fade_alpha = 1; + Hud_Panel_GetPanelEnabled(); + panel.panel_draw(); + return; } - else if(HUD_Panel_CheckFlags(panel.panel_showflags)) + + bool draw_allowed = false; + if (HUD_Minigame_Showpanels()) + { + if (panel.panel_showflags & PANEL_SHOW_MINIGAME) + draw_allowed = true; + } + else if(intermission == 2) + { + if(panel.panel_showflags & PANEL_SHOW_MAPVOTE) + draw_allowed = true; + } + else if (panel.panel_showflags & PANEL_SHOW_MAINGAME) + draw_allowed = true; + + if (draw_allowed) + { + if (panel.panel_showflags & PANEL_SHOW_WITH_SB) + panel_fade_alpha = 1; + else + { + panel_fade_alpha = 1 - scoreboard_fade_alpha; + if(!panel_fade_alpha) + return; + } panel.panel_draw(); + } } void HUD_Reset() { // reset gametype specific icons - if(gametype == MAPINFO_TYPE_CTF) - HUD_Mod_CTF_Reset(); + if(gametype.m_modicons_reset) + gametype.m_modicons_reset(); } float autocvar_hud_dynamic_shake = 1; @@ -413,6 +486,7 @@ bool Hud_Shake_Update() return true; } +entity CSQCModel_server2csqc(int i); void calc_followmodel_ofs(entity view); void Hud_Dynamic_Frame() { @@ -492,11 +566,8 @@ void Hud_Dynamic_Frame() void HUD_Main() { int i; - // global hud alpha fade (scoreboard-related panels behave differently and override it temporarly) - if(menu_enabled == 1) + if(hud_configure_menu_open == 1) hud_fade_alpha = 1; - else if(!autocvar__hud_configure) - hud_fade_alpha = (1 - scoreboard_fade_alpha) * (1 - autocvar__menu_alpha); else hud_fade_alpha = 1 - autocvar__menu_alpha; @@ -504,27 +575,9 @@ void HUD_Main() Hud_Dynamic_Frame(); - // panels that we want to be active together with the scoreboard - // they must fade only when the menu does if(scoreboard_fade_alpha == 1) - { if(autocvar__menu_alpha == 1) return; - if(scoreboard_fade_alpha == 1) - { - HUD_Panel_Draw(HUD_PANEL(SCOREBOARD)); - HUD_Panel_Draw(HUD_PANEL(CENTERPRINT)); - return; - } - } - - if(!autocvar__hud_configure && !hud_fade_alpha) - { - hud_fade_alpha = 1; - HUD_Panel_Draw(HUD_PANEL(VOTE)); - hud_fade_alpha = 0; - return; - } // Drawing stuff if (hud_skin_prev != autocvar_hud_skin) @@ -556,11 +609,11 @@ void HUD_Main() { string hud_dock_color = autocvar_hud_dock_color; if(hud_dock_color == "shirt") { - f = stof(getplayerkeyvalue(current_player, "colors")); + f = entcs_GetClientColors(current_player); color = colormapPaletteColor(floor(f / 16), 0); } else if(hud_dock_color == "pants") { - f = stof(getplayerkeyvalue(current_player, "colors")); + f = entcs_GetClientColors(current_player); color = colormapPaletteColor(f % 16, 1); } else @@ -606,7 +659,7 @@ void HUD_Main() } } if (warning) - LOG_TRACE("Automatically fixed wrong/missing panel numbers in _hud_panelorder\n"); + LOG_TRACE("Automatically fixed wrong/missing panel numbers in _hud_panelorder"); cvar_set("_hud_panelorder", s); if(hud_panelorder_prev) @@ -635,8 +688,9 @@ void HUD_Main() HUD_Panel_Draw(HUD_PANEL(CHAT)); if(hud_panel_quickmenu) HUD_Panel_Draw(HUD_PANEL(QUICKMENU)); + HUD_Panel_Draw(HUD_PANEL(SCOREBOARD)); - if (scoreboard_active || intermission == 2) + if (intermission == 2) HUD_Reset(); HUD_Configure_PostDraw();