r3779 - in trunk/data/qcsrc: client common server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sun Jul 6 08:17:47 EDT 2008
Author: blub0
Date: 2008-07-06 08:17:47 -0400 (Sun, 06 Jul 2008)
New Revision: 3779
Modified:
trunk/data/qcsrc/client/Main.qc
trunk/data/qcsrc/client/View.qc
trunk/data/qcsrc/client/main.qh
trunk/data/qcsrc/client/sbar.qc
trunk/data/qcsrc/common/constants.qh
trunk/data/qcsrc/server/keyhunt.qc
Log:
Changed keyhunt keystates to use a stat var instead of sending cvars.
Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc 2008-07-05 19:00:16 UTC (rev 3778)
+++ trunk/data/qcsrc/client/Main.qc 2008-07-06 12:17:47 UTC (rev 3779)
@@ -22,6 +22,7 @@
{
float i;
+ drawfont = 0;
menu_visible = FALSE;
menu_show = menu_show_error;
menu_action = menu_sub_null;
@@ -45,8 +46,6 @@
// CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc)
void CSQC_Shutdown(void)
{
- entity next;
-
buf_del(databuf);
}
@@ -128,7 +127,7 @@
// The only parameter reflects if the entity is "new" to the client, meaning it just came into the client's PVS.
void(float bIsNewEntity) CSQC_Ent_Update =
{
- float tmp, plnum, msg;
+ float msg;
self.enttype = ReadByte();
if(self.enttype == ENT_CLIENT_ENTCS)
{
@@ -141,7 +140,7 @@
case ENTCS_MSG_ONS: ReadONS(bIsNewEntity); break;
default:
error("unknown ENTCS_MSG type\n");
- };
+ }
}
}
else
Modified: trunk/data/qcsrc/client/View.qc
===================================================================
--- trunk/data/qcsrc/client/View.qc 2008-07-05 19:00:16 UTC (rev 3778)
+++ trunk/data/qcsrc/client/View.qc 2008-07-06 12:17:47 UTC (rev 3779)
@@ -107,9 +107,13 @@
string kh_carrying, kh_outline;
vector red_pos, blue_pos, yellow_pos, pink_pos, kh_size;
vector red, blue, yellow, pink;
-
+
+ /*
kh_keys = cvar("kh_keys"); // set in keyhunt.qc
kh_keys_status = cvar("kh_keys_status"); // set in keyhunt.qc
+ */
+ kh_keys = getstati(STAT_KH_KEYS);
+ kh_keys_status = kh_keys / 256;
kh_teams_set = cvar("_teams_available"); // set in keyhunt.qc
// kh_margin_x = 10;
Modified: trunk/data/qcsrc/client/main.qh
===================================================================
--- trunk/data/qcsrc/client/main.qh 2008-07-05 19:00:16 UTC (rev 3778)
+++ trunk/data/qcsrc/client/main.qh 2008-07-06 12:17:47 UTC (rev 3779)
@@ -7,7 +7,7 @@
void() menu_show_error;
void() menu_sub_null;
-void() menu_show; // ptr
+void() menu_show;
float menu_visible;
float(float bInputType, float nPrimary, float nSecondary) menu_action;
@@ -18,7 +18,6 @@
void() ctf_menu_show;
string ctf_temp_1;
-
// --------------------------------------------------------------------------
// Onslaught
@@ -32,6 +31,8 @@
// --------------------------------------------------------------------------
// General stuff
+float drawfont;
+
float gametype;
entity gps_start;
@@ -40,8 +41,8 @@
//float sorted_teams;
// Defs
-.float ctf_state;
-.float health;
+//.float ctf_state;
+//.float health;
// Constants
const float COLOR_TEAM_RED = 64;
@@ -52,3 +53,6 @@
const float COLOR_TEAM3 = 12; // yellow
const float COLOR_TEAM4 = 9; // pink
const float COLOR_SPECTATOR = 1337;
+
+#define FONT_DEFAULT 0
+#define FONT_USER 8
Modified: trunk/data/qcsrc/client/sbar.qc
===================================================================
--- trunk/data/qcsrc/client/sbar.qc 2008-07-05 19:00:16 UTC (rev 3778)
+++ trunk/data/qcsrc/client/sbar.qc 2008-07-06 12:17:47 UTC (rev 3779)
@@ -12,6 +12,11 @@
void Sbar_FinaleOverlay()
{
+ vector pos;
+ pos_x = (vid_conwidth - 1)/2;
+ pos_y = 16;
+ pos_z = 0;
+ drawpic(pos, "gfx/finale", '0 0', '1 1 1', sbar_alpha_fg, DRAWFLAG_NORMAL);
}
void Sbar_DrawWeapon(float nr, float fade, float active)
@@ -251,15 +256,17 @@
str = ftos(tm.sb_frags);
tmp_x = 4*8 - strlen(str) * 8;
- drawstring(pos + tmp, str, '8 8 0', rgb, 1, 0);
+ drawstring(pos + tmp, str, '8 8 0', '1 1 1', 1, 0);
+ rgb += '0.3 0.3 0.3';
+ rgb = normalize(rgb * 5);
drawstring(pos + '48 0 0', name, '8 8 0', rgb, 1, 0);
}
void Sbar_DrawScoreboard()
{
// Assume: frags are already sorted
- float xmin, xmax, ymin, ymax;
+ float xmin, xmax, ymin, ymax, plcount;
vector pos, teammin, teammax, rgb;
entity pl, tm;
float specs;
@@ -267,46 +274,61 @@
xmin = vid_conwidth / 4;
xmax = vid_conwidth - xmin;
- ymin = 64;
+ ymin = 48 - 26;
ymax = vid_conheight - 50;
- pos_x = xmin;
pos_y = ymin;
pos_z = 0;
teammin = teammax = '0 0 0';
teammin_x = xmin - 2;
teammax_x = xmax - 2;
-
+
+ pos_x = 0.5 * (xmin + xmax) - (24*5);
+ drawfont = FONT_USER+0;
+ drawstring(pos, "Scoreboard", '24 24 0', '1 1 1', 1, DRAWFLAG_NORMAL);
+ drawfont = 0;
+ pos_x = xmin;
+ pos_y += 26;
+
drawstring(pos, "ping", '8 8 0', '1 1 1', 1, 0);
drawstring(pos + '48 0 0', "frags", '8 8 0', '1 1 1', 1, 0);
drawstring(pos + '104 0 0', "name", '8 8 0', '1 1 1', 1, 0);
- pos += '0 16 0';
+ pos_y += 16;
if(teamplay)
{
- //for(t = 0; t < 4; ++t)
+ /*teampos_z = 0;
+ teampos_y = pos_y - 40;
+ teampos_x = (vid_conwidth * 0.5) - (numteams*6*12);*/
for(tm = sortedTeams.sort_next; tm; tm = tm.sort_next)
{
if(!tm.sb_player || tm.sb_team == COLOR_SPECTATOR) // no players in it?
continue;
+ //Sbar_DrawXNum(teampos-sbar, tm.sb_frags, -4, 24, GetTeamRGB(tm.sb_team), 1, DRAWFLAG_NORMAL);
+ //teampos_x += 6*24;
+ Sbar_DrawXNum(pos-'106 0 0'-sbar, tm.sb_frags, 4, 24, GetTeamRGB(tm.sb_team), 1, DRAWFLAG_NORMAL);
+
teammin_y = pos_y - 2;
- teammax_y = pos_y + 2 + 10 * (tm.sb_player+1);
+ teammax_y = pos_y + 2 + 10 * (tm.sb_player);
rgb = GetTeamRGB(tm.sb_team);
drawfill(teammin, teammax - teammin, rgb, 0.2, DRAWFLAG_NORMAL);
- Sbar_PrintScoreboardTeamItem(pos, tm, rgb, GetTeamName(tm.sb_team));
- pos += '0 12 0';
+ /*Sbar_PrintScoreboardTeamItem(pos, tm, rgb, GetTeamName(tm.sb_team));
+ pos_y += 12;*/
//for(i = 0; i < maxclients; ++i)
+ plcount = 0;
for(pl = sortedPlayers.sort_next; pl; pl = pl.sort_next)
{
if(pl.sb_team != tm.sb_team)
continue;
Sbar_PrintScoreboardItem(pos, pl, (pl.sb_player == player_localentnum - 1), 0);
- pos += '0 10 0';
+ pos_y += 10;
+ ++plcount;
}
-
- pos += '0 12 0';
+ pos_y += 12;
+ if(plcount < 2)
+ pos_y += 12;
}
// rgb := tempvector :)
@@ -508,7 +530,7 @@
void Sbar_MiniDeathmatchOverlay(vector pos)
{
- float i, numlines, up, down;
+ float numlines, up, down;
entity me, tm, pl;
float miniscoreboard_size;
miniscoreboard_size = cvar("sbar_miniscoreboard_size");
Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh 2008-07-05 19:00:16 UTC (rev 3778)
+++ trunk/data/qcsrc/common/constants.qh 2008-07-06 12:17:47 UTC (rev 3779)
@@ -1,10 +1,3 @@
-
-const float STAT_CTF_STATE = 32;
-
-const float CTF_STATE_ATTACK = 1;
-const float CTF_STATE_DEFEND = 2;
-const float CTF_STATE_COMMANDER = 3;
-
// probably put these in common/
// so server/ and client/ can be synced better
const float GAME_DEATHMATCH = 1;
@@ -160,3 +153,11 @@
const float TE_CSQC_PING = 100;
const float TE_CSQC_END = 100;
+
+const float STAT_KH_KEYS = 32;
+
+const float STAT_CTF_STATE = 33;
+const float CTF_STATE_ATTACK = 1;
+const float CTF_STATE_DEFEND = 2;
+const float CTF_STATE_COMMANDER = 3;
+
Modified: trunk/data/qcsrc/server/keyhunt.qc
===================================================================
--- trunk/data/qcsrc/server/keyhunt.qc 2008-07-05 19:00:16 UTC (rev 3778)
+++ trunk/data/qcsrc/server/keyhunt.qc 2008-07-06 12:17:47 UTC (rev 3779)
@@ -23,8 +23,12 @@
string kh_Controller_Waitmsg;
+// kh_state
+// bits 0-7: player's key status
+// bits 8-15: general key status
+.float kh_state;
.float siren_time; // time delay the siren
-.float stuff_time; // time delay to stuffcmd a cvar
+//.float stuff_time; // time delay to stuffcmd a cvar
float test[17] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//test[0] = status of dropped keys, test[1 - 16] = player #
@@ -209,9 +213,10 @@
test[key.owner.playerid] = i;
kh_show_temp();
+ if(key.owner)
+ key.owner.kh_state = (key.owner.kh_state | 255) - 255 + test[key.owner.playerid];
+ //key.owner.kh_state += test[key.owner.playerid];
- stuffcmd(key.owner, strcat("set kh_keys ", ftos(test[key.owner.playerid]), "\n")); // send to current player
-
#ifdef KH_PLAYER_USE_ATTACHMENT
entity first;
first = key.owner.kh_next;
@@ -296,10 +301,6 @@
i += 8;
test[key.owner.playerid] = i;
- kh_show_temp();
-
- stuffcmd(player, strcat("set kh_keys ", ftos(test[key.owner.playerid]), "\n")); // send to current player
-
kh_Key_Attach(key);
if(key.kh_next == world)
@@ -310,7 +311,12 @@
player.waypointsprite_attachedforcarrier.team = player.team;
}
}
-
+
+ // moved that here, also update if there's no player
+ kh_show_temp();
+ if(key.owner)
+ key.owner.kh_state = (key.owner.kh_state | 255) - 255 + test[key.owner.playerid];
+
key.pusher = world;
}
@@ -434,12 +440,8 @@
key.kh_dropperteam = 0;
bprint(player.netname, "^7 picked up the ", key.netname, "\n");
- kh_show_temp();
+ kh_Key_AssignTo(key, player); // this also updates .kh_state
- stuffcmd(player, strcat("set kh_keys ", ftos(test[key.owner.playerid]), "\n")); // send to current player
-
- kh_Key_AssignTo(key, player);
-
if(kh_Key_AllOwnedByWhichTeam() != -1)
{
kh_interferemsg_time = time + 0.2;
@@ -493,18 +495,19 @@
void kh_Key_Think() // runs all the time
{
entity head;
- entity player; // needed by FOR_EACH_PLAYER
+ //entity player; // needed by FOR_EACH_PLAYER
if(intermission_running)
return;
-
+ /*
if(time > self.stuff_time)
{
FOR_EACH_PLAYER(player)
- stuffcmd(player, strcat("set kh_keys_status ", ftos(test[0]), "\n")); // send key status to all players
+ player.kh_state = test[0]*256 + (player.kh_state&255);
self.stuff_time = time + 1; // repeat in 1 second
}
+ */
#ifdef KH_KEY_ATTACHMENT_DEBUG
if(self.kh_prev == self.owner)
@@ -946,6 +949,8 @@
setmodel(kh_controller, "models/sprites/keycarrier-yellow.sp2");
kh_sprite_yellow = kh_controller.modelindex;
setmodel(kh_controller, "");
+
+ addstat(STAT_KH_KEYS, AS_INT, kh_state);
}
void kh_finalize()
@@ -956,34 +961,23 @@
kh_controller = world;
}
+/**
+ * kh_show_temp originally by victim.
+ * changed it to use the kh_state stat var
+ * Updates the general key stat bits for each player
+ */
void kh_show_temp()
{
entity player;
float i, j;
- switch(kh_teams)
- {
- case 2:
- j = 3;
- break;
- case 3:
- j = 7;
- break;
- case 4:
- j = 15;
- break;
- case 5:
- j = 31;
- break;
- }
-
j = 0; // reset/blank j
for(i=1; i<17; ++i) // replace 17 with cvar("maxplayers"); !!!!!!!!!
j += test[i];
test[0] = j;
+ j *= 256;
FOR_EACH_PLAYER(player)
- stuffcmd(player, strcat("set kh_keys_status ", ftos(test[0]), "\n")); // send key status to all players
-
-}
\ No newline at end of file
+ player.kh_state = j + (player.kh_state & 255); // update the general key bits
+}
More information about the nexuiz-commits
mailing list