summaryrefslogtreecommitdiff
path: root/src/client/parse.c
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2012-12-29 19:07:38 +0400
committerAndrey Nazarov <skuller@skuller.net>2012-12-29 21:36:20 +0400
commit374033c5c75725218f04390859ccf73d120d5c2c (patch)
tree6c7f400e43b45f26ed2e894d36afb7c3f30b577d /src/client/parse.c
parent1e065662be8f46ffdd21ab2499f91921f4f0e9d1 (diff)
Communicate ss_broadcast state to Q2PRO clients.
Disable message triggers when playing back MVD streams. Process MVD spectator chat normally on the client so that ignore filters work. Add new minor Q2PRO protocol version 1019.
Diffstat (limited to 'src/client/parse.c')
-rw-r--r--src/client/parse.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/client/parse.c b/src/client/parse.c
index bbff5c7..29bc8d2 100644
--- a/src/client/parse.c
+++ b/src/client/parse.c
@@ -545,6 +545,9 @@ static void CL_ParseServerData(void)
cl.framediv = 1;
#endif
+ // setup default server state
+ cl.serverstate = ss_game;
+
if (cls.serverProtocol == PROTOCOL_VERSION_R1Q2) {
i = MSG_ReadByte();
if (i) {
@@ -583,7 +586,11 @@ static void CL_ParseServerData(void)
}
Com_DPrintf("Using minor Q2PRO protocol version %d\n", i);
cls.protocolVersion = i;
- MSG_ReadByte(); // used to be gametype
+ i = MSG_ReadByte();
+ if (cls.protocolVersion >= PROTOCOL_VERSION_Q2PRO_SERVER_STATE) {
+ Com_DPrintf("Q2PRO server state %d\n", i);
+ cl.serverstate = i;
+ }
i = MSG_ReadByte();
if (i) {
Com_DPrintf("Q2PRO strafejump hack enabled\n");
@@ -931,7 +938,7 @@ static void CL_ParsePrint(void)
if (level != PRINT_CHAT) {
Com_Printf("%s", s);
- if (!cls.demo.playback) {
+ if (!cls.demo.playback && cl.serverstate != ss_broadcast) {
COM_strclr(s);
Cmd_ExecTrigger(s);
}
@@ -943,7 +950,7 @@ static void CL_ParsePrint(void)
}
#if USE_AUTOREPLY
- if (!cls.demo.playback) {
+ if (!cls.demo.playback && cl.serverstate != ss_broadcast) {
CL_CheckForVersion(s);
}
#endif
@@ -971,6 +978,10 @@ static void CL_ParsePrint(void)
SCR_AddToChatHUD(s);
#endif
+ // silence MVD spectator chat
+ if (cl.serverstate == ss_broadcast && !strncmp(s, "[MVD] ", 6))
+ return;
+
// play sound
if (cl_chat_sound->integer > 1)
S_StartLocalSound_("misc/talk1.wav");
@@ -986,7 +997,7 @@ static void CL_ParseCenterPrint(void)
SHOWNET(2, " \"%s\"\n", s);
SCR_CenterPrint(s);
- if (!cls.demo.playback) {
+ if (!cls.demo.playback && cl.serverstate != ss_broadcast) {
COM_strclr(s);
Cmd_ExecTrigger(s);
}