[nexuiz-commits] r8120 - in trunk/data/qcsrc: client common server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Oct 13 14:43:02 EDT 2009


Author: fruitiex
Date: 2009-10-13 14:43:02 -0400 (Tue, 13 Oct 2009)
New Revision: 8120

Modified:
   trunk/data/qcsrc/client/Defs.qc
   trunk/data/qcsrc/client/Main.qc
   trunk/data/qcsrc/client/sbar.qc
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/cl_physics.qc
Log:
speed awards for CTS!


Modified: trunk/data/qcsrc/client/Defs.qc
===================================================================
--- trunk/data/qcsrc/client/Defs.qc	2009-10-13 18:41:37 UTC (rev 8119)
+++ trunk/data/qcsrc/client/Defs.qc	2009-10-13 18:43:02 UTC (rev 8120)
@@ -193,6 +193,8 @@
 float race_penaltytime; // duration of penalty time, in tenths
 string race_penaltyreason; // reason for penalty
 float race_server_record; // server record
+float race_speed_award;
+string race_speed_award_holder;
 
 // RACE
 float race_mycheckpoint;

Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc	2009-10-13 18:41:37 UTC (rev 8119)
+++ trunk/data/qcsrc/client/Main.qc	2009-10-13 18:43:02 UTC (rev 8120)
@@ -1031,6 +1031,10 @@
 		case RACE_NET_SERVER_RECORD:
 			race_server_record = ReadInt24_t();
 			break;
+		case RACE_NET_SPEED_AWARD:
+			race_speed_award = ReadShort();
+			race_speed_award_holder = strzone(ReadString());
+			break;
 	}
 }
 

Modified: trunk/data/qcsrc/client/sbar.qc
===================================================================
--- trunk/data/qcsrc/client/sbar.qc	2009-10-13 18:41:37 UTC (rev 8119)
+++ trunk/data/qcsrc/client/sbar.qc	2009-10-13 18:43:02 UTC (rev 8120)
@@ -1210,9 +1210,14 @@
 		}
 	}
 
+	if(gametype == GAME_CTS && race_speed_award) {
+		drawcolorcodedstring(pos, strcat("Speed award: ", ftos(race_speed_award), " (", race_speed_award_holder, ")"), sbar_fontsize, sbar_scoreboard_alpha_fg, DRAWFLAG_NORMAL);
+		pos_y += 1.25 * sbar_fontsize_y;	
+	}
+
 	tmp = pos + '0 1.5 0' * sbar_fontsize_y;
 	pos_y += 3 * sbar_fontsize_y;
-	
+
 	// List spectators
 	float specs;
 	specs = 0;

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2009-10-13 18:41:37 UTC (rev 8119)
+++ trunk/data/qcsrc/common/constants.qh	2009-10-13 18:43:02 UTC (rev 8120)
@@ -60,6 +60,7 @@
 const float RACE_NET_PENALTY_RACE = 6; // byte penaltytime, string reason
 const float RACE_NET_PENALTY_QUALIFYING = 7; // byte penaltytime, string reason
 const float RACE_NET_SERVER_RECORD = 8; // server record, sent to client
+const float RACE_NET_SPEED_AWARD = 9; // speed award, sent to client
 
 const float ENT_CLIENT = 0;
 const float ENT_CLIENT_DEAD = 1;

Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2009-10-13 18:41:37 UTC (rev 8119)
+++ trunk/data/qcsrc/server/cl_client.qc	2009-10-13 18:43:02 UTC (rev 8120)
@@ -1466,6 +1466,8 @@
 		t = stof(db_get(ServerProgsDB, strcat(GetMapname(), rr, "time")));
 
 		race_send_recordtime(t);
+		if (g_cts)
+			race_send_speedaward();
 	}
 }
 

Modified: trunk/data/qcsrc/server/cl_physics.qc
===================================================================
--- trunk/data/qcsrc/server/cl_physics.qc	2009-10-13 18:41:37 UTC (rev 8119)
+++ trunk/data/qcsrc/server/cl_physics.qc	2009-10-13 18:43:02 UTC (rev 8120)
@@ -512,6 +512,22 @@
 #endif
 }
 
+float speedaward_speed;
+string speedaward_holder;
+void race_send_speedaward()
+{
+	// send the best speed of the round
+	WRITESPECTATABLE_MSG_ONE({
+	WriteByte(MSG_ONE, SVC_TEMPENTITY);
+	WriteByte(MSG_ONE, TE_CSQC_RACE);
+	WriteByte(MSG_ONE, RACE_NET_SPEED_AWARD);
+	WriteShort(MSG_ONE, floor(speedaward_speed+0.5));
+	WriteString(MSG_ONE, speedaward_holder);
+});
+}
+
+float speedaward_lastupdate;
+float speedaward_lastsent;
 void SV_PlayerPhysics()
 {
 	local vector wishvel, wishdir, v;
@@ -1157,6 +1173,17 @@
 		}
 	}
 
+	if(g_cts && self.classname != "observer") {
+		if(vlen(self.velocity - self.velocity_z * '0 0 1') > speedaward_speed) {
+			speedaward_speed = vlen(self.velocity - self.velocity_z * '0 0 1');
+			speedaward_holder = self.netname;
+			speedaward_lastupdate = time;
+		}
+		if(speedaward_speed > speedaward_lastsent && time - speedaward_lastupdate > 1) {
+			race_send_speedaward();
+			speedaward_lastsent = speedaward_speed;
+		}
+	}
 :end
 	if(self.flags & FL_ONGROUND)
 		self.lastground = time;



More information about the nexuiz-commits mailing list