From 4e3b2e52c7648f2db578fcba4f49db2b8445b000 Mon Sep 17 00:00:00 2001 From: div0 Date: Thu, 12 Jun 2008 05:58:21 +0000 Subject: [PATCH] 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? git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3701 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/cl_client.qc | 147 ++++++++++++++++++--------------- 1 file changed, 79 insertions(+), 68 deletions(-) diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc index 6445fac0a..e52c0f77a 100644 --- a/data/qcsrc/server/cl_client.qc +++ b/data/qcsrc/server/cl_client.qc @@ -1436,20 +1436,19 @@ void SpectateCopy(entity spectatee) { 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 @@ float SpectateNext() { 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 @@ float vercmp(string v1, string v2) 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 @@ void PlayerPreThink (void) 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(); } } -- 2.39.2