r3701 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Jun 12 01:58:22 EDT 2008


Author: div0
Date: 2008-06-12 01:58:21 -0400 (Thu, 12 Jun 2008)
New Revision: 3701

Modified:
   trunk/data/qcsrc/server/cl_client.qc
Log:
move the spectator think code into a separate function
later plan: possibly add spectating your team mates while alive
open questions for that: why does SpectateCopy overwrite all that stuff instead of just putting the camera origin in the other player?


Modified: trunk/data/qcsrc/server/cl_client.qc
===================================================================
--- trunk/data/qcsrc/server/cl_client.qc	2008-06-09 05:30:41 UTC (rev 3700)
+++ trunk/data/qcsrc/server/cl_client.qc	2008-06-12 05:58:21 UTC (rev 3701)
@@ -1436,20 +1436,19 @@
 	setsize(self, spectatee.mins, spectatee.maxs);
 }
 
-void SpectateUpdate() {
+float SpectateUpdate() {
 	if(!self.enemy)
-			PutObserverInServer();
+		return 0;
 
-	if (self != self.enemy) {
-		if(self.enemy.flags & FL_NOTARGET)
-			PutObserverInServer();
-		SpectateCopy(self.enemy);
-		//msg_entity = self;
-		//WriteByte(MSG_ONE, SVC_SETANGLE);
-		//WriteAngle(MSG_ONE, self.enemy.v_angle_x);
-		//WriteAngle(MSG_ONE, self.enemy.v_angle_y);
-		//WriteAngle(MSG_ONE, self.enemy.v_angle_z);
-	}
+	if (self == self.enemy)
+		return 0;
+	
+	if(self.enemy.flags & FL_NOTARGET)
+		return 0;
+
+	SpectateCopy(self.enemy);
+
+	return 1;
 }
 
 float SpectateNext() {
@@ -1466,7 +1465,8 @@
 		WriteEntity(MSG_ONE, self.enemy);
 		self.wantswelcomemessage = 1;
 	 	//stuffcmd(self, "set viewsize $tmpviewsize \n");
-		SpectateUpdate();
+		if(!SpectateUpdate())
+			PutObserverInServer();
 		return 1;
 	} else {
 		return 0;
@@ -1603,6 +1603,70 @@
 	return vercmp_recursive(v1, v2);
 }
 
+void ObserverThink()
+{
+	if (self.flags & FL_JUMPRELEASED) {
+		if (self.button2 && self.version == cvar("gameversion")) {
+			self.welcomemessage_time = 0;
+			self.flags = self.flags - FL_JUMPRELEASED;
+			LeaveSpectatorMode();
+			return;
+		} else if(self.button0 && self.version == cvar("gameversion")) {
+			self.welcomemessage_time = 0;
+			self.flags = self.flags - FL_JUMPRELEASED;
+			if(SpectateNext() == 1) {
+				self.classname = "spectator";
+			}
+		}
+	} else {
+		if (!(self.button0 || self.button2)) {
+			self.flags = self.flags | FL_JUMPRELEASED;
+		}
+	}
+	if(self.button4)
+		self.wantswelcomemessage = 0;
+	if(self.wantswelcomemessage)
+		PrintWelcomeMessage(self);
+}
+
+void SpectatorThink()
+{
+	if (self.flags & FL_JUMPRELEASED) {
+		if (self.button2 && self.version == cvar("gameversion")) {
+			self.welcomemessage_time = 0;
+			self.flags = self.flags - FL_JUMPRELEASED;
+			LeaveSpectatorMode();
+			return;
+		} else if(self.button0) {
+			self.welcomemessage_time = 0;
+			self.flags = self.flags - FL_JUMPRELEASED;
+			if(SpectateNext() == 1) {
+				self.classname = "spectator";
+			} else {
+				self.classname = "observer";
+				PutClientInServer();
+			}
+		} else if (self.button3) {
+			self.welcomemessage_time = 0;
+			self.flags = self.flags - FL_JUMPRELEASED;
+			self.classname = "observer";
+			PutClientInServer();
+		} else {
+			if(!SpectateUpdate())
+				PutObserverInServer();
+		}
+	} else {
+		if (!(self.button0 || self.button3)) {
+			self.flags = self.flags | FL_JUMPRELEASED;
+		}
+	}
+	if(self.button4)
+		self.wantswelcomemessage = 0;
+	if(self.wantswelcomemessage)
+		PrintWelcomeMessage(self);
+	self.flags = self.flags | FL_CLIENT | FL_NOTARGET;
+}
+
 /*
 =============
 PlayerPreThink
@@ -1875,62 +1939,9 @@
 			IntermissionThink ();	// otherwise a button could be missed between
 		return;
 	} else if(self.classname == "observer") {
-		if (self.flags & FL_JUMPRELEASED) {
-			if (self.button2 && self.version == cvar("gameversion")) {
-				self.welcomemessage_time = 0;
-				self.flags = self.flags - FL_JUMPRELEASED;
-				LeaveSpectatorMode();
-				return;
-			} else if(self.button0 && self.version == cvar("gameversion")) {
-				self.welcomemessage_time = 0;
-				self.flags = self.flags - FL_JUMPRELEASED;
-				if(SpectateNext() == 1) {
-					self.classname = "spectator";
-				}
-			}
-        	} else {
-        		if (!(self.button0 || self.button2)) {
-				self.flags = self.flags | FL_JUMPRELEASED;
-        		}
-		}
-		if(self.button4)
-			self.wantswelcomemessage = 0;
-		if(self.wantswelcomemessage)
-			PrintWelcomeMessage(self);
+		ObserverThink();
 	} else if(self.classname == "spectator") {
-		if (self.flags & FL_JUMPRELEASED) {
-			if (self.button2 && self.version == cvar("gameversion")) {
-				self.welcomemessage_time = 0;
-				self.flags = self.flags - FL_JUMPRELEASED;
-				LeaveSpectatorMode();
-				return;
-			} else if(self.button0) {
-				self.welcomemessage_time = 0;
-				self.flags = self.flags - FL_JUMPRELEASED;
-				if(SpectateNext() == 1) {
-					self.classname = "spectator";
-				} else {
-					self.classname = "observer";
-					PutClientInServer();
-				}
-			} else if (self.button3) {
-				self.welcomemessage_time = 0;
-				self.flags = self.flags - FL_JUMPRELEASED;
-				self.classname = "observer";
-				PutClientInServer();
-			} else {
-				SpectateUpdate();
-			}
-	        } else {
-	        	if (!(self.button0 || self.button3)) {
-				self.flags = self.flags | FL_JUMPRELEASED;
-        		}
-		}
-		if(self.button4)
-			self.wantswelcomemessage = 0;
-		if(self.wantswelcomemessage)
-			PrintWelcomeMessage(self);
-		self.flags = self.flags | FL_CLIENT | FL_NOTARGET;
+		SpectatorThink();
 	}
 }
 




More information about the nexuiz-commits mailing list