X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud%2Fhud.qc;h=d1029b288a957da7719e7a6287fe144ca884e17e;hb=674ce2f8b17c4ff0825454aa622089e00dacd075;hp=49cf0a390df49568bf3ada7fc1e170efd70d1191;hpb=f52ddede69621c7c9d31983591902f47fd40d7d0;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/hud/hud.qc b/qcsrc/client/hud/hud.qc index 49cf0a390..d1029b288 100644 --- a/qcsrc/client/hud/hud.qc +++ b/qcsrc/client/hud/hud.qc @@ -2,7 +2,6 @@ #include "hud_config.qh" #include "../mapvoting.qh" -#include "../scoreboard.qh" #include "../teamradar.qh" #include #include @@ -387,10 +386,10 @@ void HUD_Reset() HUD_Mod_CTF_Reset(); } -float autocvar_hud_dynamic_shake; -float autocvar_hud_dynamic_shake_damage_max; -float autocvar_hud_dynamic_shake_damage_min; -float autocvar_hud_dynamic_shake_scale; +float autocvar_hud_dynamic_shake = 1; +float autocvar_hud_dynamic_shake_damage_max = 130; +float autocvar_hud_dynamic_shake_damage_min = 10; +float autocvar_hud_dynamic_shake_scale = 0.2; float hud_dynamic_shake_x[10] = {0, 1, -0.7, 0.5, -0.3, 0.2, -0.1, 0.1, 0.0, 0}; float hud_dynamic_shake_y[10] = {0, 0.4, 0.8, -0.2, -0.6, 0.0, 0.3, 0.1, -0.1, 0}; bool Hud_Shake_Update() @@ -446,16 +445,22 @@ void Hud_Dynamic_Frame() if(autocvar_hud_dynamic_shake > 0) { + static float old_health = 0; + float health = max(-1, STAT(HEALTH)); if(hud_dynamic_shake_factor == -1) // don't allow the effect for this frame + { hud_dynamic_shake_factor = 0; + old_health = health; + } else { - float health = STAT(HEALTH); float new_hud_dynamic_shake_factor = 0; - if(prev_health - health >= autocvar_hud_dynamic_shake_damage_min && autocvar_hud_dynamic_shake_damage_max > autocvar_hud_dynamic_shake_damage_min) + if (old_health - health >= autocvar_hud_dynamic_shake_damage_min + && autocvar_hud_dynamic_shake_damage_max > autocvar_hud_dynamic_shake_damage_min + && old_health > 0 && !intermission) { float m = max(autocvar_hud_dynamic_shake_damage_min, 1); - new_hud_dynamic_shake_factor = (prev_health - health - m) / (autocvar_hud_dynamic_shake_damage_max - m); + new_hud_dynamic_shake_factor = (old_health - health - m) / (autocvar_hud_dynamic_shake_damage_max - m); if(new_hud_dynamic_shake_factor >= 1) new_hud_dynamic_shake_factor = 1; if(new_hud_dynamic_shake_factor >= hud_dynamic_shake_factor) @@ -464,6 +469,7 @@ void Hud_Dynamic_Frame() hud_dynamic_shake_time = time; } } + old_health = health; if(hud_dynamic_shake_factor) if(!Hud_Shake_Update()) hud_dynamic_shake_factor = 0; @@ -486,14 +492,13 @@ void Hud_Dynamic_Frame() void HUD_Main() { int i; - // global hud theAlpha fade + // global hud alpha fade (scoreboard-related panels behave differently and override it temporarly) if(menu_enabled == 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); - - if(scoreboard_fade_alpha) - hud_fade_alpha = (1 - scoreboard_fade_alpha); + hud_fade_alpha = 1 - autocvar__menu_alpha; HUD_Configure_Frame(); @@ -503,8 +508,14 @@ void HUD_Main() // they must fade only when the menu does if(scoreboard_fade_alpha == 1) { - HUD_Panel_Draw(HUD_PANEL(CENTERPRINT)); - return; + 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)