]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_parse.c
- Got rid of all the FILE* stuff in the FS code, relying on low-level
[xonotic/darkplaces.git] / cl_parse.c
index 4f509d7cc4a4b9e015c918e98cfcd1b84b6e9e4d..a0af3961b7df3a68e694e72cc9cd3eb1c3a277c7 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));
@@ -344,7 +354,7 @@ void CL_ParseServerInfo (void)
        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:
@@ -1516,7 +1530,7 @@ void CL_ParseServerMessage(void)
                                        if (i >= 1 && i < MAX_SOUNDS)
                                        {
                                                sfx_t *sfx = S_PrecacheSound (s, true, false);
-                                               if (!sfx)
+                                               if (!sfx && snd_initialized.integer)
                                                        Con_Printf("svc_precache: S_PrecacheSound(\"%s\") failed\n", s);
                                                cl.sound_precache[i] = sfx;
                                        }
@@ -1597,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 ();
@@ -1748,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);
+}