]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - host.c
-Added static, global baseDC and baseRC variables to avoid having to call
[xonotic/darkplaces.git] / host.c
diff --git a/host.c b/host.c
index a432abdb20c966caa2eb2abd0f89188f09606e79..9cfe4bde3330fbc51f9b75af5956fe1d55941291 100644 (file)
--- a/host.c
+++ b/host.c
@@ -161,6 +161,8 @@ void Host_ServerOptions (void)
        // general default
        numplayers = 8;
 
+// COMMANDLINEOPTION: Server: -dedicated [playerlimit] starts a dedicated server (with a command console), default playerlimit is 8
+// COMMANDLINEOPTION: Server: -listen [playerlimit] starts a multiplayer server with graphical client, like singleplayer but other players can connect, default playerlimit is 8
        if (cl_available)
        {
                // client exists, check what mode the user wants
@@ -214,7 +216,7 @@ void Host_ServerOptions (void)
                Cvar_SetValueQuick(&deathmatch, 1);
 
        svs.maxclients = numplayers;
-       sv_clients_mempool = Mem_AllocPool("server clients");
+       sv_clients_mempool = Mem_AllocPool("server clients", 0, NULL);
        svs.clients = Mem_Alloc(sv_clients_mempool, sizeof(client_t) * svs.maxclients);
 }
 
@@ -455,8 +457,12 @@ void SV_DropClient(qboolean crash)
        NetConn_Heartbeat(1);
 
        // free the client now
+       if (host_client->entitydatabase)
+               EntityFrame_FreeDatabase(host_client->entitydatabase);
        if (host_client->entitydatabase4)
                EntityFrame4_FreeDatabase(host_client->entitydatabase4);
+       if (host_client->entitydatabase5)
+               EntityFrame5_FreeDatabase(host_client->entitydatabase5);
        // clear the client struct (this sets active to false)
        memset(host_client, 0, sizeof(*host_client));
 }
@@ -752,7 +758,6 @@ void _Host_Frame (float time)
        if (host_speeds.integer)
                time1 = Sys_DoubleTime();
 
-       R_UpdateWorld();
        CL_UpdateScreen();
 
        if (host_speeds.integer)
@@ -762,12 +767,10 @@ void _Host_Frame (float time)
        if (cls.signon == SIGNONS && cl.viewentity >= 0 && cl.viewentity < MAX_EDICTS && cl_entities[cl.viewentity].state_current.active)
        {
                // LordHavoc: this used to use renderer variables (eww)
-               vec3_t forward, left, up, origin;
-               Matrix4x4_ToVectors(&cl_entities[cl.viewentity].render.matrix, forward, left, up, origin);
-               S_Update(origin, forward, left, up);
+               S_Update(&cl_entities[cl.viewentity].render.matrix);
        }
        else
-               S_Update(vec3_origin, vec3_origin, vec3_origin, vec3_origin);
+               S_Update(&identitymatrix);
 
        CDAudio_Update();
 
@@ -839,6 +842,7 @@ void Host_Init (void)
        srand(time(NULL));
 
        // FIXME: this is evil, but possibly temporary
+// COMMANDLINEOPTION: Console: -developer enables warnings and other notices (RECOMMENDED for mod developers)
        if (COM_CheckParm("-developer"))
        {
                forcedeveloper = true;
@@ -866,6 +870,7 @@ void Host_Init (void)
        if (cls.state != ca_dedicated)
        {
                Palette_Init();
+               MR_Init_Commands();
                VID_Shared_Init();
                VID_Init();
 
@@ -901,11 +906,15 @@ void Host_Init (void)
                Cbuf_InsertText("exec quake.rc\n");
 
        // check for special benchmark mode
+// COMMANDLINEOPTION: Client: -benchmark <demoname> runs a timedemo and quits, results of any timedemo can be found in gamedir/benchmark.log (for example id1/benchmark.log)
        i = COM_CheckParm("-benchmark");
        if (i && i + 1 < com_argc)
                Cbuf_InsertText(va("timedemo %s\n", com_argv[i + 1]));
 
        Cbuf_Execute();
+
+       // We must wait for the log_file cvar to be initialized to start the log
+       Log_Start ();
 }
 
 
@@ -946,5 +955,8 @@ void Host_Shutdown(void)
                R_Modules_Shutdown();
                VID_Shutdown();
        }
+
+       Sys_Shutdown();
+       Log_Close ();
 }