ammo status bar on the weaponicons panel, also commit some icons that i forgot
authorFruitieX <rasse@rasse-lappy.localdomain>
Sat, 10 Jul 2010 23:32:23 +0000 (02:32 +0300)
committerFruitieX <rasse@rasse-lappy.localdomain>
Sat, 10 Jul 2010 23:32:23 +0000 (02:32 +0300)
26 files changed:
defaultXonotic.cfg
gfx/hud/default/notify_blue_captured.tga [new file with mode: 0644]
gfx/hud/default/notify_blue_lost.tga [new file with mode: 0644]
gfx/hud/default/notify_blue_returned.tga [new file with mode: 0644]
gfx/hud/default/notify_blue_shielded.tga [new file with mode: 0644]
gfx/hud/default/notify_blue_taken.tga [new file with mode: 0644]
gfx/hud/default/notify_red_captured.tga [new file with mode: 0644]
gfx/hud/default/notify_red_lost.tga [new file with mode: 0644]
gfx/hud/default/notify_red_returned.tga [new file with mode: 0644]
gfx/hud/default/notify_red_shielded.tga [new file with mode: 0644]
gfx/hud/default/notify_red_taken.tga [new file with mode: 0644]
gfx/hud/default/weapon_ammo.tga [new file with mode: 0644]
gfx/hud/wickedhud/notify_blue_captured.tga [new file with mode: 0644]
gfx/hud/wickedhud/notify_blue_lost.tga [new file with mode: 0644]
gfx/hud/wickedhud/notify_blue_returned.tga [new file with mode: 0644]
gfx/hud/wickedhud/notify_blue_shielded.tga [new file with mode: 0644]
gfx/hud/wickedhud/notify_blue_taken.tga [new file with mode: 0644]
gfx/hud/wickedhud/notify_red_captured.tga [new file with mode: 0644]
gfx/hud/wickedhud/notify_red_lost.tga [new file with mode: 0644]
gfx/hud/wickedhud/notify_red_returned.tga [new file with mode: 0644]
gfx/hud/wickedhud/notify_red_shielded.tga [new file with mode: 0644]
gfx/hud/wickedhud/notify_red_taken.tga [new file with mode: 0644]
gfx/hud/wickedhud/weapon_ammo.tga [new file with mode: 0644]
hud_wickedhud_default.cfg
qcsrc/client/autocvars.qh
qcsrc/client/hud.qc

index ef878d4d483643707a8a633c7a1a2d0ee50be11e..280d3a4a12b45255393b0a357a0c7b370f4f5689 100644 (file)
@@ -1339,7 +1339,14 @@ exec hud_wickedhud_default.cfg
 seta hud_weaponicons_number 1 "1 = show number of weapon, 2 = show bound key of weapon"
 seta hud_weaponicons_complainbubble_time 1 "time that a new entry stays until it fades out"
 seta hud_weaponicons_complainbubble_fadetime 0.25 "fade out time"
+seta hud_weaponicons_accuracy 1 "show accuracy as the weapon icon background"
 seta hud_weaponicons_accuracy_yellow 20 "percentage at which the accuracy color is yellow"
+seta hud_weaponicons_ammo 1 "show ammo as a status bar"
+seta hud_weaponicons_ammo_full_shells 40 "show 100% of the status bar at this ammo count"
+seta hud_weaponicons_ammo_full_nails 100 "show 100% of the status bar at this ammo count"
+seta hud_weaponicons_ammo_full_cells 60 "show 100% of the status bar at this ammo count"
+seta hud_weaponicons_ammo_full_rockets 60 "show 100% of the status bar at this ammo count"
+seta hud_weaponicons_ammo_full_fuel 100 "show 100% of the status bar at this ammo count"
 
 seta hud_notify_time 10 "time that a new entry stays until it fades out"
 seta hud_notify_fadetime 3 "fade out time"
