Mod_ClearUsed();
- Mem_CheckSentinelsGlobal();
-
// precache models
memset (cl.model_precache, 0, sizeof(cl.model_precache));
for (nummodels=1 ; ; nummodels++)
break;
if (nummodels==MAX_MODELS)
{
- Con_Printf ("Server sent too many model precaches\n");
+ Host_Error ("Server sent too many model precaches\n");
return;
}
if (strlen(str) >= MAX_QPATH)
break;
if (numsounds==MAX_SOUNDS)
{
- Con_Printf ("Server sent too many sound precaches\n");
+ Host_Error ("Server sent too many sound precaches\n");
return;
}
if (strlen(str) >= MAX_QPATH)
S_TouchSound (str);
}
- Mem_CheckSentinelsGlobal();
-
Mod_PurgeUnused();
//
for (i=1 ; i<nummodels ; i++)
{
// LordHavoc: i == 1 means the first model is the world model
- cl.model_precache[i] = Mod_ForName (model_precache[i], false, true, i == 1);
+ cl.model_precache[i] = Mod_ForName (model_precache[i], false, false, i == 1);
if (cl.model_precache[i] == NULL)
{
- Con_Printf("Model %s not found\n", model_precache[i]);
+ Host_Error("Model %s not found\n", model_precache[i]);
return;
}
CL_KeepaliveMessage ();
Mem_CheckSentinelsGlobal();
+ CL_CGVM_Start();
+
+ Mem_CheckSentinelsGlobal();
+
noclip_anglehack = false; // noclip is turned off at start
}
new.time = ent->state_current.time;
if (memcmp(&new, &ent->state_current, sizeof(entity_state_t)))
{
+ // set it back to what it should be
+ new.time = cl.mtime[0] + 0.1;
// state has changed
ent->state_previous = ent->state_current;
ent->state_current = new;
// assume 10fps animation
- ent->state_previous.time = cl.mtime[0];
- ent->state_current.time = cl.mtime[0] + 0.1; //ent->state_previous.time + 0.1;
+ //ent->state_previous.time = cl.mtime[0] - 0.1;
}
}
else
#define SHOWNET(x) if(cl_shownet.integer==2)Con_Printf ("%3i:%s\n", msg_readcount-1, x);
+static byte cgamenetbuffer[65536];
+
/*
=====================
CL_ParseServerMessage
temp = "<unknown>";
cmdlogname[cmdindex] = temp;
}
-
+
// other commands
switch (cmd)
{
Host_Error ("CL_ParseServerMessage: Illegible server message\n");
}
break;
-
+
case svc_nop:
// Con_Printf ("svc_nop\n");
break;
-
+
case svc_time:
// handle old protocols which do not have entity update ranges
entitiesupdated = true;
cl.mtime[1] = cl.mtime[0];
- cl.mtime[0] = MSG_ReadFloat ();
+ cl.mtime[0] = MSG_ReadFloat ();
break;
case svc_clientdata:
i = MSG_ReadShort ();
CL_ParseClientdata (i);
break;
-
+
case svc_version:
i = MSG_ReadLong ();
if (i != PROTOCOL_VERSION && i != DPPROTOCOL_VERSION && i != 250)
case svc_print:
Con_Printf ("%s", MSG_ReadString ());
break;
-
+
case svc_centerprint:
SCR_CenterPrint (MSG_ReadString ());
break;
-
+
case svc_stufftext:
Cbuf_AddText (MSG_ReadString ());
break;
cl_lightstyle[i].map[MAX_STYLESTRING - 1] = 0;
cl_lightstyle[i].length = strlen(cl_lightstyle[i].map);
break;
-
+
case svc_sound:
CL_ParseStartSoundPacket(false);
break;
Host_Error ("CL_ParseServerMessage: svc_updatename >= MAX_SCOREBOARD");
strcpy (cl.scores[i].name, MSG_ReadString ());
break;
-
+
case svc_updatefrags:
i = MSG_ReadByte ();
if (i >= cl.maxclients)
Host_Error ("svc_updatestat: %i is invalid", i);
cl.stats[i] = MSG_ReadLong ();
break;
-
+
case svc_spawnstaticsound:
CL_ParseStaticSound (false);
break;
case svc_skybox:
R_SetSkyBox(MSG_ReadString());
break;
+ case svc_cgame:
+ {
+ int length;
+ length = (int) ((unsigned short) MSG_ReadShort());
+ /*
+ if (cgamenetbuffersize < length)
+ {
+ cgamenetbuffersize = length;
+ if (cgamenetbuffer)
+ Mem_Free(cgamenetbuffer);
+ cgamenetbuffer = Mem_Alloc(cgamenetbuffersize);
+ }
+ */
+ for (i = 0;i < length;i++)
+ cgamenetbuffer[i] = MSG_ReadByte();
+ if (!msg_badread)
+ CL_CGVM_ParseNetwork(cgamenetbuffer, length);
+ }
+ break;
}
}