More cl_parse tidyup.

svcs are now in order: makes it even easier to see what's different between
nq and qw.
This commit is contained in:
Bill Currie 2012-05-26 10:39:42 +09:00
parent 476ad75724
commit 7299ca7bec
2 changed files with 203 additions and 156 deletions

View file

@ -868,8 +868,8 @@ void
CL_ParseServerMessage (void) CL_ParseServerMessage (void)
{ {
int cmd = 0, i, j; int cmd = 0, i, j;
signon_t so;
const char *str; const char *str;
signon_t so;
// if recording demos, copy the message out // if recording demos, copy the message out
if (cl_shownet->int_val == 1) if (cl_shownet->int_val == 1)
@ -908,19 +908,19 @@ CL_ParseServerMessage (void)
switch (cmd) { switch (cmd) {
default: default:
Host_Error ("CL_ParseServerMessage: Illegible server " Host_Error ("CL_ParseServerMessage: Illegible server "
"message %d\n", cmd); "message: %d\n", cmd);
break; break;
case svc_nop: case svc_nop:
break; break;
case svc_time: case svc_disconnect:
cl.mtime[1] = cl.mtime[0]; Host_EndGame ("Server disconnected\n");
cl.mtime[0] = MSG_ReadFloat (net_message);
break;
case svc_clientdata: case svc_updatestat:
CL_ParseClientdata (); i = MSG_ReadByte (net_message);
j = MSG_ReadLong (net_message);
CL_SetStat (i, j);
break; break;
case svc_version: case svc_version:
@ -932,36 +932,28 @@ CL_ParseServerMessage (void)
cl.protocol = i; cl.protocol = i;
break; break;
case svc_disconnect: case svc_setview:
Host_EndGame ("Server disconnected\n"); cl.viewentity = MSG_ReadShort (net_message);
viewentity = cl.viewentity; // FIXME: evil hack
break;
case svc_sound:
CL_ParseStartSoundPacket ();
break;
case svc_time:
cl.mtime[1] = cl.mtime[0];
cl.mtime[0] = MSG_ReadFloat (net_message);
break;
case svc_print: case svc_print:
Sys_Printf ("%s", MSG_ReadString (net_message)); Sys_Printf ("%s", MSG_ReadString (net_message));
break; break;
case svc_centerprint:
str = MSG_ReadString (net_message);
if (strcmp (str, centerprint->str)) {
dstring_copystr (centerprint, str);
//FIXME logging
}
Sbar_CenterPrint (str);
break;
case svc_stufftext: case svc_stufftext:
Cbuf_AddText (host_cbuf, MSG_ReadString (net_message)); Cbuf_AddText (host_cbuf, MSG_ReadString (net_message));
break; break;
case svc_damage:
V_ParseDamage ();
break;
case svc_serverinfo:
CL_ParseServerInfo ();
// leave intermission full screen
r_data->vid->recalc_refdef = true;
break;
case svc_setangle: case svc_setangle:
{ {
vec_t *dest = cl.viewangles; vec_t *dest = cl.viewangles;
@ -969,9 +961,11 @@ CL_ParseServerMessage (void)
MSG_ReadAngleV (net_message, dest); MSG_ReadAngleV (net_message, dest);
break; break;
} }
case svc_setview:
cl.viewentity = MSG_ReadShort (net_message); case svc_serverinfo:
viewentity = cl.viewentity; // FIXME: evil hack CL_ParseServerInfo ();
// leave intermission full screen
r_data->vid->recalc_refdef = true;
break; break;
case svc_lightstyle: case svc_lightstyle:
@ -980,16 +974,15 @@ CL_ParseServerMessage (void)
Host_Error ("svc_lightstyle > MAX_LIGHTSTYLES"); Host_Error ("svc_lightstyle > MAX_LIGHTSTYLES");
strcpy (cl.lightstyle[i].map, MSG_ReadString (net_message)); strcpy (cl.lightstyle[i].map, MSG_ReadString (net_message));
cl.lightstyle[i].length = strlen (cl.lightstyle[i].map); cl.lightstyle[i].length = strlen (cl.lightstyle[i].map);
// FIXME extra info
break; break;
case svc_sound: case svc_updatename:
CL_ParseStartSoundPacket (); Sbar_Changed ();
break; i = MSG_ReadByte (net_message);
if (i >= cl.maxclients)
case svc_stopsound: Host_Error ("CL_ParseServerMessage: svc_updatename > "
i = MSG_ReadShort (net_message); "MAX_SCOREBOARD");
S_StopSound (i >> 3, i & 7); strcpy (cl.scores[i].name, MSG_ReadString (net_message));
break; break;
case svc_updatefrags: case svc_updatefrags:
@ -1001,13 +994,13 @@ CL_ParseServerMessage (void)
cl.scores[i].frags = (short) MSG_ReadShort (net_message); cl.scores[i].frags = (short) MSG_ReadShort (net_message);
break; break;
case svc_updatename: case svc_clientdata:
Sbar_Changed (); CL_ParseClientdata ();
i = MSG_ReadByte (net_message); break;
if (i >= cl.maxclients)
Host_Error ("CL_ParseServerMessage: svc_updatename > " case svc_stopsound:
"MAX_SCOREBOARD"); i = MSG_ReadShort (net_message);
strcpy (cl.scores[i].name, MSG_ReadString (net_message)); S_StopSound (i >> 3, i & 7);
break; break;
case svc_updatecolors: case svc_updatecolors:
@ -1031,17 +1024,22 @@ CL_ParseServerMessage (void)
CL_ParseParticleEffect (); CL_ParseParticleEffect ();
break; break;
case svc_damage:
V_ParseDamage ();
break;
case svc_spawnstatic:
CL_ParseStatic (1);
break;
// svc_spawnbinary
case svc_spawnbaseline: case svc_spawnbaseline:
i = MSG_ReadShort (net_message); i = MSG_ReadShort (net_message);
// must use CL_EntityNum () to force cl.num_entities up // must use CL_EntityNum () to force cl.num_entities up
CL_ParseBaseline (CL_EntityNum (i), 1); CL_ParseBaseline (CL_EntityNum (i), 1);
break; break;
case svc_spawnstatic:
CL_ParseStatic (1);
break;
case svc_spawnstaticsound:
CL_ParseStaticSound (1);
break;
case svc_temp_entity: case svc_temp_entity:
CL_ParseTEnt (); CL_ParseTEnt ();
break; break;
@ -1063,6 +1061,15 @@ CL_ParseServerMessage (void)
CL_SignonReply (); CL_SignonReply ();
break; break;
case svc_centerprint:
str = MSG_ReadString (net_message);
if (strcmp (str, centerprint->str)) {
dstring_copystr (centerprint, str);
//FIXME logging
}
Sbar_CenterPrint (str);
break;
case svc_killedmonster: case svc_killedmonster:
cl.stats[STAT_MONSTERS]++; cl.stats[STAT_MONSTERS]++;
break; break;
@ -1071,10 +1078,28 @@ CL_ParseServerMessage (void)
cl.stats[STAT_SECRETS]++; cl.stats[STAT_SECRETS]++;
break; break;
case svc_updatestat: case svc_spawnstaticsound:
i = MSG_ReadByte (net_message); CL_ParseStaticSound (1);
j = MSG_ReadLong (net_message); break;
CL_SetStat (i, j);
case svc_intermission:
cl.intermission = 1;
r_data->force_fullscreen = 1;
cl.completed_time = cl.time;
r_data->vid->recalc_refdef = true; // go to full screen
break;
case svc_finale:
cl.intermission = 2;
r_data->force_fullscreen = 1;
cl.completed_time = cl.time;
r_data->vid->recalc_refdef = true; // go to full screen
str = MSG_ReadString (net_message);
if (strcmp (str, centerprint->str)) {
dstring_copystr (centerprint, str);
//FIXME logging
}
Sbar_CenterPrint (str);
break; break;
case svc_cdtrack: case svc_cdtrack:
@ -1087,24 +1112,8 @@ CL_ParseServerMessage (void)
CDAudio_Play ((byte) cl.cdtrack, true); CDAudio_Play ((byte) cl.cdtrack, true);
break; break;
case svc_intermission: case svc_sellscreen:
cl.intermission = 1; Cmd_ExecuteString ("help", src_command);
r_data->force_fullscreen = 1;
cl.completed_time = cl.time;
r_data->vid->recalc_refdef = true; // go to full screen
break;
case svc_finale:
cl.intermission = 2;
r_data->force_fullscreen = 1;
cl.completed_time = cl.time;
r_data->vid->recalc_refdef = true; // go to full screen
str = MSG_ReadString (net_message);
if (strcmp (str, centerprint->str)) {
dstring_copystr (centerprint, str);
//FIXME logging
}
Sbar_CenterPrint (str);
break; break;
case svc_cutscene: case svc_cutscene:
@ -1120,11 +1129,28 @@ CL_ParseServerMessage (void)
Sbar_CenterPrint (str); Sbar_CenterPrint (str);
break; break;
case svc_sellscreen: // svc_smallkick (same value as svc_cutscene)
Cmd_ExecuteString ("help", src_command); // svc_bigkick
break; // svc_updateping
// svc_updateentertime
// svc_updatestatlong
// svc_muzzleflash
// svc_updateuserinfo
// svc_download
// svc_playerinfo
// svc_nails
// svc_chokecount
// svc_modellist
// svc_soundlist
// svc_packetentities
// svc_deltapacketentities
// svc_maxspeed
// svc_entgravity
// svc_setinfo
// svc_serverinfo
// svc_updatepl
// PROTOCOL_FITZQUAKE // PROTOCOL_FITZQUAKE (these overlap with the above listed qw svcs)
case svc_skybox: case svc_skybox:
r_funcs->R_LoadSkys (MSG_ReadString(net_message)); r_funcs->R_LoadSkys (MSG_ReadString(net_message));
break; break;

View file

@ -129,7 +129,7 @@ const char *svc_strings[] = {
"svc_download", "svc_download",
"svc_playerinfo", "svc_playerinfo",
"svc_nails", "svc_nails",
"svc_choke", "svc_chokecount",
"svc_modellist", "svc_modellist",
"svc_soundlist", "svc_soundlist",
"svc_packetentities", "svc_packetentities",
@ -1296,7 +1296,7 @@ int received_framecount;
void void
CL_ParseServerMessage (void) CL_ParseServerMessage (void)
{ {
int cmd = 0, i, j; int cmd = 0, i, j;
const char *str; const char *str;
static dstring_t *stuffbuf; static dstring_t *stuffbuf;
@ -1348,6 +1348,21 @@ CL_ParseServerMessage (void)
Host_EndGame ("Server disconnected"); Host_EndGame ("Server disconnected");
break; break;
case svc_updatestat:
i = MSG_ReadByte (net_message);
j = MSG_ReadByte (net_message);
CL_SetStat (i, j);
break;
// svc_version
// svc_setview
case svc_sound:
CL_ParseStartSoundPacket ();
break;
// svc_time
case svc_print: case svc_print:
{ {
dstring_t *p = 0; dstring_t *p = 0;
@ -1381,15 +1396,6 @@ CL_ParseServerMessage (void)
Con_SetOrMask (0); Con_SetOrMask (0);
break; break;
} }
case svc_centerprint:
str = MSG_ReadString (net_message);
if (strcmp (str, centerprint->str)) {
dstring_copystr (centerprint, str);
//FIXME logging
}
Sbar_CenterPrint (str);
break;
case svc_stufftext: case svc_stufftext:
str = MSG_ReadString (net_message); str = MSG_ReadString (net_message);
if (str[strlen (str) - 1] == '\n') { if (str[strlen (str) - 1] == '\n') {
@ -1410,14 +1416,6 @@ CL_ParseServerMessage (void)
} }
break; break;
case svc_damage:
V_ParseDamage ();
break;
case svc_serverinfo:
CL_ServerInfo ();
break;
case svc_setangle: case svc_setangle:
{ {
vec_t *dest = cl.viewangles; vec_t *dest = cl.viewangles;
@ -1448,14 +1446,7 @@ CL_ParseServerMessage (void)
cl.lightstyle[i].length = strlen (cl.lightstyle[i].map); cl.lightstyle[i].length = strlen (cl.lightstyle[i].map);
break; break;
case svc_sound: // svc_updatename
CL_ParseStartSoundPacket ();
break;
case svc_stopsound:
i = MSG_ReadShort (net_message);
S_StopSound (i >> 3, i & 7);
break;
case svc_updatefrags: case svc_updatefrags:
Sbar_Changed (); Sbar_Changed ();
@ -1466,42 +1457,31 @@ CL_ParseServerMessage (void)
cl.players[i].frags = (short) MSG_ReadShort (net_message); cl.players[i].frags = (short) MSG_ReadShort (net_message);
break; break;
case svc_updateping: // svc_clientdata
i = MSG_ReadByte (net_message);
if (i >= MAX_CLIENTS) case svc_stopsound:
Host_Error ("CL_ParseServerMessage: svc_updateping > " i = MSG_ReadShort (net_message);
"MAX_SCOREBOARD"); S_StopSound (i >> 3, i & 7);
cl.players[i].ping = MSG_ReadShort (net_message);
break; break;
case svc_updatepl: // svc_updatecolors
i = MSG_ReadByte (net_message); // svc_particle
if (i >= MAX_CLIENTS)
Host_Error ("CL_ParseServerMessage: svc_updatepl > " case svc_damage:
"MAX_SCOREBOARD"); V_ParseDamage ();
cl.players[i].pl = MSG_ReadByte (net_message);
break; break;
case svc_updateentertime: case svc_spawnstatic:
// time is sent over as seconds ago CL_ParseStatic ();
i = MSG_ReadByte (net_message);
if (i >= MAX_CLIENTS)
Host_Error ("CL_ParseServerMessage: svc_updateentertime "
"> MAX_SCOREBOARD");
cl.players[i].entertime = realtime - MSG_ReadFloat
(net_message);
break; break;
// svc_spawnbinary
case svc_spawnbaseline: case svc_spawnbaseline:
i = MSG_ReadShort (net_message); i = MSG_ReadShort (net_message);
CL_ParseBaseline (&cl_baselines[i]); CL_ParseBaseline (&cl_baselines[i]);
break; break;
case svc_spawnstatic:
CL_ParseStatic ();
break;
case svc_spawnstaticsound:
CL_ParseStaticSound ();
break;
case svc_temp_entity: case svc_temp_entity:
CL_ParseTEnt (); CL_ParseTEnt ();
break; break;
@ -1514,6 +1494,17 @@ CL_ParseServerMessage (void)
CDAudio_Resume (); CDAudio_Resume ();
break; break;
// svc_signonnum
case svc_centerprint:
str = MSG_ReadString (net_message);
if (strcmp (str, centerprint->str)) {
dstring_copystr (centerprint, str);
//FIXME logging
}
Sbar_CenterPrint (str);
break;
case svc_killedmonster: case svc_killedmonster:
cl.stats[STAT_MONSTERS]++; cl.stats[STAT_MONSTERS]++;
break; break;
@ -1522,21 +1513,8 @@ CL_ParseServerMessage (void)
cl.stats[STAT_SECRETS]++; cl.stats[STAT_SECRETS]++;
break; break;
case svc_updatestat: case svc_spawnstaticsound:
i = MSG_ReadByte (net_message); CL_ParseStaticSound ();
j = MSG_ReadByte (net_message);
CL_SetStat (i, j);
break;
case svc_updatestatlong:
i = MSG_ReadByte (net_message);
j = MSG_ReadLong (net_message);
CL_SetStat (i, j);
break;
case svc_cdtrack:
cl.cdtrack = MSG_ReadByte (net_message);
CDAudio_Play ((byte) cl.cdtrack, true);
break; break;
case svc_intermission: case svc_intermission:
@ -1545,7 +1523,7 @@ CL_ParseServerMessage (void)
cl.intermission = 1; cl.intermission = 1;
r_data->force_fullscreen = 1; r_data->force_fullscreen = 1;
cl.completed_time = realtime; cl.completed_time = realtime;
r_data->vid->recalc_refdef = true; // go to full screen r_data->vid->recalc_refdef = true; // go to full screen
Sys_MaskPrintf (SYS_DEV, "intermission simorg: "); Sys_MaskPrintf (SYS_DEV, "intermission simorg: ");
MSG_ReadCoordV (net_message, cl.simorg); MSG_ReadCoordV (net_message, cl.simorg);
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
@ -1576,10 +1554,17 @@ CL_ParseServerMessage (void)
Sbar_CenterPrint (str); Sbar_CenterPrint (str);
break; break;
case svc_cdtrack:
cl.cdtrack = MSG_ReadByte (net_message);
CDAudio_Play ((byte) cl.cdtrack, true);
break;
case svc_sellscreen: case svc_sellscreen:
Cmd_ExecuteString ("help", src_command); Cmd_ExecuteString ("help", src_command);
break; break;
// svc_cutscene (same value as svc_smallkick)
case svc_smallkick: case svc_smallkick:
cl.punchangle = -2; cl.punchangle = -2;
break; break;
@ -1588,6 +1573,30 @@ CL_ParseServerMessage (void)
cl.punchangle = -4; cl.punchangle = -4;
break; break;
case svc_updateping:
i = MSG_ReadByte (net_message);
if (i >= MAX_CLIENTS)
Host_Error ("CL_ParseServerMessage: svc_updateping > "
"MAX_SCOREBOARD");
cl.players[i].ping = MSG_ReadShort (net_message);
break;
case svc_updateentertime:
// time is sent over as seconds ago
i = MSG_ReadByte (net_message);
if (i >= MAX_CLIENTS)
Host_Error ("CL_ParseServerMessage: svc_updateentertime "
"> MAX_SCOREBOARD");
cl.players[i].entertime = realtime - MSG_ReadFloat
(net_message);
break;
case svc_updatestatlong:
i = MSG_ReadByte (net_message);
j = MSG_ReadLong (net_message);
CL_SetStat (i, j);
break;
case svc_muzzleflash: case svc_muzzleflash:
CL_MuzzleFlash (); CL_MuzzleFlash ();
break; break;
@ -1596,10 +1605,6 @@ CL_ParseServerMessage (void)
CL_UpdateUserinfo (); CL_UpdateUserinfo ();
break; break;
case svc_setinfo:
CL_SetInfo ();
break;
case svc_download: case svc_download:
CL_ParseDownload (); CL_ParseDownload ();
break; break;
@ -1612,10 +1617,6 @@ CL_ParseServerMessage (void)
CL_ParseProjectiles (false); CL_ParseProjectiles (false);
break; break;
case svc_nails2: // FIXME from qwex
CL_ParseProjectiles (true);
break;
case svc_chokecount: // some preceding packets were choked case svc_chokecount: // some preceding packets were choked
i = MSG_ReadByte (net_message); i = MSG_ReadByte (net_message);
for (j = 0; j < i; j++) for (j = 0; j < i; j++)
@ -1646,6 +1647,26 @@ CL_ParseServerMessage (void)
case svc_entgravity: case svc_entgravity:
movevars.entgravity = MSG_ReadFloat (net_message); movevars.entgravity = MSG_ReadFloat (net_message);
break; break;
case svc_setinfo:
CL_SetInfo ();
break;
case svc_serverinfo:
CL_ServerInfo ();
break;
case svc_updatepl:
i = MSG_ReadByte (net_message);
if (i >= MAX_CLIENTS)
Host_Error ("CL_ParseServerMessage: svc_updatepl > "
"MAX_SCOREBOARD");
cl.players[i].pl = MSG_ReadByte (net_message);
break;
case svc_nails2: // FIXME from qwex
CL_ParseProjectiles (true);
break;
} }
} }