diff --git a/gfx/hud/default/notify_blue_captured.tga b/gfx/hud/default/notify_blue_captured.tga
new file mode 100644 (file)
index 0000000..7cff17e
Binary files /dev/null and b/gfx/hud/default/notify_blue_captured.tga differ
diff --git a/gfx/hud/default/notify_blue_lost.tga b/gfx/hud/default/notify_blue_lost.tga
new file mode 100644 (file)
index 0000000..67d894d
Binary files /dev/null and b/gfx/hud/default/notify_blue_lost.tga differ
diff --git a/gfx/hud/default/notify_blue_returned.tga b/gfx/hud/default/notify_blue_returned.tga
new file mode 100644 (file)
index 0000000..8e8b67f
Binary files /dev/null and b/gfx/hud/default/notify_blue_returned.tga differ
diff --git a/gfx/hud/default/notify_blue_shielded.tga b/gfx/hud/default/notify_blue_shielded.tga
new file mode 100644 (file)
index 0000000..a8993f6
Binary files /dev/null and b/gfx/hud/default/notify_blue_shielded.tga differ
diff --git a/gfx/hud/default/notify_blue_taken.tga b/gfx/hud/default/notify_blue_taken.tga
new file mode 100644 (file)
index 0000000..6847e7c
Binary files /dev/null and b/gfx/hud/default/notify_blue_taken.tga differ
diff --git a/gfx/hud/default/notify_red_captured.tga b/gfx/hud/default/notify_red_captured.tga
new file mode 100644 (file)
index 0000000..72814ec
Binary files /dev/null and b/gfx/hud/default/notify_red_captured.tga differ
diff --git a/gfx/hud/default/notify_red_lost.tga b/gfx/hud/default/notify_red_lost.tga
new file mode 100644 (file)
index 0000000..f96e021
Binary files /dev/null and b/gfx/hud/default/notify_red_lost.tga differ
diff --git a/gfx/hud/default/notify_red_returned.tga b/gfx/hud/default/notify_red_returned.tga
new file mode 100644 (file)
index 0000000..deee468
Binary files /dev/null and b/gfx/hud/default/notify_red_returned.tga differ
diff --git a/gfx/hud/default/notify_red_shielded.tga b/gfx/hud/default/notify_red_shielded.tga
new file mode 100644 (file)
index 0000000..e7ec491
Binary files /dev/null and b/gfx/hud/default/notify_red_shielded.tga differ
diff --git a/gfx/hud/default/notify_red_taken.tga b/gfx/hud/default/notify_red_taken.tga
new file mode 100644 (file)
index 0000000..bf71977
Binary files /dev/null and b/gfx/hud/default/notify_red_taken.tga differ
diff --git a/gfx/hud/default/weapon_ammo.tga b/gfx/hud/default/weapon_ammo.tga
new file mode 100644 (file)
index 0000000..cb1d306
Binary files /dev/null and b/gfx/hud/default/weapon_ammo.tga differ
diff --git a/gfx/hud/wickedhud/notify_blue_captured.tga b/gfx/hud/wickedhud/notify_blue_captured.tga
new file mode 100644 (file)
index 0000000..7cff17e
Binary files /dev/null and b/gfx/hud/wickedhud/notify_blue_captured.tga differ
diff --git a/gfx/hud/wickedhud/notify_blue_lost.tga b/gfx/hud/wickedhud/notify_blue_lost.tga
new file mode 100644 (file)
index 0000000..67d894d
Binary files /dev/null and b/gfx/hud/wickedhud/notify_blue_lost.tga differ
diff --git a/gfx/hud/wickedhud/notify_blue_returned.tga b/gfx/hud/wickedhud/notify_blue_returned.tga
new file mode 100644 (file)
index 0000000..8e8b67f
Binary files /dev/null and b/gfx/hud/wickedhud/notify_blue_returned.tga differ
diff --git a/gfx/hud/wickedhud/notify_blue_shielded.tga b/gfx/hud/wickedhud/notify_blue_shielded.tga
new file mode 100644 (file)
index 0000000..a8993f6
Binary files /dev/null and b/gfx/hud/wickedhud/notify_blue_shielded.tga differ
diff --git a/gfx/hud/wickedhud/notify_blue_taken.tga b/gfx/hud/wickedhud/notify_blue_taken.tga
new file mode 100644 (file)
index 0000000..6847e7c
Binary files /dev/null and b/gfx/hud/wickedhud/notify_blue_taken.tga differ
diff --git a/gfx/hud/wickedhud/notify_red_captured.tga b/gfx/hud/wickedhud/notify_red_captured.tga
new file mode 100644 (file)
index 0000000..72814ec
Binary files /dev/null and b/gfx/hud/wickedhud/notify_red_captured.tga differ
diff --git a/gfx/hud/wickedhud/notify_red_lost.tga b/gfx/hud/wickedhud/notify_red_lost.tga
new file mode 100644 (file)
index 0000000..f96e021
Binary files /dev/null and b/gfx/hud/wickedhud/notify_red_lost.tga differ
diff --git a/gfx/hud/wickedhud/notify_red_returned.tga b/gfx/hud/wickedhud/notify_red_returned.tga
new file mode 100644 (file)
index 0000000..deee468
Binary files /dev/null and b/gfx/hud/wickedhud/notify_red_returned.tga differ
diff --git a/gfx/hud/wickedhud/notify_red_shielded.tga b/gfx/hud/wickedhud/notify_red_shielded.tga
new file mode 100644 (file)
index 0000000..e7ec491
Binary files /dev/null and b/gfx/hud/wickedhud/notify_red_shielded.tga differ
diff --git a/gfx/hud/wickedhud/notify_red_taken.tga b/gfx/hud/wickedhud/notify_red_taken.tga
new file mode 100644 (file)
index 0000000..bf71977
Binary files /dev/null and b/gfx/hud/wickedhud/notify_red_taken.tga differ
diff --git a/gfx/hud/wickedhud/weapon_ammo.tga b/gfx/hud/wickedhud/weapon_ammo.tga
new file mode 100644 (file)
index 0000000..cb1d306
Binary files /dev/null and b/gfx/hud/wickedhud/weapon_ammo.tga differ
index ab3e38e1f854c40385f8e93836c6a8f26185ab2a..11789ba009f98c64d74eb1c1940615084d3739fe 100644 (file)
@@ -27,6 +27,8 @@ seta hud_weaponicons_pos "0.930000 0.090000" "position of this panel"
 seta hud_weaponicons_size "0.040000 0.490000" "size of this panel"
 seta hud_weaponicons_complainbubble 1 "complain bubble (out of ammo, weapon not available etc)"
 seta hud_weaponicons_complainbubble_padding -10 "padding for the complainbubble"
