]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - host.c
added COMMANDLINEOPTION comments for every commandline option, these will be listed...
[xonotic/darkplaces.git] / host.c
diff --git a/host.c b/host.c
index 4aea3260bc5a80423a1fbadcf67aadcd4c0f3f84..5e65a00283cc56776364d8277d8b2f27eb8e9b46 100644 (file)
--- a/host.c
+++ b/host.c
@@ -96,34 +96,6 @@ cvar_t temp1 = {0, "temp1","0"};
 cvar_t timestamps = {CVAR_SAVE, "timestamps", "0"};
 cvar_t timeformat = {CVAR_SAVE, "timeformat", "[%b %e %X] "};
 
-/*
-================
-Host_EndGame
-================
-*/
-void Host_EndGame (const char *format, ...)
-{
-       va_list argptr;
-       char string[1024];
-
-       va_start (argptr,format);
-       vsprintf (string,format,argptr);
-       va_end (argptr);
-       Con_DPrintf("Host_EndGame: %s\n",string);
-
-       Host_ShutdownServer (false);
-
-       if (cls.state == ca_dedicated)
-               Sys_Error ("Host_EndGame: %s\n",string);        // dedicated servers exit
-
-       if (cls.demonum != -1)
-               CL_NextDemo ();
-       else
-               CL_Disconnect ();
-
-       longjmp (host_abortserver, 1);
-}
-
 /*
 ================
 Host_Error
@@ -189,6 +161,8 @@ void Host_ServerOptions (void)
        // general default
        numplayers = 8;
 
+// COMMANDLINEOPTION: -dedicated [playerlimit] starts a dedicated server (with a command console), default playerlimit is 8
+// COMMANDLINEOPTION: -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
@@ -242,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);
 }
 
@@ -483,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));
 }
@@ -502,11 +480,11 @@ void Host_ShutdownServer(qboolean crash)
        sizebuf_t buf;
        char message[4];
 
+       Con_DPrintf("Host_ShutdownServer\n");
+
        if (!sv.active)
                return;
 
-       Con_DPrintf("Host_ShutdownServer\n");
-
        // print out where the crash happened, if it was caused by QC
        PR_Crash();
 
@@ -780,7 +758,6 @@ void _Host_Frame (float time)
        if (host_speeds.integer)
                time1 = Sys_DoubleTime();
 
-       R_UpdateWorld();
        CL_UpdateScreen();
 
        if (host_speeds.integer)
@@ -790,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();
 
@@ -867,6 +842,7 @@ void Host_Init (void)
        srand(time(NULL));
 
        // FIXME: this is evil, but possibly temporary
+// COMMANDLINEOPTION: -developer enables warnings and other notices (RECOMMENDED for mod developers)
        if (COM_CheckParm("-developer"))
        {
                forcedeveloper = true;
@@ -894,6 +870,7 @@ void Host_Init (void)
        if (cls.state != ca_dedicated)
        {
                Palette_Init();
+               MR_Init_Commands();
                VID_Shared_Init();
                VID_Init();
 
@@ -929,11 +906,15 @@ void Host_Init (void)
                Cbuf_InsertText("exec quake.rc\n");
 
        // check for special benchmark mode
+// COMMANDLINEOPTION: -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 ();
 }
 
 
@@ -974,5 +955,8 @@ void Host_Shutdown(void)
                R_Modules_Shutdown();
                VID_Shutdown();
        }
+
+       Sys_Shutdown();
+       Log_Close ();
 }