r4139 - in trunk/data/qcsrc: client common server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Aug 21 12:20:23 EDT 2008


Author: div0
Date: 2008-08-21 12:20:23 -0400 (Thu, 21 Aug 2008)
New Revision: 4139

Modified:
   trunk/data/qcsrc/client/Main.qc
   trunk/data/qcsrc/common/constants.qh
   trunk/data/qcsrc/server/cl_client.qc
   trunk/data/qcsrc/server/race.qc
   trunk/data/qcsrc/server/race.qh
Log:
race: completed spectator support


Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc	2008-08-21 16:03:05 UTC (rev 4138)
+++ trunk/data/qcsrc/client/Main.qc	2008-08-21 16:20:23 UTC (rev 4139)
@@ -609,6 +609,9 @@
 			race_checkpointtime = 0;
 			break;
 
+		case RACE_NET_CHECKPOINT_NEXT_SPEC_QUALIFYING:
+			race_laptime = ReadCoord();
+			// fall through
 		case RACE_NET_CHECKPOINT_NEXT_QUALIFYING:
 			race_nextcheckpoint = ReadByte();
 

Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh	2008-08-21 16:03:05 UTC (rev 4138)
+++ trunk/data/qcsrc/common/constants.qh	2008-08-21 16:20:23 UTC (rev 4139)
@@ -211,6 +211,7 @@
 const float RACE_NET_CHECKPOINT_NEXT_QUALIFYING = 2; // byte nextcheckpoint, short recordtime, string recordholder
 const float RACE_NET_CHECKPOINT_HIT_RACE = 3; // byte checkpoint, short delta, byte lapsdelta, string opponent
 const float RACE_NET_CHECKPOINT_HIT_RACE_BY_OPPONENT = 4; // byte checkpoint, short delta, byte lapsdelta, string opponent
+const float RACE_NET_CHECKPOINT_NEXT_SPEC_QUALIFYING = 5; // byte nextcheckpoint, float laptime, short recordtime, string recordholder
 
 /**
  * Lower scores are better (e.g. suicides)

Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2008-08-21 16:03:05 UTC (rev 4138)
+++ trunk/data/qcsrc/server/cl_client.qc	2008-08-21 16:20:23 UTC (rev 4139)
@@ -2202,6 +2202,8 @@
 		WriteByte(MSG_ONE, SVC_TEMPENTITY);
 		WriteByte(MSG_ONE, TE_CSQC_SPECTATING);
 		WriteByte(MSG_ONE, self.spectatee_status);
+		if(g_race)
+			race_InitSpectator();
 	}
 }
 

Modified: trunk/data/qcsrc/server/race.qc
===================================================================
--- trunk/data/qcsrc/server/race.qc	2008-08-21 16:03:05 UTC (rev 4138)
+++ trunk/data/qcsrc/server/race.qc	2008-08-21 16:20:23 UTC (rev 4139)
@@ -32,7 +32,7 @@
 		return f - 1;
 }
 
-void race_SendNextCheckpoint(entity e)
+void race_SendNextCheckpoint(entity e, float spec)
 {
 	float recordtime;
 	string recordholder;
@@ -51,17 +51,30 @@
 	if(recordholder == e.netname)
 		recordholder = "";
 
-	msg_entity = e;
+	if(!spec)
+		msg_entity = e;
 	WRITESPECTATABLE_MSG_ONE({
 		WriteByte(MSG_ONE, SVC_TEMPENTITY);
 		WriteByte(MSG_ONE, TE_CSQC_RACE);
-		WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_NEXT_QUALIFYING);
+		if(spec)
+		{
+			WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_NEXT_SPEC_QUALIFYING);
+			WriteCoord(MSG_ONE, e.race_laptime);
+		}
+		else
+			WriteByte(MSG_ONE, RACE_NET_CHECKPOINT_NEXT_QUALIFYING);
 		WriteByte(MSG_ONE, cp); // checkpoint the player will be at next
 		WriteShort(MSG_ONE, recordtime);
 		WriteString(MSG_ONE, recordholder);
 	});
 }
 
+void race_InitSpectator()
+{
+	if(self.enemy.race_laptime)
+		race_SendNextCheckpoint(self.enemy, 1);
+}
+
 void race_SendTime(entity e, float cp, float t, float tvalid)
 {
 	float snew, l;
@@ -162,7 +175,7 @@
 					entity p;
 					FOR_EACH_REALPLAYER(p)
 						if(p.race_checkpoint == cp)
-							race_SendNextCheckpoint(p);
+							race_SendNextCheckpoint(p, 0);
 				}
 			}
 		}
@@ -276,7 +289,7 @@
 			other.race_laptime = time;
 
 		if(g_race_qualifying)
-			race_SendNextCheckpoint(other);
+			race_SendNextCheckpoint(other, 0);
 	}
 	else if(other.race_checkpoint == race_NextCheckpoint(self.race_checkpoint))
 	{

Modified: trunk/data/qcsrc/server/race.qh
===================================================================
--- trunk/data/qcsrc/server/race.qh	2008-08-21 16:03:05 UTC (rev 4138)
+++ trunk/data/qcsrc/server/race.qh	2008-08-21 16:20:23 UTC (rev 4139)
@@ -1,3 +1,4 @@
+void race_InitSpectator();
 void race_PreSpawnObserver();
 void race_PreSpawn();
 void race_PostSpawn(entity spot);




More information about the nexuiz-commits mailing list