vector HUD_Get_Num_Color (float x, float maxvalue)
{
+ float blinkingamt;
vector color;
- if(x > maxvalue) {
- color_x = 0;
+ if(x >= maxvalue) {
+ color_x = sin(2*M_PI*time);
color_y = 1;
- color_z = 0;
+ color_z = sin(2*M_PI*time);
}
else if(x > maxvalue * 0.75) {
color_x = 0.4 - (x-150)*0.02 * 0.4; //red value between 0.4 -> 0
color_y = 0;
color_z = 0;
}
+
+ blinkingamt = (1 - x/maxvalue/0.25);
+ if(blinkingamt > 0)
+ {
+ color_x = color_x - color_x * blinkingamt * sin(2*M_PI*time);
+ color_y = color_y - color_y * blinkingamt * sin(2*M_PI*time);
+ color_z = color_z - color_z * blinkingamt * sin(2*M_PI*time);
+ }
return color;
}
case WEP_HLAC: return 3;
case WEP_MINSTANEX: return 3;
case WEP_NEX: return 3;
- case WEP_SNIPERRIFLE: return 1;
+ case WEP_RIFLE: return 1;
case WEP_HAGAR: return 2;
case WEP_ROCKET_LAUNCHER: return 2;
case WEP_SEEKER: return 2;
float i, weapid, wpnalpha, weapon_cnt;
// TODO make this configurable
- if(weaponorder_bypriority != autocvar_cl_weaponpriority)
+ if(weaponorder_bypriority != autocvar_cl_weaponpriority || !weaponorder[0])
{
if(weaponorder_bypriority)
strunzone(weaponorder_bypriority);
drawpic_aspect_skin(myPos, "ammo_current_bg", mySize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
if(a > 0 && autocvar_hud_panel_ammo_progressbar)
- HUD_Panel_DrawProgressBar(myPos + eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, mySize - eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, autocvar_hud_panel_ammo_progressbar_name, 0, 0, a/autocvar_hud_panel_ammo_maxammo, color, autocvar_hud_progressbar_alpha * panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
+ HUD_Panel_DrawProgressBar(myPos + eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, mySize - eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, autocvar_hud_panel_ammo_progressbar_name, a/autocvar_hud_panel_ammo_maxammo, 0, 0, color, autocvar_hud_progressbar_alpha * panel_fg_alpha * alpha, DRAWFLAG_NORMAL);
if(autocvar_hud_panel_ammo_text)
{
// Health/armor (#3)
//
-float health_time, prev_health;
-float armor_time, prev_armor;
-var float saved_health = -2;
-var float saved_armor = -2;
+
+// prev_* vars contain the health/armor at the previous FRAME
+// set to -1 when player is dead or was not playing
+float prev_health, prev_armor;
+float health_damagetime, armor_damagetime;
+float health_beforedamage, armor_beforedamage;
+// old_p_* vars keep track of previous values when smoothing value changes of the progressbar
+float old_p_health, old_p_armor;
+float old_p_healthtime, old_p_armortime;
+// prev_p_* vars contain the health/armor progressbar value at the previous FRAME
+// set to -1 to forcedly stop effects when we switch spectated player (e.g. from playerX: 70h to playerY: 50h)
+float prev_p_health, prev_p_armor;
+
void HUD_HealthArmor(void)
{
float armor, health, fuel;
health = getstati(STAT_HEALTH);
if(health <= 0)
{
- health_time = -1;
+ prev_health = -1;
return;
}
- if (autocvar_hud_panel_healtharmor_progressbar_gfx)
- {
- if ( (prev_spectatee_status == -1 && spectatee_status > 0) //before observing, now spectating
- || (prev_spectatee_status > 0 && spectatee_status > 0 && prev_spectatee_status != spectatee_status) //changed spectated player
- )
- {
- //no effect
- saved_health = 0;
- saved_armor = 0;
- health_time = 0;
- armor_time = 0;
- }
- else if(prev_spectatee_status == -1 || (prev_spectatee_status > 0 && !spectatee_status)) //before spectating/observing, now playing
- health_time = -1;
+ armor = getstati(STAT_ARMOR);
- if (health_time == -1)
- {
- //start the load effect
- saved_health = -2;
- saved_armor = -2;
- health_time = time;
- armor_time = time;
- prev_health = 0;
- prev_armor = 0;
- }
+ // code to check for spectatee_status changes is in Ent_ClientData()
+ // prev_p_health and prev_health can be set to -1 there
+
+ if (prev_p_health == -1)
+ {
+ // no effect
+ health_beforedamage = 0;
+ armor_beforedamage = 0;
+ health_damagetime = 0;
+ armor_damagetime = 0;
+ prev_health = health;
+ prev_armor = armor;
+ old_p_health = health;
+ old_p_armor = armor;
+ prev_p_health = health;
+ prev_p_armor = armor;
+ }
+ else if (prev_health == -1)
+ {
+ //start the load effect
+ health_damagetime = 0;
+ armor_damagetime = 0;
+ prev_health = 0;
+ prev_armor = 0;
}
- armor = getstati(STAT_ARMOR);
fuel = getstati(STAT_FUEL);
}
else
pain_health_alpha = 1;
if (autocvar_hud_panel_healtharmor_progressbar_gfx)
{
- if (saved_health == -1)
+ if (autocvar_hud_panel_healtharmor_progressbar_gfx_smooth > 0)
{
- if (prev_health == 0 || prev_health - health >= 3)
+ if (fabs(prev_health - health) >= autocvar_hud_panel_healtharmor_progressbar_gfx_smooth)
+ {
+ if (time - old_p_healthtime < 1)
+ old_p_health = prev_p_health;
+ else
+ old_p_health = prev_health;
+ old_p_healthtime = time;
+ }
+ if (time - old_p_healthtime < 1)
{
- health_time = time;
- saved_health = prev_health;
+ p_health += (old_p_health - health) * (1 - (time - old_p_healthtime));
+ prev_p_health = p_health;
}
}
- if (saved_health != -1)
+ if (autocvar_hud_panel_healtharmor_progressbar_gfx_damage > 0)
{
- float d = time - health_time;
- if (d < 1)
+ if (prev_health - health >= autocvar_hud_panel_healtharmor_progressbar_gfx_damage)
{
- if (saved_health == -2)
- p_health *= sqrt(d);
- else
- {
- HUD_Panel_DrawProgressBar(pos + health_offset, mySize, autocvar_hud_panel_healtharmor_progressbar_health, saved_health/maxhealth, is_vertical, health_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * (1 - d * d), DRAWFLAG_NORMAL);
- if (prev_health - health >= 1) //refresh the effect if repeatedly damaged
- health_time = time;
- }
+ if (time - health_damagetime >= 1)
+ health_beforedamage = prev_health;
+ health_damagetime = time;
+ }
+ if (time - health_damagetime < 1)
+ {
+ float health_damagealpha = 1 - (time - health_damagetime)*(time - health_damagetime);
+ HUD_Panel_DrawProgressBar(pos + health_offset, mySize, autocvar_hud_panel_healtharmor_progressbar_health, health_beforedamage/maxhealth, is_vertical, health_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * health_damagealpha, DRAWFLAG_NORMAL);
}
- else
- saved_health = -1; //damage effect ended
}
prev_health = health;
- if (health <= 40 && saved_health != -2)
+ if (health <= autocvar_hud_panel_healtharmor_progressbar_gfx_lowhealth)
{
float BLINK_FACTOR = 0.15;
float BLINK_BASE = 0.85;
p_armor = armor;
if (autocvar_hud_panel_healtharmor_progressbar_gfx)
{
- if (saved_armor == -1)
+ if (autocvar_hud_panel_healtharmor_progressbar_gfx_smooth > 0)
{
- if (prev_armor == 0 || prev_armor - armor >= 3)
+ if (fabs(prev_armor - armor) >= autocvar_hud_panel_healtharmor_progressbar_gfx_smooth)
{
- armor_time = time;
- saved_armor = prev_armor;
+ if (time - old_p_armortime < 1)
+ old_p_armor = prev_p_armor;
+ else
+ old_p_armor = prev_armor;
+ old_p_armortime = time;
+ }
+ if (time - old_p_armortime < 1)
+ {
+ p_armor += (old_p_armor - armor) * (1 - (time - old_p_armortime));
+ prev_p_armor = p_armor;
}
}
- if (saved_armor != -1)
+ if (autocvar_hud_panel_healtharmor_progressbar_gfx_damage > 0)
{
- float d = time - armor_time;
- if (d < 1)
+ if (prev_armor - armor >= autocvar_hud_panel_healtharmor_progressbar_gfx_damage)
{
- if (saved_armor == -2)
- p_armor *= sqrt(d);
- else
- {
- HUD_Panel_DrawProgressBar(pos + armor_offset, mySize, autocvar_hud_panel_healtharmor_progressbar_armor, saved_armor/maxarmor, is_vertical, armor_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * (1 - d * d), DRAWFLAG_NORMAL);
- if (prev_armor - armor >= 1) //refresh the effect if repeatedly damaged
- armor_time = time;
- }
+ if (time - armor_damagetime >= 1)
+ armor_beforedamage = prev_armor;
+ armor_damagetime = time;
+ }
+ if (time - armor_damagetime < 1)
+ {
+ float armor_damagealpha = 1 - (time - armor_damagetime)*(time - armor_damagetime);
+ HUD_Panel_DrawProgressBar(pos + armor_offset, mySize, autocvar_hud_panel_healtharmor_progressbar_armor, armor_beforedamage/maxarmor, is_vertical, armor_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * armor_damagealpha, DRAWFLAG_NORMAL);
}
- else
- saved_armor = -1; //damage effect ended
}
prev_armor = armor;
}
} else if(msg == MSG_KILL) {
w = DEATH_WEAPONOF(type);
if(WEP_VALID(w)) {
- if((w == WEP_SNIPERRIFLE || w == WEP_MINSTANEX) && type & HITTYPE_HEADSHOT) // all headshot weapons go here
+ if((w == WEP_RIFLE || w == WEP_MINSTANEX) && type & HITTYPE_HEADSHOT) // all headshot weapons go here
HUD_KillNotify_Push(s1, s2, 1, DEATH_HEADSHOT);
else
HUD_KillNotify_Push(s1, s2, 1, type);
print (sprintf(_("%s^7 is a ^1BERSERKER!\n"), s1));
} else if(type == KILL_SPREE_25) {
if(gentle)
- print (sprintf(_("%s^7 made ^1TWENTY FIFE SCORES IN A ROW!\n"), s1));
+ print (sprintf(_("%s^7 made ^1TWENTY FIVE SCORES IN A ROW!\n"), s1));
else
print (sprintf(_("%s^7 inflicts ^1CARNAGE!\n"), s1));
} else if(type == KILL_SPREE_30) {
} else if(msg == MSG_KILL) {
if (type == KILL_TEAM_RED || type == KILL_TEAM_BLUE) {
if(gentle) {
- centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1Moron! You went against %s, a team mate!"), s1)));
+ centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1Moron! You went against ^7%s^1, a team mate!"), s1)));
} else {
- centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1Moron! You fragged %s, a team mate!"), s1)));
+ centerprint(strcat(DAMAGE_CENTERPRINT_SPACER, sprintf(_("^1Moron! You fragged ^7%s^1, a team mate!"), s1)));
}
} else if (type == KILL_FIRST_BLOOD) {
if(gentle) {
// Score (#7)
//
void HUD_UpdatePlayerTeams();
+void HUD_Score_Rankings(vector pos, vector mySize, entity me, float team_count)
+{
+ float score;
+ entity tm, pl;
+#define SCOREPANEL_MAX_ENTRIES 6
+#define SCOREPANEL_ASPECTRATIO 2
+ const float entries = bound(1, floor(SCOREPANEL_MAX_ENTRIES * mySize_y/mySize_x * SCOREPANEL_ASPECTRATIO), SCOREPANEL_MAX_ENTRIES);
+ const vector fontsize = '1 1 0' * (mySize_y/entries);
+
+ vector rgb, score_color;
+ rgb = '1 1 1';
+ score_color = '1 1 1';
+
+ const float name_size = mySize_x*0.75;
+ const float spacing_size = mySize_x*0.04;
+ const float highlight_alpha = 0.2;
+ float i, me_printed, first_pl;
+ string s;
+ i, first_pl = 0;
+ if (autocvar__hud_configure)
+ {
+ float players_per_team;
+ if (team_count)
+ {
+ // show team scores in the first line
+ float score_size = mySize_x / team_count;
+ players_per_team = max(2, ceil((entries - 1) / team_count));
+ for(i=0; i<team_count; ++i) {
+ if (i == floor((entries - 2) / players_per_team) || (entries == 1 && i == 0))
+ HUD_Panel_DrawHighlight(pos + eX * score_size * i, eX * score_size + eY * fontsize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawstring_aspect(pos + eX * score_size * i, ftos(175 - 23*i), eX * score_size + eY * fontsize_y, GetTeamRGB(ColorByTeam(i)) * 0.8, panel_fg_alpha, DRAWFLAG_NORMAL);
+ }
+ first_pl = 1;
+ pos_y += fontsize_y;
+ }
+ score = 10 + SCOREPANEL_MAX_ENTRIES * 3;
+ for (i=first_pl; i<entries; ++i)
+ {
+ //simulate my score is lower than all displayed players,
+ //so that I don't appear at all showing pure rankings.
+ //This is to better show the difference between the 2 ranking views
+ if (i == entries-1 && autocvar_hud_panel_score_rankings == 1)
+ {
+ rgb = '1 1 0';
+ drawfill(pos, eX * mySize_x + eY * fontsize_y, rgb, highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+ s = GetPlayerName(pl.sv_entnum);
+ score = 7;
+ }
+ else
+ {
+ s = sprintf(_("Player %d"), i + 1 - first_pl);
+ score -= 3;
+ }
+
+ if (team_count)
+ score_color = GetTeamRGB(ColorByTeam(floor((i - first_pl) / players_per_team))) * 0.8;
+ s = textShortenToWidth(s, name_size, fontsize, stringwidth_colors);
+ drawcolorcodedstring(pos + eX * (name_size - stringwidth(s, TRUE, fontsize)), s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawstring(pos + eX * (name_size + spacing_size), ftos(score), fontsize, score_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+ pos_y += fontsize_y;
+ }
+ return;
+ }
+
+ if (!scoreboard_fade_alpha) // the scoreboard too calls HUD_UpdatePlayerTeams
+ HUD_UpdatePlayerTeams();
+ if (team_count)
+ {
+ // show team scores in the first line
+ float score_size = mySize_x / team_count;
+ for(tm = teams.sort_next; tm; tm = tm.sort_next) {
+ if(tm.team == COLOR_SPECTATOR)
+ continue;
+ if (tm.team == myteam)
+ drawfill(pos + eX * score_size * i, eX * score_size + eY * fontsize_y, '1 1 1', highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawstring_aspect(pos + eX * score_size * i, ftos(tm.(teamscores[ts_primary])), eX * score_size + eY * fontsize_y, GetTeamRGB(tm.team) * 0.8, panel_fg_alpha, DRAWFLAG_NORMAL);
+ ++i;
+ }
+ first_pl = 1;
+ pos_y += fontsize_y;
+ tm = teams.sort_next;
+ }
+ i = first_pl;
+
+ do
+ for (pl = players.sort_next; pl && i<entries; pl = pl.sort_next)
+ {
+ if ((team_count && pl.team != tm.team) || pl.team == COLOR_SPECTATOR)
+ continue;
+
+ if (i == entries-1 && !me_printed && pl != me)
+ if (autocvar_hud_panel_score_rankings == 1 && spectatee_status != -1)
+ {
+ for (pl = me.sort_next; pl; pl = pl.sort_next)
+ if (pl.team != COLOR_SPECTATOR)
+ break;
+
+ if (pl)
+ rgb = '1 1 0'; //not last but not among the leading players: yellow
+ else
+ rgb = '1 0 0'; //last: red
+ pl = me;
+ }
+
+ if (pl == me)
+ {
+ if (i == first_pl)
+ rgb = '0 1 0'; //first: green
+ me_printed = 1;
+ drawfill(pos, eX * mySize_x + eY * fontsize_y, rgb, highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+ }
+ if (team_count)
+ score_color = GetTeamRGB(pl.team) * 0.8;
+ s = textShortenToWidth(GetPlayerName(pl.sv_entnum), name_size, fontsize, stringwidth_colors);
+ drawcolorcodedstring(pos + eX * (name_size - stringwidth(s, TRUE, fontsize)), s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
+ drawstring(pos + eX * (name_size + spacing_size), ftos(pl.(scores[ps_primary])), fontsize, score_color, panel_fg_alpha, DRAWFLAG_NORMAL);
+ pos_y += fontsize_y;
+ ++i;
+ }
+ while (i<entries && team_count && (tm = tm.sort_next) && (tm.team != COLOR_SPECTATOR || (tm = tm.sort_next)));
+}
+
void HUD_Score(void)
{
if(!autocvar__hud_configure)
} else if (!teamplay) { // non-teamgames
if ((spectatee_status == -1 && !autocvar__hud_configure) || autocvar_hud_panel_score_rankings)
{
-#define SCOREPANEL_MAX_ENTRIES 6
-#define SCOREPANEL_ASPECTRATIO 2
- const float entries = bound(1, floor(SCOREPANEL_MAX_ENTRIES * mySize_y/mySize_x * SCOREPANEL_ASPECTRATIO), SCOREPANEL_MAX_ENTRIES);
- const float height = mySize_y/entries;
- const vector fontsize = '0.9 0.9 0' * height;
- pos_y += height * (1 - 0.9) / 2;
-
- vector rgb;
- rgb = '1 1 1';
-
- const float name_size = mySize_x*0.75;
- const float highlight_alpha = 0.2;
- float i, me_printed;
- string s;
- if (autocvar__hud_configure)
- {
- score = 10 + SCOREPANEL_MAX_ENTRIES * 3;
- for (i=0; i<entries; ++i)
- {
- //simulate my score is lower than all displayed players,
- //so that I don't appear at all showing pure rankings.
- //This is to better show the difference between the 2 ranking views
- if (i == entries-1 && autocvar_hud_panel_score_rankings == 1)
- {
- rgb = '1 1 0';
- drawfill(pos - eY * (height * (1 - 0.9) / 2), eX * mySize_x + eY * height, rgb, highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
- s = GetPlayerName(pl.sv_entnum);
- score = 7;
- }
- else
- {
- s = sprintf(_("Player %d"), ftos(i+1));
- score -= 3;
- }
-
- s = textShortenToWidth(s, name_size, fontsize, stringwidth_colors);
- drawcolorcodedstring(pos + eX * (name_size - stringwidth(s, TRUE, fontsize)), s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
- drawstring(pos + eX * mySize_x*0.79, ftos(score), fontsize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
- pos_y += height;
- }
- return;
- }
-
- if (!scoreboard_fade_alpha) // the scoreboard too calls HUD_UpdatePlayerTeams
- HUD_UpdatePlayerTeams();
-
- for (pl = players.sort_next, i=0; pl && i<entries; pl = pl.sort_next, ++i)
- {
- if (pl.team == COLOR_SPECTATOR)
- continue;
-
- if (i == entries-1 && !me_printed && pl != me)
- if (autocvar_hud_panel_score_rankings == 1 && spectatee_status != -1)
- {
- for (pl = me.sort_next; pl; pl = pl.sort_next)
- if (pl.team != COLOR_SPECTATOR)
- break;
-
- if (pl)
- rgb = '1 1 0'; //not last but not among the leading players: yellow
- else
- rgb = '1 0 0'; //last: red
- pl = me;
- }
-
- if (pl == me)
- {
- if (i == 0)
- rgb = '0 1 0'; //first: green
- me_printed = 1;
- drawfill(pos - eY * (height * (1 - 0.9) / 2), eX * mySize_x + eY * height, rgb, highlight_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
- }
- s = textShortenToWidth(GetPlayerName(pl.sv_entnum), name_size, fontsize, stringwidth_colors);
- drawcolorcodedstring(pos + eX * (name_size - stringwidth(s, TRUE, fontsize)), s, fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
- drawstring(pos + eX * mySize_x*0.79, ftos(pl.(scores[ps_primary])), fontsize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
- pos_y += height;
- }
+ HUD_Score_Rankings(pos, mySize, me, 0);
return;
}
// me vector := [team/connected frags id]
drawstring_aspect(pos, ftos(score), eX * 0.75 * mySize_x + eY * mySize_y, distribution_color, panel_fg_alpha, DRAWFLAG_NORMAL);
drawstring_aspect(pos + eX * 0.75 * mySize_x, distribution_str, eX * 0.25 * mySize_x + eY * (1/3) * mySize_y, distribution_color, panel_fg_alpha, DRAWFLAG_NORMAL);
} else { // teamgames
- float max_fragcount;
- max_fragcount = -99;
-
float scores_count, row, column, rows, columns;
vector offset;
vector score_pos, score_size; //for scores other than myteam
- if (spectatee_status == -1)
+ if (spectatee_status == -1 || autocvar_hud_panel_score_rankings)
{
- if (autocvar__hud_configure)
- scores_count = 4;
- else for(tm = teams.sort_next; tm; tm = tm.sort_next) {
- if(tm.team == COLOR_SPECTATOR)
- continue;
+ for(tm = teams.sort_next; tm, tm.team != COLOR_SPECTATOR; tm = tm.sort_next)
++scores_count;
+ if (autocvar_hud_panel_score_rankings)
+ {
+ HUD_Score_Rankings(pos, mySize, me, scores_count);
+ return;
}
rows = mySize_y/mySize_x;
rows = bound(1, floor((sqrt(4 * (3/1) * rows * scores_count + rows * rows) + rows + 0.5) / 2), scores_count);
}
else
score_size = eX * mySize_x*(1/4) + eY * mySize_y*(1/3);
+
+ float max_fragcount;
+ max_fragcount = -99;
for(tm = teams.sort_next; tm; tm = tm.sort_next) {
if(tm.team == COLOR_SPECTATOR)
continue;
fontsize = '0.20 0.20 0' * mySize_y;
float a;
- if(spectatee_status != 0)
- a = 1;
- else
- a = panel_fg_alpha;
+ a = panel_fg_alpha;
string s;
if(!autocvar__hud_configure)
{
if(spectatee_status && !intermission)
{
+ a = 1;
if(spectatee_status == -1)
s = _("^1Observing");
else
}
else if(warmup_stage && !intermission && !spectatee_status)
{
- s = strcat("^2Press ^3%s^2 to end warmup", getcommandkey("ready", "ready"));
+ s = sprintf(_("^2Press ^3%s^2 to end warmup"), getcommandkey("ready", "ready"));
drawInfoMessage(s)
}
//
vector acc_prevspeed;
float acc_prevtime, acc_avg, top_speed, top_speed_time;
-
void HUD_Physics(void)
{
if(!autocvar__hud_configure)
HUD_Panel_GetProgressBarColor(acceleration_neg);
else
HUD_Panel_GetProgressBarColor(acceleration);
- HUD_Panel_DrawProgressBar(panel_pos + acceleration_offset, panel_size, "progressbar", acceleration/autocvar_hud_panel_physics_acceleration_max, 0, acceleration_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
+ HUD_Panel_DrawProgressBar(panel_pos + acceleration_offset, panel_size, "accelbar", acceleration/autocvar_hud_panel_physics_acceleration_max, 0, acceleration_baralign, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL);
}
if (autocvar_hud_panel_physics_text == 1 || autocvar_hud_panel_physics_text == 3)
drawstring_aspect(panel_pos + acceleration_offset, strcat(ftos_decimals(acceleration, 2), "g"), panel_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
hud_fade_alpha = (1 - scoreboard_fade_alpha);
if(intermission == 2) // no hud during mapvote
+ {
+ if (autocvar__hud_configure) //force exit from hud config
+ {
+ if (menu_enabled)
+ {
+ menu_enabled = 0;
+ localcmd("togglemenu\n");
+ }
+ cvar_set("_hud_configure", "0");
+ }
hud_fade_alpha = 0;
+ }
else if(autocvar__menu_alpha == 0 && scoreboard_fade_alpha == 0)
hud_fade_alpha = 1;