added clearing event queue after fading and after door/envelope requests
[rocksndiamonds.git] / src / screens.c
index d545ef304fbc1c979e6abaebb62902f806e0e163..758e536d29a16b17e97e7bdc095e29d094ea8f6e 100644 (file)
@@ -1642,6 +1642,7 @@ void DrawMainMenu()
 
   DrawCursorAndText_Main(-1, FALSE, FALSE);
   DrawPreviewLevelInitial();
+  DrawNetworkPlayers();
 
   HandleMainMenu(0, 0, 0, 0, MB_MENU_INITIALIZE);
 
@@ -6445,9 +6446,23 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx)
     ToggleFullscreenOrChangeWindowScalingIfNeeded();
 
   if (si->value == &setup.network_mode &&
-      setup.network_mode &&
-      !network.enabled)
-    Request("Please restart game to enable network games!", REQ_CONFIRM);
+      setup.network_mode != network.enabled)
+  {
+    network.enabled = setup.network_mode;
+
+    FadeOut(REDRAW_ALL);
+
+    ClearField();
+
+    FadeIn(REDRAW_ALL);
+
+    if (network.enabled)
+      InitNetworkServer();
+    else
+      DisconnectFromNetworkServer();
+
+    DrawSetupScreen();
+  }
 }
 
 static struct TokenInfo *getSetupInfoFinal(struct TokenInfo *setup_info_orig)