}
}
-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;