added setting network connection flag for network games
[rocksndiamonds.git] / src / init.c
index 8fb9f80df81798f971ea07192ded0064caba7f09..7413cd52e53f5b9695e02e3697c8f57a46d4ccde 100644 (file)
@@ -5605,30 +5605,36 @@ static void InitArtworkDone()
   InitGlobalAnimations();
 }
 
+void InitNetworkSettings()
+{
+  InitNetworkInfo(options.network || setup.network_mode,
+                 FALSE,
+                 options.serveronly,
+                 options.server_host,
+                 options.server_port);
+}
+
 void InitNetworkServer()
 {
-#if defined(NETWORK_AVALIABLE)
-  int nr_wanted;
-#endif
+  if (!network.enabled || network.connected)
+    return;
 
-  if (setup.network_mode)
-    options.network = TRUE;
+  if (!ConnectToServer(network.server_host, network.server_port))
+  {
+    Request("Cannot connect to network server!", REQ_CONFIRM);
 
-  if (!options.network)
-    return;
+    network.enabled = FALSE;
 
-#if defined(NETWORK_AVALIABLE)
-  nr_wanted = Request("Choose player", REQ_PLAYER | REQ_STAY_CLOSED);
+    setup.network_mode = FALSE;
 
-  if (!ConnectToServer(options.server_host, options.server_port))
-    Error(ERR_EXIT, "cannot connect to network game server");
+    return;
+  }
 
   SendToServer_PlayerName(setup.player_name);
   SendToServer_ProtocolVersion();
+  SendToServer_NrWanted(setup.network_player_nr + 1);
 
-  if (nr_wanted)
-    SendToServer_NrWanted(nr_wanted);
-#endif
+  network.connected = TRUE;
 }
 
 static boolean CheckArtworkConfigForCustomElements(char *filename)
@@ -6001,10 +6007,12 @@ void OpenAll()
   if (options.execute_command)
     Execute_Command(options.execute_command);
 
-  if (options.serveronly)
+  InitNetworkSettings();
+
+  if (network.serveronly)
   {
 #if defined(PLATFORM_UNIX)
-    NetworkServer(options.server_port, options.serveronly);
+    NetworkServer(network.server_port, TRUE);
 #else
     Error(ERR_WARN, "networking only supported in Unix version");
 #endif