[nexuiz-commits] r7817 - in trunk/data: gfx/hud qcsrc/client
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Wed Sep 16 09:06:44 EDT 2009
Author: fruitiex
Date: 2009-09-16 09:06:43 -0400 (Wed, 16 Sep 2009)
New Revision: 7817
Modified:
trunk/data/gfx/hud/sb_flag_blue_carrying.tga
trunk/data/gfx/hud/sb_flag_blue_lost.tga
trunk/data/gfx/hud/sb_flag_blue_shielded.tga
trunk/data/gfx/hud/sb_flag_blue_taken.tga
trunk/data/gfx/hud/sb_flag_red_carrying.tga
trunk/data/gfx/hud/sb_flag_red_lost.tga
trunk/data/gfx/hud/sb_flag_red_shielded.tga
trunk/data/gfx/hud/sb_flag_red_taken.tga
trunk/data/qcsrc/client/sbar.qc
Log:
CTF status change ping
Modified: trunk/data/gfx/hud/sb_flag_blue_carrying.tga
===================================================================
(Binary files differ)
Modified: trunk/data/gfx/hud/sb_flag_blue_lost.tga
===================================================================
(Binary files differ)
Modified: trunk/data/gfx/hud/sb_flag_blue_shielded.tga
===================================================================
(Binary files differ)
Modified: trunk/data/gfx/hud/sb_flag_blue_taken.tga
===================================================================
(Binary files differ)
Modified: trunk/data/gfx/hud/sb_flag_red_carrying.tga
===================================================================
(Binary files differ)
Modified: trunk/data/gfx/hud/sb_flag_red_lost.tga
===================================================================
(Binary files differ)
Modified: trunk/data/gfx/hud/sb_flag_red_shielded.tga
===================================================================
(Binary files differ)
Modified: trunk/data/gfx/hud/sb_flag_red_taken.tga
===================================================================
(Binary files differ)
Modified: trunk/data/qcsrc/client/sbar.qc
===================================================================
--- trunk/data/qcsrc/client/sbar.qc 2009-09-16 06:13:25 UTC (rev 7816)
+++ trunk/data/qcsrc/client/sbar.qc 2009-09-16 13:06:43 UTC (rev 7817)
@@ -2633,47 +2633,107 @@
}
// CTF HUD
+float redflag_prevframe, blueflag_prevframe; // status during previous frame
+float redflag_prevstatus, blueflag_prevstatus; // previous status, not = 0
+float redflag_statuschange_time, blueflag_statuschange_time; // time when the status changed
void CSQC_ctf_hud(void)
{
- vector bottomleft, redflag_pos, blueflag_pos;
+ vector bottomleft, redflag_pos, blueflag_pos, size;
bottomleft_x = 0;
bottomleft_y = vid_conheight;
bottomleft_z = 0;
- float redflag, blueflag;
+ float redflag, blueflag; // current status
+ float redflag_statuschange_elapsedtime, blueflag_statuschange_elapsedtime; // time since the status changed
float stat_items;
stat_items = getstati(STAT_ITEMS);
redflag = (stat_items/IT_RED_FLAG_TAKEN) & 3;
blueflag = (stat_items/IT_BLUE_FLAG_TAKEN) & 3;
- if (myteam == COLOR_TEAM1) { // always draw own flag on left
- redflag_pos = bottomleft - '-4 42 0';
- blueflag_pos = bottomleft - '-68 42 0';
- } else {
- blueflag_pos = bottomleft - '-4 42 0';
- redflag_pos = bottomleft - '-68 42 0';
+ if (redflag != redflag_prevframe) {
+ redflag_statuschange_time = time;
+ if (redflag)
+ redflag_prevstatus = redflag;
}
+ redflag_prevframe = redflag;
+ if (blueflag != blueflag_prevframe) {
+ blueflag_statuschange_time = time;
+ if (blueflag)
+ blueflag_prevstatus = blueflag;
+ }
+ blueflag_prevframe = blueflag;
+
+ redflag_statuschange_elapsedtime = time - redflag_statuschange_time;
+ blueflag_statuschange_elapsedtime = time - blueflag_statuschange_time;
+
+ string red_icon, red_icon_prevstatus;
switch(redflag) {
- case 1: drawpic(redflag_pos, "gfx/hud/sb_flag_red_taken", '48 48 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL); break;
- case 2: drawpic(redflag_pos, "gfx/hud/sb_flag_red_lost", '48 48 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL); break;
- case 3: drawpic(redflag_pos, "gfx/hud/sb_flag_red_carrying", '48 48 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL); break;
- default:
- if(stat_items & IT_CTF_SHIELDED)
- if(myteam == COLOR_TEAM2)
- drawpic(redflag_pos, "gfx/hud/sb_flag_red_shielded", '48 48 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL); break;
+ case 1: red_icon = "gfx/hud/sb_flag_red_taken"; break;
+ case 2: red_icon = "gfx/hud/sb_flag_red_lost"; break;
+ case 3: red_icon = "gfx/hud/sb_flag_red_carrying"; break;
+ default:
+ if((stat_items & IT_CTF_SHIELDED) && (myteam == COLOR_TEAM2))
+ red_icon = "gfx/hud/sb_flag_red_shielded"; break;
+ } switch(redflag_prevstatus) {
+ case 1: red_icon_prevstatus = "gfx/hud/sb_flag_red_taken"; break;
+ case 2: red_icon_prevstatus = "gfx/hud/sb_flag_red_lost"; break;
+ case 3: red_icon_prevstatus = "gfx/hud/sb_flag_red_carrying"; break;
+ default:
+ if((stat_items & IT_CTF_SHIELDED) && (myteam == COLOR_TEAM2))
+ red_icon_prevstatus = "gfx/hud/sb_flag_red_shielded"; break;
}
+ string blue_icon, blue_icon_prevstatus;
switch(blueflag) {
- case 1: drawpic(blueflag_pos, "gfx/hud/sb_flag_blue_taken", '48 48 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL); break;
- case 2: drawpic(blueflag_pos, "gfx/hud/sb_flag_blue_lost", '48 48 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL); break;
- case 3: drawpic(blueflag_pos, "gfx/hud/sb_flag_blue_carrying", '48 48 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL); break;
- default:
- if(stat_items & IT_CTF_SHIELDED)
- if(myteam == COLOR_TEAM1)
- drawpic(blueflag_pos, "gfx/hud/sb_flag_blue_shielded", '48 48 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL); break;
+ case 1: blue_icon = "gfx/hud/sb_flag_blue_taken"; break;
+ case 2: blue_icon = "gfx/hud/sb_flag_blue_lost"; break;
+ case 3: blue_icon = "gfx/hud/sb_flag_blue_carrying"; break;
+ default:
+ if((stat_items & IT_CTF_SHIELDED) && (myteam == COLOR_TEAM1))
+ blue_icon = "gfx/hud/sb_flag_blue_shielded"; break;
+ } switch(blueflag_prevstatus) {
+ case 1: blue_icon_prevstatus = "gfx/hud/sb_flag_blue_taken"; break;
+ case 2: blue_icon_prevstatus = "gfx/hud/sb_flag_blue_lost"; break;
+ case 3: blue_icon_prevstatus = "gfx/hud/sb_flag_blue_carrying"; break;
+ default:
+ if((stat_items & IT_CTF_SHIELDED) && (myteam == COLOR_TEAM1))
+ blue_icon_prevstatus = "gfx/hud/sb_flag_blue_shielded"; break;
}
+
+ if (myteam == COLOR_TEAM1) { // always draw own flag on left
+ redflag_pos = bottomleft - '-4 50 0';
+ blueflag_pos = bottomleft - '-62 50 0';
+ } else {
+ blueflag_pos = bottomleft - '-4 50 0';
+ redflag_pos = bottomleft - '-62 50 0';
+ }
+
+ size = '52 52 0';
+
+ // draw the icons
+ if (redflag_statuschange_elapsedtime > 1 && red_icon) // red flag status has not changed during the previous second
+ drawpic(redflag_pos, red_icon, size, '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL);
+ else { // red flag status HAS changed during the previous second
+ if (redflag == 0 && red_icon_prevstatus) // in this case, the status was lost so we have to use the value in prevstatus to determine which icon to fade out
+ drawpic_expanding(redflag_pos, red_icon_prevstatus, size, '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL,
+ bound(0, redflag_statuschange_elapsedtime*2, 1));
+ else if (red_icon)
+ drawpic_expanding_two(redflag_pos, red_icon, size, '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL,
+ bound(0, redflag_statuschange_elapsedtime*2, 1));
+ }
+
+ if (blueflag_statuschange_elapsedtime > 1 && blue_icon) // blue flag status has not changed during the previous second
+ drawpic(blueflag_pos, blue_icon, size, '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL);
+ else { // blue flag status HAS changed during the previous second
+ if (blueflag == 0 && blue_icon_prevstatus) // in this case, the status was lost so we have to use the value in prevstatus to determine which icon to fade out
+ drawpic_expanding(blueflag_pos, blue_icon_prevstatus, size, '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL,
+ bound(0, blueflag_statuschange_elapsedtime*2, 1));
+ else if (blue_icon)
+ drawpic_expanding_two(blueflag_pos, blue_icon, size, '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL,
+ bound(0, blueflag_statuschange_elapsedtime*2, 1));
+ }
}
// Keyhunt HUD
More information about the nexuiz-commits
mailing list