added disconnecting from network server from setup menu
[rocksndiamonds.git] / src / screens.c
index 6d29aec8e1ace3e32b27251a1fd38d512ce7600b..3ffcb48493dcb0b11ae1bd0b2196b08d2b2fc8c2 100644 (file)
@@ -5887,6 +5887,7 @@ static struct TokenInfo setup_info_game[] =
   { TYPE_SWITCH,       &setup.skip_levels,     "Skip Unsolved Levels:" },
   { TYPE_SWITCH,       &setup.increment_levels,"Increment Solved Levels:" },
   { TYPE_SWITCH,       &setup.auto_play_next_level,"Auto-play Next Level:" },
+  { TYPE_SWITCH,       &setup.skip_scores_after_game,"Skip Scores After Game:" },
   { TYPE_SWITCH,       &setup.autorecord,      "Auto-Record Tapes:"    },
   { TYPE_ENTER_LIST,   execSetupChooseGameSpeed, "Game Speed:"         },
   { TYPE_STRING,       &game_speed_text,       ""                      },
@@ -6444,9 +6445,31 @@ 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;
+
+    SetGameStatus(GAME_MODE_LOADING);
+    SetDrawBackgroundMask(REDRAW_NONE);
+
+    FadeOut(REDRAW_ALL);
+
+    ClearRectangle(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE);
+
+    FadeIn(REDRAW_ALL);
+
+    if (network.enabled)
+      InitNetworkServer();
+    else
+      DisconnectFromNetworkServer();
+
+    SetGameStatus(GAME_MODE_SETUP);
+    SetDrawBackgroundMask(REDRAW_FIELD);
+
+    redraw_mask = REDRAW_ALL;
+
+    DrawSetupScreen();
+  }
 }
 
 static struct TokenInfo *getSetupInfoFinal(struct TokenInfo *setup_info_orig)