]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - sv_main.c
Ugly hack to fix skybox textures being loaded as MATERIALFLAG_WALL in Q1BSP
[xonotic/darkplaces.git] / sv_main.c
index 6d967254dfb788cd6690d6ad4d6e96227dd2b666..5551acb51b9660bf919465bf001445bad0bc9ef8 100644 (file)
--- a/sv_main.c
+++ b/sv_main.c
@@ -25,6 +25,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include "csprogs.h"
 #include "thread.h"
 
+// current client
+client_t *host_client;
+
 static void SV_SaveEntFile_f(cmd_state_t *cmd);
 static void SV_StartDownload_f(cmd_state_t *cmd);
 static void SV_Download_f(cmd_state_t *cmd);
@@ -3403,7 +3406,7 @@ This is called at the start of each level
 ================
 */
 
-void SV_SpawnServer (const char *server)
+void SV_SpawnServer (const char *map)
 {
        prvm_prog_t *prog = SVVM_prog;
        prvm_edict_t *ent;
@@ -3413,16 +3416,16 @@ void SV_SpawnServer (const char *server)
        char modelname[sizeof(sv.worldname)];
        char vabuf[1024];
 
-       Con_DPrintf("SpawnServer: %s\n", server);
+       Con_DPrintf("SpawnServer: %s\n", map);
 
-       dpsnprintf (modelname, sizeof(modelname), "maps/%s.bsp", server);
+       dpsnprintf (modelname, sizeof(modelname), "maps/%s.bsp", map);
 
        if (!FS_FileExists(modelname))
        {
-               dpsnprintf (modelname, sizeof(modelname), "maps/%s", server);
+               dpsnprintf (modelname, sizeof(modelname), "maps/%s", map);
                if (!FS_FileExists(modelname))
                {
-                       Con_Printf("SpawnServer: no map file named maps/%s.bsp\n", server);
+                       Con_Printf("SpawnServer: no map file named maps/%s.bsp\n", map);
                        return;
                }
        }
@@ -3440,6 +3443,15 @@ void SV_SpawnServer (const char *server)
 
        if(sv.active)
        {
+               client_t *client;
+               for (i = 0, client = svs.clients;i < svs.maxclients;i++, client++)
+               {
+                       if (client->netconnection)
+                       {
+                               MSG_WriteByte(&client->netconnection->message, svc_stufftext);
+                               MSG_WriteString(&client->netconnection->message, "reconnect\n");
+                       }
+               }
                World_End(&sv.world);
                if(PRVM_serverfunction(SV_Shutdown))
                {
@@ -3482,23 +3494,8 @@ void SV_SpawnServer (const char *server)
 //
 // tell all connected clients that we are going to a new level
 //
-       if (sv.active)
-       {
-               client_t *client;
-               for (i = 0, client = svs.clients;i < svs.maxclients;i++, client++)
-               {
-                       if (client->netconnection)
-                       {
-                               MSG_WriteByte(&client->netconnection->message, svc_stufftext);
-                               MSG_WriteString(&client->netconnection->message, "reconnect\n");
-                       }
-               }
-       }
-       else
-       {
-               // open server port
+       if (!sv.active)
                NetConn_OpenServerPorts(true);
-       }
 
 //
 // make cvars consistant
@@ -3533,7 +3530,7 @@ void SV_SpawnServer (const char *server)
        sv.active = true;
 
        // set level base name variables for later use
-       strlcpy (sv.name, server, sizeof (sv.name));
+       strlcpy (sv.name, map, sizeof (sv.name));
        strlcpy(sv.worldname, modelname, sizeof(sv.worldname));
        FS_StripExtension(sv.worldname, sv.worldnamenoextension, sizeof(sv.worldnamenoextension));
        strlcpy(sv.worldbasename, !strncmp(sv.worldnamenoextension, "maps/", 5) ? sv.worldnamenoextension + 5 : sv.worldnamenoextension, sizeof(sv.worldbasename));