From: Severin Meyer Date: Sun, 18 Jan 2015 23:06:30 +0000 (+0100) Subject: Refactor the DrawAmmoItem() function: remove redundant and unnecessary code, use... X-Git-Tag: xonotic-v0.8.1~156^2~5 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=41d96d02eef39e1a659c2ac92209e0309b5a44ff;p=xonotic%2Fxonotic-data.pk3dir.git Refactor the DrawAmmoItem() function: remove redundant and unnecessary code, use consistent variable names, calculate colors and alpha in one place --- diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index 8a9aab304..f9f35740b 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -879,74 +879,67 @@ void DrawAmmoNades(vector myPos, vector mySize, float draw_expanding, float expa } } -void DrawAmmoItem(vector myPos, vector mySize, .float ammotype, float currently_selected, float infinite_ammo) +void DrawAmmoItem(vector myPos, vector mySize, .float ammoType, float isCurrent, float isInfinite) { - float a = 0; - if(ammotype != ammo_none) - { - if(autocvar__hud_configure) - { - currently_selected = (ammotype == ammo_rockets); //rockets always selected - a = 60; - } - else - { - // how much ammo do we have of this ammotype? - a = getstati(GetAmmoStat(ammotype)); - } - } - else - { - #if 0 - infinite_ammo = TRUE; - #else - return; // just don't draw infinite ammo at all. - #endif - } + if(ammoType == ammo_none) + return; - vector color; - if(infinite_ammo) - color = '0 0.5 0.75'; - else if(a < 10) - color = '0.7 0 0'; - else - color = '1 1 1'; + // Initialize variables - float theAlpha; - if(currently_selected) - theAlpha = 1; + float ammo; + if(autocvar__hud_configure) + { + isCurrent = (ammoType == ammo_rockets); // Rockets always current + ammo = 60; + } else - theAlpha = 0.7; + ammo = getstati(GetAmmoStat(ammoType)); - vector picpos, numpos; + vector iconPos, textPos; if(autocvar_hud_panel_ammo_iconalign) { - numpos = myPos; - picpos = myPos + eX * 2 * mySize_y; + iconPos = myPos + eX * 2 * mySize_y; + textPos = myPos; } else { - numpos = myPos + eX * mySize_y; - picpos = myPos; + iconPos = myPos; + textPos = myPos + eX * mySize_y; } - if(currently_selected) + float isShadowed = (ammo <= 0 && !isInfinite); + + vector iconColor = isShadowed ? '0 0 0' : '1 1 1'; + vector textColor; + if(isInfinite) + textColor = '0 0.5 0.75'; + else if(isShadowed) + textColor = '0 0 0'; + else if(ammo < 10) + textColor = '0.7 0 0'; + else + textColor = '1 1 1'; + + float alpha; + if(isCurrent) + alpha = panel_fg_alpha; + else if(isShadowed) + alpha = panel_fg_alpha * 0.7 * 0.5; + else + alpha = panel_fg_alpha * 0.7; + + // Draw item + + if(isCurrent) 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, a/autocvar_hud_panel_ammo_maxammo, 0, 0, color, autocvar_hud_progressbar_alpha * panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL); + if(ammo > 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, ammo/autocvar_hud_panel_ammo_maxammo, 0, 0, textColor, autocvar_hud_progressbar_alpha * alpha, DRAWFLAG_NORMAL); if(autocvar_hud_panel_ammo_text) - { - if(a > 0 || infinite_ammo) - drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, color, panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL); - else // "ghost" ammo count - drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, '0 0 0', panel_fg_alpha * theAlpha * 0.5, DRAWFLAG_NORMAL); - } - if(a > 0 || infinite_ammo) - drawpic_aspect_skin(picpos, GetAmmoPicture(ammotype), '1 1 0' * mySize_y, '1 1 1', panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL); - else // "ghost" ammo icon - drawpic_aspect_skin(picpos, GetAmmoPicture(ammotype), '1 1 0' * mySize_y, '0 0 0', panel_fg_alpha * theAlpha * 0.5, DRAWFLAG_NORMAL); + drawstring_aspect(textPos, ftos(ammo), eX * (2/3) * mySize_x + eY * mySize_y, textColor, alpha, DRAWFLAG_NORMAL); + + drawpic_aspect_skin(iconPos, GetAmmoPicture(ammoType), '1 1 0' * mySize_y, iconColor, alpha, DRAWFLAG_NORMAL); } float nade_prevstatus;