From 9e40ca55417d486a60b0737d8d52689cf7488b8a Mon Sep 17 00:00:00 2001 From: terencehill Date: Sat, 19 Mar 2011 23:38:40 +0100 Subject: [PATCH] Infinite ammo: display slightly dark cyan counter and show the normal icon even when <=0 (not grayed out) The intention is to display the current ammo count like if it's frozen so that you know what ammo type need more (since you can still increase ammo by taking items) in case you know that you might/will loose the infinite ammo power-up. --- qcsrc/client/hud.qc | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc index 1053c5e5f..451a996ad 100644 --- a/qcsrc/client/hud.qc +++ b/qcsrc/client/hud.qc @@ -1878,7 +1878,7 @@ string GetAmmoPicture(float i) } } -void DrawAmmoItem(vector myPos, vector mySize, float itemcode, float currently_selected) +void DrawAmmoItem(vector myPos, vector mySize, float itemcode, float currently_selected, float infinite_ammo) { float a; if(autocvar__hud_configure) @@ -1890,7 +1890,9 @@ void DrawAmmoItem(vector myPos, vector mySize, float itemcode, float currently_s a = getstati(GetAmmoStat(itemcode)); // how much ammo do we have of type itemcode? vector color; - if(a < 10) + if(infinite_ammo) + color = '0 0.5 0.75'; + else if(a < 10) color = '0.7 0 0'; else color = '1 1 1'; @@ -1921,12 +1923,12 @@ void DrawAmmoItem(vector myPos, vector mySize, float itemcode, float currently_s if(autocvar_hud_panel_ammo_text) { - if(a > 0) + if(a > 0 || infinite_ammo) drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, color, panel_fg_alpha * alpha, 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 * alpha * 0.5, DRAWFLAG_NORMAL); } - if(a > 0) + if(a > 0 || infinite_ammo) drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * mySize_y, '1 1 1', panel_fg_alpha * alpha, DRAWFLAG_NORMAL); else // "ghost" ammo icon drawpic_aspect_skin(picpos, GetAmmoPicture(itemcode), '1 1 0' * mySize_y, '0 0 0', panel_fg_alpha * alpha * 0.5, DRAWFLAG_NORMAL); @@ -1982,20 +1984,23 @@ void HUD_Ammo(void) ammo_size_y = newSize; } - float i, stat_items, currently_selected; + float i, stat_items, currently_selected, infinite_ammo; + infinite_ammo = FALSE; if (autocvar_hud_panel_ammo_onlycurrent) { if(autocvar__hud_configure) { - DrawAmmoItem(pos, ammo_size, 2, true); //show rockets + DrawAmmoItem(pos, ammo_size, 2, true, FALSE); //show rockets return; } stat_items = getstati(STAT_ITEMS); + if (stat_items & IT_UNLIMITED_WEAPON_AMMO) + infinite_ammo = TRUE; for (i = 0; i < AMMO_COUNT; ++i) { currently_selected = stat_items & GetAmmoItemCode(i); if (currently_selected) { - DrawAmmoItem(pos, ammo_size, i, true); + DrawAmmoItem(pos, ammo_size, i, true, infinite_ammo); return; } } @@ -2003,9 +2008,11 @@ void HUD_Ammo(void) } stat_items = getstati(STAT_ITEMS); + if (stat_items & IT_UNLIMITED_WEAPON_AMMO) + infinite_ammo = TRUE; for (i = 0; i < AMMO_COUNT; ++i) { currently_selected = stat_items & GetAmmoItemCode(i); - DrawAmmoItem(pos + eX * column * (ammo_size_x + offset_x) + eY * row * (ammo_size_y + offset_y), ammo_size, i, currently_selected); + DrawAmmoItem(pos + eX * column * (ammo_size_x + offset_x) + eY * row * (ammo_size_y + offset_y), ammo_size, i, currently_selected, infinite_ammo); ++row; if(row >= rows) { -- 2.39.2