+seta hud_weaponicons_ammo_color "0 1 0" "color of status bar"
+seta hud_weaponicons_ammo_alpha 1 "alpha of status bar"
 seta hud_weaponicons_bg "border_weaponicons" "if set to something else than \"\" = override default background"
 seta hud_weaponicons_bg_color "" "if set to something else than \"\" = override default panel background color"
 seta hud_weaponicons_bg_color_team "" "override panel color with team color in team based games"
index dba5d6190262d72258b56d6e64aecaac4ff21dd2..d53574d89546388df17dfcad676f36aa0e5b7136 100644 (file)
@@ -53,7 +53,16 @@ var string autocvar_hud_weaponicons_bg_color_team;
 var string autocvar_hud_weaponicons_bg_alpha;
 var string autocvar_hud_weaponicons_bg_border;
 var string autocvar_hud_weaponicons_bg_padding;
+var float autocvar_hud_weaponicons_accuracy;
 var float autocvar_hud_weaponicons_accuracy_yellow;
+var float autocvar_hud_weaponicons_ammo;
+var vector autocvar_hud_weaponicons_ammo_color;
+var float autocvar_hud_weaponicons_ammo_alpha;
+var float autocvar_hud_weaponicons_ammo_full_shells;
+var float autocvar_hud_weaponicons_ammo_full_nails;
+var float autocvar_hud_weaponicons_ammo_full_rockets;
+var float autocvar_hud_weaponicons_ammo_full_cells;
+var float autocvar_hud_weaponicons_ammo_full_fuel;
 var float autocvar_hud_weaponicons_number;
 var float autocvar_hud_weaponicons_complainbubble;
 var float autocvar_hud_weaponicons_complainbubble_padding;
index d4196054159dedf435a15e352ece2c3faf19a4ca..e46a70ae4465ed65e2281a4872623158b81ec28f 100644 (file)
@@ -467,6 +467,8 @@ void HUD_Panel_ExportCfg(string cfgname)
                                case HUD_PANEL_WEAPONICONS:
                                        fputs(fh, strcat("seta hud_", panel_name, "_complainbubble \"", cvar_string(strcat("hud_", panel_name, "_complainbubble")), "\"", "\n"));
                                        fputs(fh, strcat("seta hud_", panel_name, "_complainbubble_padding \"", cvar_string(strcat("hud_", panel_name, "_complainbubble_padding")), "\"", "\n"));
