]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - host.c
now pretends gfx.wad pics are in the gfx/ directory, this changes the override path...
[xonotic/darkplaces.git] / host.c
diff --git a/host.c b/host.c
index cc7102a8014636ac8cf11e0c81f3f4516d2920f9..9fcc9cf88191fff150a48a57c1620d6f93f1ff0c 100644 (file)
--- a/host.c
+++ b/host.c
@@ -184,26 +184,42 @@ void Host_ServerOptions (void)
 {
        int i, numplayers;
 
-       numplayers = 1;
-
-       i = COM_CheckParm ("-dedicated");
-       if (i)
+       if (cl_available)
        {
-               cls.state = ca_dedicated;
-               numplayers = 0;
-               if (i != (com_argc - 1))
-                       numplayers = atoi (com_argv[i+1]);
+               // client exists, check what mode the user wants
+               i = COM_CheckParm ("-dedicated");
+               if (i)
+               {
+                       cls.state = ca_dedicated;
+                       numplayers = 8;
+                       if (i != (com_argc - 1))
+                               numplayers = atoi (com_argv[i+1]);
+                       if (COM_CheckParm ("-listen"))
+                               Sys_Error ("Only one of -dedicated or -listen can be specified");
+               }
+               else
+               {
+                       numplayers = 1;
+                       cls.state = ca_disconnected;
+                       i = COM_CheckParm ("-listen");
+                       if (i)
+                       {
+                               numplayers = 8;
+                               if (i != (com_argc - 1))
+                                       numplayers = atoi (com_argv[i+1]);
+                       }
+               }
        }
        else
-               cls.state = ca_disconnected;
-
-       i = COM_CheckParm ("-listen");
-       if (i)
        {
-               if (cls.state == ca_dedicated)
-                       Sys_Error ("Only one of -dedicated or -listen can be specified");
-               numplayers = 0;
-               if (i != (com_argc - 1))
+               // no client in the executable, start dedicated server
+               if (COM_CheckParm ("-listen"))
+                       Sys_Error ("-listen not available in a dedicated server executable");
+               numplayers = 8;
+               cls.state = ca_dedicated;
+               // check for -dedicated specifying how many players
+               i = COM_CheckParm ("-dedicated");
+               if (i && i != (com_argc - 1))
                        numplayers = atoi (com_argv[i+1]);
        }
 
@@ -869,12 +885,22 @@ void Host_Init (void)
 #ifndef _WIN32 // on non win32, mouse comes before video for security reasons
                IN_Init ();
 #endif
-               VID_Init (vid_fullscreen.integer, vid_width.integer, vid_height.integer);
+               VID_Init();
+               if (!VID_Mode(vid_fullscreen.integer, vid_width.integer, vid_height.integer, vid_bitsperpixel.integer))
+               {
+                       if (vid_fullscreen.integer)
+                       {
+                               if (!VID_Mode(true, 640, 480, 16))
+                                       if (!VID_Mode(false, 640, 480, 16))
+                                               Sys_Error("Video modes failed\n");
+                       }
+                       else
+                               Sys_Error("Requested windowed video mode failed\n");
+               }
 
                Render_Init();
                S_Init ();
                CDAudio_Init ();
-               Sbar_Init ();
                CL_Init ();
 #ifdef _WIN32 // on non win32, mouse comes before video for security reasons
                IN_Init ();