[nexuiz-commits] r7990 - in trunk/data: gfx/hud qcsrc/client
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Wed Sep 30 01:47:26 EDT 2009
Author: div0
Date: 2009-09-30 01:47:26 -0400 (Wed, 30 Sep 2009)
New Revision: 7990
Added:
trunk/data/gfx/hud/sb_kh_bluearrow.tga
trunk/data/gfx/hud/sb_kh_pinkarrow.tga
trunk/data/gfx/hud/sb_kh_redarrow.tga
trunk/data/gfx/hud/sb_kh_yellowarrow.tga
Modified:
trunk/data/qcsrc/client/sbar.qc
Log:
keyhunt HUD: show states of all keys like before, but also show indicators for their carriers (and a jumping arrows effect if RUN HERE is active)
Added: trunk/data/gfx/hud/sb_kh_bluearrow.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/gfx/hud/sb_kh_bluearrow.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/gfx/hud/sb_kh_pinkarrow.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/gfx/hud/sb_kh_pinkarrow.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/gfx/hud/sb_kh_redarrow.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/gfx/hud/sb_kh_redarrow.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/data/gfx/hud/sb_kh_yellowarrow.tga
===================================================================
(Binary files differ)
Property changes on: trunk/data/gfx/hud/sb_kh_yellowarrow.tga
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/data/qcsrc/client/sbar.qc
===================================================================
--- trunk/data/qcsrc/client/sbar.qc 2009-09-29 20:18:57 UTC (rev 7989)
+++ trunk/data/qcsrc/client/sbar.qc 2009-09-30 05:47:26 UTC (rev 7990)
@@ -23,7 +23,9 @@
vector color;
float SCOREBOARD_OFFSET = 50;
+void CSQC_kh_hudreset();
void CSQC_kh_hud();
+void CSQC_ctf_hudreset();
void CSQC_ctf_hud();
void CSQC_nb_hud();
void MapVote_Draw();
@@ -2423,6 +2425,8 @@
}
else
Sbar_FinaleOverlay();
+
+ goto reset;
}
else if (sb_showscores_force || getstati(STAT_HEALTH) <= 0 || intermission == 1)
{
@@ -2432,6 +2436,8 @@
Sbar_DrawScoreboard();
Sbar_Score();
Sbar_Timer();
+
+ goto reset;
}
else
{
@@ -2632,12 +2638,26 @@
else if(gametype == GAME_NEXBALL)
CSQC_nb_hud();
}
+ return;
+
+:reset
+ // draw gametype specific icons
+ if(gametype == GAME_KEYHUNT)
+ CSQC_kh_hudreset();
+ else if(gametype == GAME_CTF)
+ CSQC_ctf_hudreset();
}
// CTF HUD
float redflag_prevframe, blueflag_prevframe; // status during previous frame
float redflag_prevstatus, blueflag_prevstatus; // last remembered status
float redflag_statuschange_time, blueflag_statuschange_time; // time when the status changed
+
+void CSQC_ctf_hudreset(void)
+{
+ redflag_prevstatus = blueflag_prevstatus = redflag_prevframe = blueflag_prevframe = redflag_statuschange_time = blueflag_statuschange_time = 0;
+}
+
void CSQC_ctf_hud(void)
{
vector bottomleft, redflag_pos, blueflag_pos, sz;
@@ -2761,91 +2781,116 @@
}
// Keyhunt HUD
+float kh_runheretime;
+
+void CSQC_kh_hudreset(void)
+{
+ kh_runheretime = 0;
+}
+
void CSQC_kh_hud(void)
{
float kh_keys;
- vector red_pos, kh_size;
+ float keyteam;
+ float a, aa;
+ vector p, pa, kh_size, kh_asize;
vector bottomleft;
bottomleft_x = 0;
bottomleft_y = vid_conheight;
bottomleft_z = 0;
- red_pos_x = 6;
- red_pos_y = vid_conheight - 35 - 6;
- red_pos_z = 0;
+ p_x = 6;
+ p_y = vid_conheight - 34 - 3;
+ p_z = 0;
kh_keys = getstati(STAT_KH_KEYS);
- kh_size = '22 35 0';
+ kh_size = '19 34 0';
+ kh_asize = '19 10 0';
+ pa = p + '0 -10 0';
- float key1, key2, key3, key4;
- key1 = kh_keys & 31;
- key2 = floor(kh_keys / 32) & 31;
- key3 = floor(kh_keys / 1024) & 31;
- key4 = floor(kh_keys / 32768) & 31;
+ float i, key;
- float i, key;
- vector p;
- p = red_pos;
+ float keycount;
+ keycount = 0;
for(i = 0; i < 4; ++i)
{
key = floor(kh_keys / pow(32, i)) & 31;
- switch(key-1)
+ keyteam = key - 1;
+ if(keyteam == 30 && keycount <= 4)
+ keycount += 4;
+ if(keyteam == myteam || keyteam == -1 || keyteam == 30)
+ keycount += 1;
+ }
+ // this yields 8 exactly if "RUN HERE" shows
+
+ if(keycount == 8)
+ {
+ if(!kh_runheretime)
+ kh_runheretime = time;
+ pa_y -= fabs(sin((time - kh_runheretime) * 3.5)) * 6; // make the arrows jump in case of RUN HERE
+ }
+ else
+ kh_runheretime = 0;
+
+ for(i = 0; i < 4; ++i)
+ {
+ key = floor(kh_keys / pow(32, i)) & 31;
+ keyteam = key - 1;
+ switch(keyteam)
{
- case COLOR_TEAM1:
- drawpic (p, "gfx/hud/sb_kh_red", kh_size, '1 1 1', 0.7, DRAWFLAG_NORMAL); // show 30% alpha key
+ case 30: // my key
+ keyteam = myteam;
+ a = 1;
+ aa = 1;
break;
- case COLOR_TEAM2:
- drawpic (p, "gfx/hud/sb_kh_blue", kh_size, '1 1 1', 0.7, DRAWFLAG_NORMAL); // show 30% alpha key
+ case -1: // no key
+ a = 0;
+ aa = 0;
break;
- case COLOR_TEAM3:
- drawpic (p, "gfx/hud/sb_kh_yellow", kh_size, '1 1 1', 0.7, DRAWFLAG_NORMAL); // show 30% alpha key
+ default: // owned or dropped
+ a = 0.2;
+ aa = 0.5;
break;
- case COLOR_TEAM4:
- drawpic (p, "gfx/hud/sb_kh_pink", kh_size, '1 1 1', 0.7, DRAWFLAG_NORMAL); // show 30% alpha key
- break;
- default:
- case 29:
- switch(i)
- {
- case 0:
- drawpic (p, "gfx/hud/sb_kh_red", kh_size, '1 1 1', 0.2, DRAWFLAG_NORMAL); // show 30% alpha key
- break;
- case 1:
- drawpic (p, "gfx/hud/sb_kh_blue", kh_size, '1 1 1', 0.2, DRAWFLAG_NORMAL); // show 30% alpha key
- break;
- case 2:
- drawpic (p, "gfx/hud/sb_kh_yellow", kh_size, '1 1 1', 0.2, DRAWFLAG_NORMAL); // show 30% alpha key
- break;
- default:
- case 3:
- drawpic (p, "gfx/hud/sb_kh_pink", kh_size, '1 1 1', 0.2, DRAWFLAG_NORMAL); // show 30% alpha key
- break;
- }
- break;
- case 30:
- switch(myteam)
- {
- case COLOR_TEAM1:
- drawpic (p, "gfx/hud/sb_kh_red", kh_size, '1 1 1', 1, DRAWFLAG_NORMAL); // show 30% alpha key
- break;
- case COLOR_TEAM2:
- drawpic (p, "gfx/hud/sb_kh_blue", kh_size, '1 1 1', 1, DRAWFLAG_NORMAL); // show 30% alpha key
- break;
- case COLOR_TEAM3:
- drawpic (p, "gfx/hud/sb_kh_yellow", kh_size, '1 1 1', 1, DRAWFLAG_NORMAL); // show 30% alpha key
- break;
- default:
- case COLOR_TEAM4:
- drawpic (p, "gfx/hud/sb_kh_pink", kh_size, '1 1 1', 1, DRAWFLAG_NORMAL); // show 30% alpha key
- break;
- }
- break;
- case -1:
- break;
}
+ if(a > 0)
+ {
+ switch(keyteam)
+ {
+ case COLOR_TEAM1:
+ drawpic (pa, "gfx/hud/sb_kh_redarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% alpha key
+ break;
+ case COLOR_TEAM2:
+ drawpic (pa, "gfx/hud/sb_kh_bluearrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% alpha key
+ break;
+ case COLOR_TEAM3:
+ drawpic (pa, "gfx/hud/sb_kh_yellowarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% alpha key
+ break;
+ case COLOR_TEAM4:
+ drawpic (pa, "gfx/hud/sb_kh_pinkarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL); // show 30% alpha key
+ break;
+ default:
+ break;
+ }
+ switch(i)
+ {
+ case 0:
+ drawpic (p, "gfx/hud/sb_kh_red", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% alpha key
+ break;
+ case 1:
+ drawpic (p, "gfx/hud/sb_kh_blue", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% alpha key
+ break;
+ case 2:
+ drawpic (p, "gfx/hud/sb_kh_yellow", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% alpha key
+ break;
+ case 3:
+ drawpic (p, "gfx/hud/sb_kh_pink", kh_size, '1 1 1', a, DRAWFLAG_NORMAL); // show 30% alpha key
+ break;
+ }
+ }
p_x += 24;
+ pa_x += 24;
}
}
More information about the nexuiz-commits
mailing list