+                                       fputs(fh, strcat("seta hud_", panel_name, "_ammo_color \"", cvar_string(strcat("hud_", panel_name, "_ammo_color")), "\"", "\n"));
+                                       fputs(fh, strcat("seta hud_", panel_name, "_ammo_alpha \"", cvar_string(strcat("hud_", panel_name, "_ammo_alpha")), "\"", "\n"));
                                        break;
                                case HUD_PANEL_INVENTORY:
                                        fputs(fh, strcat("seta hud_", panel_name, "_onlycurrent \"", cvar_string(strcat("hud_", panel_name, "_onlycurrent")), "\"", "\n"));
@@ -1328,6 +1330,41 @@ float weaponorder_cmp(float i, float j, entity pass)
        return aj - ai; // the string is in REVERSE order (higher prio at the right is what we want, but higher prio first is the string)
 }
 
+float GetAmmoStat(float i)
+{
+       switch(i)
+       {
+               case 0: return STAT_SHELLS;
+               case 1: return STAT_NAILS;
+               case 2: return STAT_ROCKETS;
+               case 3: return STAT_CELLS;
+               case 4: return STAT_FUEL;
+               default: return -1;
+       }
+}
+
+float GetAmmoTypeForWep(float i)
+{
+       switch(i)
+       {
+               case WEP_SHOTGUN: return 0;
+               case WEP_UZI: return 1;
+               case WEP_CAMPINGRIFLE: return 1;
+               case WEP_GRENADE_LAUNCHER: return 2;
+               case WEP_ELECTRO: return 3;
+               case WEP_CRYLINK: return 3;
+               case WEP_HLAC: return 3;
+               case WEP_MINSTANEX: return 3;
+               case WEP_NEX: return 3;
+               case WEP_HAGAR: return 2;
+               case WEP_ROCKET_LAUNCHER: return 2;
+               case WEP_SEEKER: return 2;
+               case WEP_FIREBALL: return 4;
+               case WEP_HOOK: return 3;
+               default: return -1;
+       }
+}
+
 void HUD_WeaponIcons(void)
 {
        if(!autocvar_hud_weaponicons && !autocvar__hud_configure)
@@ -1406,15 +1443,20 @@ void HUD_WeaponIcons(void)
        columns = ceil(WEP_COUNT/rows);
        float row, column;
 
-       float a;
+       float a, type, fullammo;
        float when;
        when = autocvar_hud_weaponicons_complainbubble_time;
        float fadetime;
        fadetime = autocvar_hud_weaponicons_complainbubble_fadetime;
 
        vector color;
+       vector wpnpos;
+       vector wpnsize;
        for(i = 0; i < weapon_cnt; ++i)
        {
+               wpnpos = pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows);
+               wpnsize = eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows);
+
                self = weaponorder[i];
                weapid = self.impulse;
 
@@ -1425,10 +1467,10 @@ void HUD_WeaponIcons(void)
 
                // draw background behind currently selected weapon
                if(self.weapon == activeweapon)
-                       drawpic_aspect_skin(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), "weapon_current_bg", eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows), '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawpic_aspect_skin(wpnpos, "weapon_current_bg", wpnsize, '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
 
-               // draw the weapon accuracy on the HUD
-               if(hud_accuracy_hud && !(gametype == GAME_RACE || gametype == GAME_CTS))
+               // draw the weapon accuracy
+               if(autocvar_hud_weaponicons_accuracy && !(gametype == GAME_RACE || gametype == GAME_CTS))
                {
                        if(weapon_damage)
                                weapon_stats = floor(100 * weapon_hit / weapon_damage);
@@ -1445,26 +1487,75 @@ void HUD_WeaponIcons(void)
                                color_x = 1;
                                color_y = weapon_stats/autocvar_hud_weaponicons_accuracy_yellow; // green value between 0 -> 1
                        }
+                       color_z = 0;
 
                        if(weapon_damage)
-                               drawpic_aspect_skin(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), "weapon_accuracy", eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows), color, panel_fg_alpha, DRAWFLAG_NORMAL);
+                               drawpic_aspect_skin(wpnpos, "weapon_accuracy", wpnsize, color, panel_fg_alpha, DRAWFLAG_NORMAL);
                }
 
                // draw the weapon icon
                if((self.impulse >= 0) && (stat_weapons & self.weapons))
                {
-                       drawpic_aspect_skin(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), strcat("weapon", self.netname), eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows), '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
+                       drawpic_aspect_skin(wpnpos, strcat("weapon", self.netname), wpnsize, '1 1 1', fade * panel_fg_alpha, DRAWFLAG_NORMAL);
 
                        if(autocvar_hud_weaponicons_number == 1) // weapon number
