]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_parse.c
Replaced snprintf and vnsprintf calls by dpsnprintf and dpvsnprintf calls, to ensure...
[xonotic/darkplaces.git] / cl_parse.c
index 0e67fe36c2b245d8d4f55415413dcbb8f0d2d56c..271d29af0a25d22901f272fd6285ebeb854b8431 100644 (file)
@@ -287,6 +287,16 @@ Con_DPrintf("CL_SignonReply: %i\n", cls.signon);
                        MSG_WriteByte (&cls.message, clc_stringcmd);
                        MSG_WriteString (&cls.message, va("pmodel %i\n", cl_pmodel.integer));
                }
+               if (*cl_playermodel.string)
+               {
+                       MSG_WriteByte (&cls.message, clc_stringcmd);
+                       MSG_WriteString (&cls.message, va("playermodel %s\n", cl_playermodel.string));
+               }
+               if (*cl_playerskin.string)
+               {
+                       MSG_WriteByte (&cls.message, clc_stringcmd);
+                       MSG_WriteString (&cls.message, va("playerskin %s\n", cl_playerskin.string));
+               }
 
                MSG_WriteByte (&cls.message, clc_stringcmd);
                MSG_WriteString (&cls.message, va("rate %i\n", cl_rate.integer));
@@ -338,13 +348,13 @@ void CL_ParseServerInfo (void)
                return;
        }
        cl.protocol = i;
-       Con_DPrintf("Protocol %i\n", cl.protocol);
+       Con_DPrintf("Server protocol is %i\n", cl.protocol);
 
 // parse maxclients
        cl.maxclients = MSG_ReadByte ();
        if (cl.maxclients < 1 || cl.maxclients > MAX_SCOREBOARD)
        {
-               Con_Printf("Bad maxclients (%u) from server\n", cl.maxclients);
+               Host_Error("Bad maxclients (%u) from server\n", cl.maxclients);
                return;
        }
        Mem_EmptyPool(cl_scores_mempool);
@@ -364,6 +374,11 @@ void CL_ParseServerInfo (void)
        // check memory integrity
        Mem_CheckSentinelsGlobal();
 
+       S_StopAllSounds();
+       // if server is active, we already began a loading plaque
+       if (!sv.active)
+               SCR_BeginLoadingPlaque();
+
        // disable until we get textures for it
        R_ResetSkyBox();
 
@@ -1263,8 +1278,7 @@ void CL_ParseTempEntity(void)
                MSG_ReadVector(pos, cl.protocol);
                MSG_ReadVector(pos2, cl.protocol);
                MSG_ReadVector(dir, cl.protocol);
-               CL_BeamParticle(pos, pos2, 12, 1, 0.3, 0.1, 1, 1);
-               CL_BeamParticle(pos, pos2, 5, 1, 0.9, 0.3, 1, 1);
+               CL_BeamParticle(pos, pos2, 8, 1, 1, 1, 1, 1);
                break;
 
        case TE_TEI_SMOKE:
@@ -1396,7 +1410,7 @@ void CL_ParseServerMessage(void)
                                i &= 31;
                                while(count > 0)
                                {
-                                       snprintf (temp, sizeof (temp), "%3i:%s ", cmdlog[i], cmdlogname[i]);
+                                       dpsnprintf (temp, sizeof (temp), "%3i:%s ", cmdlog[i], cmdlogname[i]);
                                        strlcat (description, temp, sizeof (description));
                                        count--;
                                        i++;
@@ -1516,8 +1530,7 @@ void CL_ParseServerMessage(void)
                                        if (i >= 1 && i < MAX_SOUNDS)
                                        {
                                                sfx_t *sfx = S_PrecacheSound (s, true, false);
-                                               // FIXME: SFXFLAG_SERVEROSUND should be set on the sfx
-                                               if (!sfx)
+                                               if (!sfx && snd_initialized.integer)
                                                        Con_Printf("svc_precache: S_PrecacheSound(\"%s\") failed\n", s);
                                                cl.sound_precache[i] = sfx;
                                        }
@@ -1598,7 +1611,9 @@ void CL_ParseServerMessage(void)
 
                case svc_signonnum:
                        i = MSG_ReadByte ();
-                       if (i <= cls.signon)
+                       // LordHavoc: it's rude to kick off the client if they missed the
+                       // reconnect somehow, so allow signon 1 even if at signon 1
+                       if (i <= cls.signon && i != 1)
                                Host_Error ("Received signon %i when at %i", i, cls.signon);
                        cls.signon = i;
                        CL_SignonReply ();
@@ -1749,3 +1764,8 @@ void CL_Parse_Init(void)
                Cvar_SetValue("demo_nehahra", 1);
        Cvar_RegisterVariable(&developer_networkentities);
 }
+
+void CL_Parse_Shutdown(void)
+{
+       Mem_FreePool (&cl_scores_mempool);
+}