X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fhud.qc;h=820cca4748f6a951a5e902a9302d5fadee623a42;hb=da5fa04e4df8e91dd6b9bf7960ca47c860c58a64;hp=f77f1c1c1af2b1009147f2f7a27978126c2fc580;hpb=d822e9e15e991a67e09e68f50a61cff487502328;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index f77f1c1c1..820cca474 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -14,7 +14,12 @@ Misc HUD functions // 1/4 height: bottom part void draw_BorderPicture(vector theOrigin, string pic, vector theSize, vector theColor, float theAlpha, vector theBorderSize) { - if (theBorderSize_x <= 0 && theBorderSize_y <= 0) // no border + if (theBorderSize_x < 0 && theBorderSize_y < 0) // draw whole image as it is + { + drawpic(theOrigin, pic, theSize, theColor, theAlpha, 0); + return; + } + if (theBorderSize_x == 0 && theBorderSize_y == 0) // no border { // draw only the central part drawsubpic(theOrigin, theSize, pic, '0.25 0.25 0', '0.5 0.5 0', theColor, theAlpha, 0); @@ -497,12 +502,17 @@ void HUD_Panel_ExportCfg(string cfgname) HUD_Write_PanelCvar_q("_iconalign"); HUD_Write_PanelCvar_q("_baralign"); HUD_Write_PanelCvar_q("_progressbar"); + HUD_Write_PanelCvar_q("_progressbar_strength"); + HUD_Write_PanelCvar_q("_progressbar_shield"); break; case HUD_PANEL_HEALTHARMOR: HUD_Write_PanelCvar_q("_flip"); HUD_Write_PanelCvar_q("_iconalign"); HUD_Write_PanelCvar_q("_baralign"); HUD_Write_PanelCvar_q("_progressbar"); + HUD_Write_PanelCvar_q("_progressbar_health"); + HUD_Write_PanelCvar_q("_progressbar_armor"); + HUD_Write_PanelCvar_q("_text"); break; case HUD_PANEL_NOTIFY: HUD_Write_PanelCvar_q("_flip"); @@ -553,31 +563,37 @@ if(highlightedPanel_prev == active_panel && autocvar__hud_configure)\ HUD_Panel_HlBorder(panel_bg_border + 1.5 * hlBorderSize, '0 0.5 1', 0.25 * (1 - autocvar__menu_alpha) * alpha);\ } ENDS_WITH_CURLY_BRACE -void HUD_Panel_DrawProgressBar(vector pos, float vertical, vector mySize, vector color, float alpha, float drawflag) +void HUD_Panel_DrawProgressBar(vector pos, vector mySize, string pic, float vertical, float barflip, float x, vector color, float alpha, float drawflag) { - if(!alpha) + if(!alpha || x == 0) return; - string pic; + x = bound(0, x, 1); + if(vertical) { - pic = strcat(hud_skin_path, "/statusbar_vertical"); + pic = strcat(hud_skin_path, "/", pic, "_vertical"); if(precache_pic(pic) == "") { pic = "gfx/hud/default/statusbar_vertical"; } - drawsubpic(pos, eY * min(mySize_y * 0.5, mySize_x) + eX * mySize_x, pic, '0 0 0', '1 0.25 0', color, alpha, drawflag); - if(mySize_y/mySize_x > 2) - drawsubpic(pos + eY * mySize_x, eY * (mySize_y - 2 * mySize_x) + eX * mySize_x, pic, '0 0.25 0', '1 0.5 0', color, alpha, drawflag); - drawsubpic(pos + eY * mySize_y - eY * min(mySize_y * 0.5, mySize_x), eY * min(mySize_y * 0.5, mySize_x) + eX * mySize_x, pic, '0 0.75 0', '1 0.25 0', color, alpha, drawflag); + + if(barflip) + drawsetcliparea(pos_x, pos_y + mySize_y * (1 - x), mySize_x, mySize_y * x); + else + drawsetcliparea(pos_x, pos_y, mySize_x, mySize_y * x); } else { - pic = strcat(hud_skin_path, "/statusbar"); + pic = strcat(hud_skin_path, "/", pic); if(precache_pic(pic) == "") { pic = "gfx/hud/default/statusbar"; } - drawsubpic(pos, eX * min(mySize_x * 0.5, mySize_y) + eY * mySize_y, pic, '0 0 0', '0.25 1 0', color, alpha, drawflag); - if(mySize_x/mySize_y > 2) - drawsubpic(pos + eX * mySize_y, eX * (mySize_x - 2 * mySize_y) + eY * mySize_y, pic, '0.25 0 0', '0.5 1 0', color, alpha, drawflag); - drawsubpic(pos + eX * mySize_x - eX * min(mySize_x * 0.5, mySize_y), eX * min(mySize_x * 0.5, mySize_y) + eY * mySize_y, pic, '0.75 0 0', '0.25 1 0', color, alpha, drawflag); + + if(barflip) + drawsetcliparea(pos_x + mySize_x * (1 - x), pos_y, mySize_x * x, mySize_y); + else + drawsetcliparea(pos_x, pos_y, mySize_x * x, mySize_y); } + + drawpic(pos, pic, mySize, color, alpha, drawflag); + drawresetcliparea(); } void HUD_Panel_DrawHighlight(vector pos, vector mySize, vector color, float alpha, float drawflag) @@ -1692,18 +1708,10 @@ void HUD_Weapons(void) } float show_accuracy; - float weapon_stats, weapon_number; + float weapon_stats; if(cvar("hud_panel_weapons_accuracy") && acc_levels) { show_accuracy = true; - // hits - weapon_stats = getstati(STAT_DAMAGE_HITS); - weapon_number = weapon_stats & 63; - weapon_hits[weapon_number-WEP_FIRST] = floor(weapon_stats / 64); - // fired - weapon_stats = getstati(STAT_DAMAGE_FIRED); - weapon_number = weapon_stats & 63; - weapon_fired[weapon_number-WEP_FIRST] = floor(weapon_stats / 64); if (acc_col_x[0] == -1) for (i = 0; i < acc_levels; ++i) acc_col[i] = stov(cvar_string(strcat("accuracy_color", ftos(i)))); @@ -1726,13 +1734,9 @@ void HUD_Weapons(void) // draw the weapon accuracy if(show_accuracy) { - float weapon_hit, weapon_damage; - weapon_damage = weapon_fired[self.weapon-WEP_FIRST]; - if(weapon_damage) + weapon_stats = weapon_accuracy[self.weapon-WEP_FIRST]; + if(weapon_stats >= 0) { - weapon_hit = weapon_hits[self.weapon-WEP_FIRST]; - weapon_stats = floor(100 * weapon_hit / weapon_damage); - // find the max level lower than weapon_stats float j; j = acc_levels-1; @@ -2111,47 +2115,54 @@ void HUD_Powerups(void) { vector numpos; string leftname, rightname; + string leftprogressname, rightprogressname; float leftcnt, rightcnt; float leftexact, rightexact; float flip = cvar("hud_panel_powerups_flip"); if (flip) { leftname = "strength"; + leftprogressname = cvar_string("hud_panel_powerups_progressbar_strength"); leftcnt = ceil(strength_time); leftexact = strength_time; rightname = "shield"; + rightprogressname = cvar_string("hud_panel_powerups_progressbar_shield"); rightcnt = ceil(shield_time); rightexact = shield_time; } else { leftname = "shield"; + leftprogressname = cvar_string("hud_panel_powerups_progressbar_shield"); leftcnt = ceil(shield_time); leftexact = shield_time; rightname = "strength"; + rightprogressname = cvar_string("hud_panel_powerups_progressbar_strength"); rightcnt = ceil(strength_time); rightexact = strength_time; } drawfont = hud_bigfont; float baralign = cvar("hud_panel_powerups_baralign"); + float barflip; float iconalign = cvar("hud_panel_powerups_iconalign"); float progressbar = cvar("hud_panel_powerups_progressbar"); if (mySize_x/mySize_y > 4) { + barsize = eX * 0.5 * mySize_x + eY * mySize_y; if(leftcnt) { if(baralign == 1 || baralign == 3) { // right align - barpos = pos + eX * 0.5 * mySize_x - eX * 0.5 * mySize_x * min(1, leftcnt/30); - barsize = eX * 0.5 * mySize_x * min(1, leftcnt/30) + eY * mySize_y; + barpos = pos + eX * 0.5 * mySize_x; + barflip = 1; } else { // left align - barpos = pos; - barsize = eX * 0.5 * mySize_x * min(1, leftcnt/30) + eY * mySize_y; + barpos = pos; + barflip = 0; } if(progressbar) { HUD_Panel_GetProgressBarColorForString(leftname); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 0, barflip, min(1, leftcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); } if(leftcnt > 1) DrawNumIcon(iconalign, pos, eX * 0.5 * mySize_x + eY * mySize_y, leftcnt, leftname, 1, '1 1 1', 1); @@ -2162,17 +2173,17 @@ void HUD_Powerups(void) { if(rightcnt) { if(baralign == 0 || baralign == 3) { // left align - barpos = pos + eX * 0.5 * mySize_x; - barsize = eX * 0.5 * mySize_x * min(1, rightcnt/30) + eY * mySize_y; + barpos = pos; + barflip = 0; } else { // right align - barpos = pos + eX * mySize_x - eX * 0.5 * mySize_x * min(1, rightcnt/30); - barsize = eX * 0.5 * mySize_x * min(1, rightcnt/30) + eY * mySize_y; + barpos = pos + eX * 0.5 * mySize_x; + barflip = 1; } if(progressbar) { HUD_Panel_GetProgressBarColorForString(rightname); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 0, barflip, min(1, rightcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); } if(rightcnt > 1) DrawNumIcon(iconalign, pos + eX * 0.5 * mySize_x, eX * 0.5 * mySize_x + eY * mySize_y, rightcnt, rightname, 0, '1 1 1', 1); @@ -2182,20 +2193,20 @@ void HUD_Powerups(void) { } else if (mySize_x/mySize_y > 1.5) { + barsize = eX * mySize_x + eY * 0.5 * mySize_y; if(leftcnt) { - if(baralign == 1 || baralign == 3) { // right align - barpos = pos + eX * mySize_x - eX * mySize_x * min(1, leftcnt/30); - barsize = eX * mySize_x * min(1, leftcnt/30) + eY * 0.5 * mySize_y; - } else { // left align - barpos = pos; - barsize = eX * mySize_x * min(1, leftcnt/30) + eY * 0.5 * mySize_y; + barpos = pos; + if(baralign == 1 || baralign == 3) { // right/down align + barflip = 1; + } else { // left/up align + barflip = 0; } if(progressbar) { HUD_Panel_GetProgressBarColorForString(leftname); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 0, barflip, min(1, leftcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); } if(leftcnt > 1) DrawNumIcon(iconalign, pos, eX * mySize_x + eY * 0.5 * mySize_y, leftcnt, leftname, 1, '1 1 1', 1); @@ -2205,18 +2216,17 @@ void HUD_Powerups(void) { if(rightcnt) { + barpos = pos + eY * 0.5 * mySize_y; if(baralign == 0 || baralign == 3) { // left align - barpos = pos + eY * 0.5 * mySize_y; - barsize = eX * mySize_x * min(1, rightcnt/30) + eY * 0.5 * mySize_y; + barflip = 0; } else { // right align - barpos = pos + eX * mySize_x - eX * mySize_x * min(1, rightcnt/30) + eY * 0.5 * mySize_y; - barsize = eX * mySize_x * min(1, rightcnt/30) + eY * 0.5 * mySize_y; + barflip = 1; } if(progressbar) { HUD_Panel_GetProgressBarColorForString(rightname); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 0, barflip, min(1, rightcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); } if(rightcnt > 1) DrawNumIcon(iconalign, pos + eY * 0.5 * mySize_y, eX * mySize_x + eY * 0.5 * mySize_y, rightcnt, rightname, 0, '1 1 1', 1); @@ -2226,14 +2236,14 @@ void HUD_Powerups(void) { } else { + barsize = eX * 0.5 * mySize_x + eY * mySize_y; if(leftcnt) { + barpos = pos; if(baralign == 1 || baralign == 3) { // down align - barpos = pos + eY * mySize_y - eY * mySize_y * min(1, leftcnt/30); - barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, leftcnt/30); + barflip = 1; } else { // up align - barpos = pos; - barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, leftcnt/30); + barflip = 0; } if(iconalign == 1 || iconalign == 3) { // down align @@ -2247,7 +2257,7 @@ void HUD_Powerups(void) { if(progressbar) { HUD_Panel_GetProgressBarColorForString(leftname); - HUD_Panel_DrawProgressBar(barpos, 1, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 1, barflip, min(1, leftcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); } if(leftcnt <= 5) drawpic_aspect_skin_expanding(picpos, leftname, '0.4 0.4 0' * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, bound(0, (leftcnt - leftexact) / 0.5, 1)); @@ -2258,12 +2268,11 @@ void HUD_Powerups(void) { if(rightcnt) { - if(baralign == 0 || baralign == 3) { // up align - barpos = pos + eX * 0.5 * mySize_x; - barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, rightcnt/30); - } else { // down align - barpos = pos + eY * mySize_y - eY * mySize_y * min(1, rightcnt/30) + eX * 0.5 * mySize_x; - barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, rightcnt/30); + barpos = pos + eX * 0.5 * mySize_x; + if(baralign == 0 || baralign == 3) { // down align + barflip = 1; + } else { // up align + barflip = 0; } if(iconalign == 0 || iconalign == 3) { // up align @@ -2277,7 +2286,7 @@ void HUD_Powerups(void) { if(progressbar) { HUD_Panel_GetProgressBarColorForString(rightname); - HUD_Panel_DrawProgressBar(barpos, 1, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 1, barflip, min(1, rightcnt/30), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * bound(0, max(strength_time, shield_time), 1), DRAWFLAG_NORMAL); } if(rightcnt <= 5) drawpic_aspect_skin_expanding(picpos, rightname, '0.4 0.4 0' * mySize_x, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL, bound(0, (rightcnt - rightexact) / 0.5, 1)); @@ -2316,9 +2325,9 @@ void HUD_HealthArmor(void) if(autocvar__hud_configure) { - armor = 150; - health = 100; - fuel = 70; + armor = 75; + health = 150; + fuel = 20; } if(health <= 0) @@ -2332,6 +2341,9 @@ void HUD_HealthArmor(void) float baralign = cvar("hud_panel_healtharmor_baralign"); float iconalign = cvar("hud_panel_healtharmor_iconalign"); float progressbar = cvar("hud_panel_healtharmor_progressbar"); + + float maxhealth = cvar("hud_panel_healtharmor_maxhealth"); + float maxarmor = cvar("hud_panel_healtharmor_maxarmor"); if(autocvar_hud_panel_healtharmor == 2) // combined health and armor display { vector v; @@ -2340,13 +2352,10 @@ void HUD_HealthArmor(void) float x; x = floor(v_x + 1); - if(baralign == 1 || baralign == 3) { // right align - barpos = pos + eX * mySize_x - eX * mySize_x * min(1, x/400); - barsize = eX * mySize_x * min(1, x/400) + eY * mySize_y; - } else { // left align - barpos = pos; - barsize = eX * mySize_x * min(1, x/400) + eY * mySize_y; - } + float maxtotal = maxhealth + maxarmor; + + barpos = pos; + barsize = mySize; string biggercount; if(v_z) // NOT fully armored @@ -2355,9 +2364,10 @@ void HUD_HealthArmor(void) if(progressbar) { HUD_Panel_GetProgressBarColor(health); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, cvar_string("hud_panel_healtharmor_progressbar_health"), 0, mod(baralign, 2), x/maxtotal, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); } if(armor) + if(cvar("hud_panel_healtharmor_text")) drawpic_aspect_skin(pos + eX * mySize_x - eX * 0.5 * mySize_y, "armor", '0.5 0.5 0' * mySize_y, '1 1 1', panel_fg_alpha * armor / health, DRAWFLAG_NORMAL); } else @@ -2366,170 +2376,169 @@ void HUD_HealthArmor(void) if(progressbar) { HUD_Panel_GetProgressBarColor(armor); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, cvar_string("hud_panel_healtharmor_progressbar_armor"), 0, mod(baralign, 2), x/maxtotal, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); } if(health) + if(cvar("hud_panel_healtharmor_text")) drawpic_aspect_skin(pos + eX * mySize_x - eX * 0.5 * mySize_y, "health", '0.5 0.5 0' * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); } - DrawNumIcon(iconalign, pos, mySize, x, biggercount, 1, HUD_Get_Num_Color(x, 2 * 200), 1); + DrawNumIcon(iconalign, pos, mySize, x, biggercount, 1, HUD_Get_Num_Color(x, maxtotal), 1); // fuel if(fuel) { - if(baralign == 0 || baralign == 3) { // left align - barpos = pos + eX * mySize_x - eX * mySize_x * min(1, fuel/100); - barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.2 * mySize_y; - } else { - barpos = pos; - barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.2 * mySize_y; - } + barpos = pos; + barsize = eX * mySize_x + eY * 0.2 * mySize_y; HUD_Panel_GetProgressBarColor(fuel); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, panel_fg_alpha * 0.8, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, "progressbar", 0, mod(baralign, 2), min(1, fuel/100), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * 0.8, DRAWFLAG_NORMAL); } } else { string leftname, rightname; + string leftprogressname, rightprogressname; float leftcnt, rightcnt; + float leftmax, rightmax; float leftactive, rightactive; float leftalpha, rightalpha; float flip = cvar("hud_panel_healtharmor_flip"); + float barflip; if (flip) { // old style layout with armor left/top of health leftname = "armor"; + leftprogressname = cvar_string("hud_panel_healtharmor_progressbar_armor"); leftcnt = armor; if(leftcnt) leftactive = 1; leftalpha = min((armor+10)/55, 1); + leftmax = maxarmor; rightname = "health"; + rightprogressname = cvar_string("hud_panel_healtharmor_progressbar_health"); rightcnt = health; rightactive = 1; rightalpha = 1; + rightmax = maxhealth; } else { leftname = "health"; + leftprogressname = cvar_string("hud_panel_healtharmor_progressbar_health"); leftcnt = health; leftactive = 1; leftalpha = 1; + leftmax = maxhealth; rightname = "armor"; + rightprogressname = cvar_string("hud_panel_healtharmor_progressbar_armor"); rightcnt = armor; if(rightcnt) rightactive = 1; rightalpha = min((armor+10)/55, 1); + rightmax = maxarmor; } if (mySize_x/mySize_y > 4) { + barsize = eX * 0.5 * mySize_x + eY * mySize_y; if(leftactive) { + barpos = pos; if(baralign == 1 || baralign == 3) { // right align - barpos = pos + eX * 0.5 * mySize_x - eX * 0.5 * mySize_x * min(1, leftcnt/200); - barsize = eX * 0.5 * mySize_x * min(1, leftcnt/200) + eY * mySize_y; + barflip = 1; } else { // left align - barpos = pos; - barsize = eX * 0.5 * mySize_x * min(1, leftcnt/200) + eY * mySize_y; + barflip = 0; } if(progressbar) { HUD_Panel_GetProgressBarColorForString(leftname); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 0, barflip, min(1, leftcnt/leftmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); } - DrawNumIcon(iconalign, pos, eX * 0.5 * mySize_x + eY * mySize_y, leftcnt, leftname, 1, HUD_Get_Num_Color(leftcnt, 200), 1); + if(cvar("hud_panel_healtharmor_text")) + DrawNumIcon(iconalign, pos, eX * 0.5 * mySize_x + eY * mySize_y, leftcnt, leftname, 1, HUD_Get_Num_Color(leftcnt, leftmax), 1); } if(rightactive) { + barpos = pos + eX * 0.5 * mySize_x; if(baralign == 0 || baralign == 3) { // left align - barpos = pos + eX * 0.5 * mySize_x; - barsize = eX * 0.5 * mySize_x * min(1, rightcnt/200) + eY * mySize_y; + barflip = 0; } else { // right align - barpos = pos + eX * mySize_x - eX * 0.5 * mySize_x * min(1, rightcnt/200); - barsize = eX * 0.5 * mySize_x * min(1, rightcnt/200) + eY * mySize_y; + barflip = 1; } if(progressbar) { HUD_Panel_GetProgressBarColorForString(rightname); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 0, barflip, min(1, rightcnt/rightmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); } - DrawNumIcon(iconalign, pos + eX * 0.5 * mySize_x, eX * 0.5 * mySize_x + eY * mySize_y, rightcnt, rightname, 0, HUD_Get_Num_Color(rightcnt, 200), 1); + if(cvar("hud_panel_healtharmor_text")) + DrawNumIcon(iconalign, pos + eX * 0.5 * mySize_x, eX * 0.5 * mySize_x + eY * mySize_y, rightcnt, rightname, 0, HUD_Get_Num_Color(rightcnt, rightmax), 1); } if(fuel) { - if(baralign == 0 || baralign == 3) { // left align - barpos = pos + eX * mySize_x - eX * mySize_x * min(1, fuel/100); - barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.2 * mySize_y; - } else { - barpos = pos; - barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.2 * mySize_y; - } - HUD_Panel_GetProgressBarColor(fuel); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, panel_fg_alpha * 0.8, DRAWFLAG_NORMAL); + barpos = pos; + barsize = eX * mySize_x + eY * 0.2 * mySize_y; + HUD_Panel_GetProgressBarColor(fuel); + HUD_Panel_DrawProgressBar(barpos, barsize, "progressbar", 0, mod(baralign, 2), min(1, fuel/100), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * 0.8, DRAWFLAG_NORMAL); } } else if (mySize_x/mySize_y > 1.5) { + barsize = eX * mySize_x + eY * 0.5 * mySize_y; if(leftactive) { + barpos = pos; if(baralign == 1 || baralign == 3) { // right align - barpos = pos + eX * mySize_x - eX * mySize_x * min(1, leftcnt/200); - barsize = eX * mySize_x * min(1, leftcnt/200) + eY * 0.5 * mySize_y; + barflip = 1; } else { // left align - barpos = pos; - barsize = eX * mySize_x * min(1, leftcnt/200) + eY * 0.5 * mySize_y; + barflip = 0; } if(progressbar) { HUD_Panel_GetProgressBarColorForString(leftname); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 0, barflip, min(1, leftcnt/leftmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); } - DrawNumIcon(iconalign, pos, eX * mySize_x + eY * 0.5 * mySize_y, leftcnt, leftname, 1, HUD_Get_Num_Color(leftcnt, 200), 1); + if(cvar("hud_panel_healtharmor_text")) + DrawNumIcon(iconalign, pos, eX * mySize_x + eY * 0.5 * mySize_y, leftcnt, leftname, 1, HUD_Get_Num_Color(leftcnt, leftmax), 1); } if(rightactive) { + barpos = pos + eY * 0.5 * mySize_y; if(baralign == 0 || baralign == 3) { // left align - barpos = pos + eY * 0.5 * mySize_y; - barsize = eX * mySize_x * min(1, rightcnt/200) + eY * 0.5 * mySize_y; + barflip = 0; } else { // right align - barpos = pos + eX * mySize_x - eX * mySize_x * min(1, rightcnt/200) + eY * 0.5 * mySize_y; - barsize = eX * mySize_x * min(1, rightcnt/200) + eY * 0.5 * mySize_y; + barflip = 1; } if(progressbar) { HUD_Panel_GetProgressBarColorForString(rightname); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 0, barflip, min(1, rightcnt/rightmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); } - DrawNumIcon(iconalign, pos + eY * 0.5 * mySize_y, eX * mySize_x + eY * 0.5 * mySize_y, rightcnt, rightname, 0, HUD_Get_Num_Color(rightcnt, 200), 1); + if(cvar("hud_panel_healtharmor_text")) + DrawNumIcon(iconalign, pos + eY * 0.5 * mySize_y, eX * mySize_x + eY * 0.5 * mySize_y, rightcnt, rightname, 0, HUD_Get_Num_Color(rightcnt, rightmax), 1); } if(fuel) { - if(baralign == 0 || baralign == 3) { // left align - barpos = pos + eX * mySize_x - eX * mySize_x * min(1, fuel/100); - barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.1 * mySize_y; - } else { - barpos = pos; - barsize = eX * mySize_x * min(1, fuel/100) + eY * 0.1 * mySize_y; - } - HUD_Panel_GetProgressBarColor(fuel); - HUD_Panel_DrawProgressBar(barpos, 0, barsize, progressbar_color, panel_fg_alpha * 0.8, DRAWFLAG_NORMAL); + barpos = pos; + barsize = eX * mySize_x + eY * 0.2 * mySize_y; + HUD_Panel_GetProgressBarColor(fuel); + HUD_Panel_DrawProgressBar(barpos, barsize, "progressbar", 0, mod(baralign, 2), min(1, fuel/100), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * 0.8, DRAWFLAG_NORMAL); } } else { + barsize = eX * 0.5 * mySize_x + eY * mySize_y; if(leftactive) { - if(baralign == 1 || baralign == 3) { // down align - barpos = pos + eY * mySize_y - eY * mySize_y * min(1, leftcnt/200); - barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, leftcnt/200); - } else { // up align - barpos = pos; - barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, leftcnt/200); + barpos = pos; + if(baralign == 1 || baralign == 3) { // right align + barflip = 1; + } else { // left align + barflip = 0; } if(iconalign == 1 || iconalign == 3) { // down align @@ -2543,20 +2552,19 @@ void HUD_HealthArmor(void) if(progressbar) { HUD_Panel_GetProgressBarColorForString(leftname); - HUD_Panel_DrawProgressBar(barpos, 1, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, leftprogressname, 1, barflip, min(1, leftcnt/leftmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); } drawpic_aspect_skin(picpos, leftname, '0.4 0.4 0' * mySize_x, '1 1 1', leftalpha * panel_fg_alpha, DRAWFLAG_NORMAL); - drawstring_aspect(numpos, ftos(leftcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, HUD_Get_Num_Color(leftcnt, 200), panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring_aspect(numpos, ftos(leftcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, HUD_Get_Num_Color(leftcnt, leftmax), panel_fg_alpha, DRAWFLAG_NORMAL); } if(rightactive) { - if(baralign == 0 || baralign == 3) { // up align - barpos = pos + eX * 0.5 * mySize_x; - barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, rightcnt/200); - } else { // down align - barpos = pos + eY * mySize_y - eY * mySize_y * min(1, rightcnt/200) + eX * 0.5 * mySize_x; - barsize = eX * 0.5 * mySize_x + eY * mySize_y * min(1, rightcnt/200); + barpos = pos + eX * 0.5 * mySize_x; + if(baralign == 0 || baralign == 3) { // left align + barflip = 0; + } else { // right align + barflip = 1; } if(iconalign == 0 || iconalign == 3) { // up align @@ -2570,23 +2578,18 @@ void HUD_HealthArmor(void) if(progressbar) { HUD_Panel_GetProgressBarColorForString(rightname); - HUD_Panel_DrawProgressBar(barpos, 1, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(barpos, barsize, rightprogressname, 1, barflip, min(1, rightcnt/rightmax), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); } drawpic_aspect_skin(picpos, rightname, '0.4 0.4 0' * mySize_x, '1 1 1', rightalpha * panel_fg_alpha, DRAWFLAG_NORMAL); - drawstring_aspect(numpos, ftos(rightcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, HUD_Get_Num_Color(rightcnt, 200), panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring_aspect(numpos, ftos(rightcnt), eX * 0.5 * mySize_x + eY * 0.25 * mySize_x, HUD_Get_Num_Color(rightcnt, rightmax), panel_fg_alpha, DRAWFLAG_NORMAL); } if(fuel) { - if(baralign == 0 || baralign == 3) { // left align - barpos = pos; - barsize = eX * 0.05 * mySize_x + eY * mySize_y * min(1, fuel/100); - } else { - barpos = pos + eY * mySize_y - eY * mySize_y * min(1, fuel/100); - barsize = eX * 0.05 * mySize_x + eY * mySize_y * min(1, fuel/100); - } - HUD_Panel_GetProgressBarColor(fuel); - HUD_Panel_DrawProgressBar(barpos, 1, barsize, progressbar_color, panel_fg_alpha * 0.8, DRAWFLAG_NORMAL); + barpos = pos; + barsize = eX * 0.05 * mySize_x + eY * mySize_y; + HUD_Panel_GetProgressBarColor(fuel); + HUD_Panel_DrawProgressBar(barpos, barsize, "progressbar", 1, mod(baralign, 2), min(1, fuel/100), progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha * 0.8, DRAWFLAG_NORMAL); } } } @@ -4338,20 +4341,17 @@ void HUD_Mod_NexBall(vector pos, vector mySize) p = 2 - p; //Draw the filling - vector barsize; float vertical; if(mySize_x > mySize_y) { - barsize = eX * p * mySize_x + eY * mySize_y; vertical = 0; } else { - barsize = eX * mySize_x + eY * p * mySize_y; vertical = 1; } HUD_Panel_GetProgressBarColor(nexball); - HUD_Panel_DrawProgressBar(pos, vertical, barsize, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(pos, mySize, "statusbar", vertical, 0, p, progressbar_color, autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); } if (stat_items & IT_KEY1) @@ -5026,9 +5026,9 @@ void HUD_ShowAcceleration(void) } if (acceleration > 0) - HUD_Panel_DrawProgressBar(pos, 0, acceleration * scale * '40 0 0' + sz * eY, rgb, alpha * autocvar_hud_panel_fg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(pos, eX * (vid_conwidth - pos_x) + eY * sz, "statusbar", 0, 0, acceleration * scale, rgb, alpha * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); else - HUD_Panel_DrawProgressBar(pos + acceleration * scale * '40 0 0', 0, -acceleration * scale * '40 0 0' + sz * eY, rgb, alpha * autocvar_hud_panel_fg_alpha * hud_fade_alpha, DRAWFLAG_NORMAL); + HUD_Panel_DrawProgressBar(eY * pos_y, eX * pos_x + eY * sz, "statusbar", 0, 1, -acceleration * scale, rgb, alpha * autocvar_hud_progressbar_alpha * panel_fg_alpha, DRAWFLAG_NORMAL); } void HUD_Reset (void)