-                               drawstring(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), ftos(weapid), '1 1 0' * 0.5 * mySize_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+                               drawstring(wpnpos, ftos(weapid), '1 1 0' * 0.5 * mySize_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
                        else if(autocvar_hud_weaponicons_number == 2) // bind
-                               drawstring(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), getcommandkey(ftos(weapid), strcat("impulse ", ftos(weapid))), '1 1 0' * 0.5 * mySize_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+                               drawstring(wpnpos, getcommandkey(ftos(weapid), strcat("impulse ", ftos(weapid))), '1 1 0' * 0.5 * mySize_y*(1/rows), '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+
+                       // draw ammo status bar
+                       if(autocvar_hud_weaponicons_ammo && weapid != WEP_TUBA && weapid != WEP_LASER && weapid != WEP_PORTO)
+                       {
+                               a = 0;
+                               type = GetAmmoTypeForWep(weapid);
+                               if(type != -1)
+                                       a = getstati(GetAmmoStat(type)); // how much ammo do we have?
+
+                               if(a > 0)
+                               {
+                                       switch(type) {
+                                               case 0: fullammo = autocvar_hud_weaponicons_ammo_full_shells; break;
+                                               case 1: fullammo = autocvar_hud_weaponicons_ammo_full_nails; break;
+                                               case 2: fullammo = autocvar_hud_weaponicons_ammo_full_rockets; break;
+                                               case 3: fullammo = autocvar_hud_weaponicons_ammo_full_cells; break;
+                                               case 4: fullammo = autocvar_hud_weaponicons_ammo_full_fuel; break;
+                                               default: fullammo = 60;
+                                       }
+
+                                       vector barsize;
+                                       vector barpos;
+                                       if(wpnsize_x/wpnsize_y > 2)
+                                       {
+                                               barsize_x = 2 * wpnsize_y;
+                                               barsize_y = wpnsize_y;
+
+                                               barpos_x = wpnpos_x + (wpnsize_x - barsize_x) / 2;
+                                               barpos_y = wpnpos_y;
+                                       }
+                                       else
+                                       {
+                                               barsize_y = 1/2 * wpnsize_x;
+                                               barsize_x = wpnsize_x;
+
+                                               barpos_y = wpnpos_y + (wpnsize_y - barsize_y) / 2;
+                                               barpos_x = wpnpos_x;
+                                       }
+
+                                       drawsetcliparea(
+                                               barpos_x,
+                                               barpos_y,
+                                               barsize_x * bound(0, a/fullammo, 1),
+                                               barsize_y); // use 2x more full ammo for uzi
+                                       drawpic_aspect_skin(wpnpos, "weapon_ammo", wpnsize, autocvar_hud_weaponicons_ammo_color, panel_fg_alpha * autocvar_hud_weaponicons_ammo_alpha, DRAWFLAG_NORMAL);
+                                       drawresetcliparea();
+                               }
+                       }
                }
 
                // draw a "ghost weapon icon" if you don't have the weapon
                else
                {
-                       drawpic_aspect_skin(pos + eX * column * mySize_x*(1/columns) + eY * row * mySize_y*(1/rows), strcat("weapon", self.netname), eX * mySize_x*(1/columns) + eY * mySize_y*(1/rows), '0 0 0', panel_fg_alpha * 0.5, DRAWFLAG_NORMAL);
+                       drawpic_aspect_skin(wpnpos, strcat("weapon", self.netname), wpnsize, '0 0 0', panel_fg_alpha * 0.5, DRAWFLAG_NORMAL);
                }
 
                // draw the complain message
@@ -1515,19 +1606,6 @@ void HUD_WeaponIcons(void)
 // Inventory (#1)
 //
 // TODO: macro
-float GetAmmoStat(float i)
-{
-       switch(i)
-       {
-               case 0: return STAT_SHELLS;
-               case 1: return STAT_NAILS;
-               case 2: return STAT_ROCKETS;
-               case 3: return STAT_CELLS;
-               case 4: return STAT_FUEL;
-               default: return -1;
-       }
-}
-
 float GetAmmoItemCode(float i)
 {
        switch(i)