]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Infinite ammo: display slightly dark cyan counter and show the normal icon even when...
authorterencehill <piuntn@gmail.com>
Sat, 19 Mar 2011 22:38:40 +0000 (23:38 +0100)
committerterencehill <piuntn@gmail.com>
Sat, 19 Mar 2011 22:38:40 +0000 (23:38 +0100)
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

index 1053c5e5ff5178c2dfff9035f0b5d2a8cb5239a7..451a996adaad696b056f9f27a26e54c28e0040c6 100644 (file)
@@ -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)
                {