fixed bug with handling networking packets if request dialog is active
[rocksndiamonds.git] / src / init.c
index 5fc105b6b563859e470c965f7d585aec23421a05..2167984b663649481289e4d4c0c5f14be1670312 100644 (file)
@@ -136,6 +136,20 @@ static void DrawInitAnim(void)
   FrameCounter++;
 }
 
+static void DrawProgramInfo(void)
+{
+  int font1_nr = FC_YELLOW;
+  int font2_nr = FC_RED;
+  int font2_height = getFontHeight(font2_nr);
+  int ypos1 = 20;
+  int ypos2 = 50;
+  int ypos3 = WIN_YSIZE - 20 - font2_height;
+
+  DrawInitText(getProgramInitString(),           ypos1, font1_nr);
+  DrawInitText(setup.internal.program_copyright, ypos2, font2_nr);
+  DrawInitText(setup.internal.program_website,   ypos3, font2_nr);
+}
+
 static void FreeGadgets(void)
 {
   FreeLevelEditorGadgets();
@@ -5099,6 +5113,7 @@ static void InitGameInfo(void)
 {
   game.restart_level = FALSE;
   game.restart_game_message = NULL;
+  game.request_active = FALSE;
 }
 
 static void InitPlayerInfo(void)
@@ -5327,7 +5342,6 @@ static void InitGfx(void)
   char *filename_font_initial = NULL;
   char *filename_anim_initial = NULL;
   Bitmap *bitmap_font_initial = NULL;
-  int font_height;
   int i, j;
 
   /* determine settings for initial font (for displaying startup messages) */
@@ -5378,12 +5392,7 @@ static void InitGfx(void)
 
   InitFontGraphicInfo();
 
-  font_height = getFontHeight(FC_RED);
-
-  DrawInitText(getProgramInitString(), 20, FC_YELLOW);
-  DrawInitText(setup.internal.program_copyright, 50, FC_RED);
-  DrawInitText(setup.internal.program_website, WIN_YSIZE - 20 - font_height,
-              FC_RED);
+  DrawProgramInfo();
 
   DrawInitText("Loading graphics", 120, FC_GREEN);
 
@@ -5636,10 +5645,17 @@ static void InitArtworkDone(void)
 
 static void InitNetworkSettings(void)
 {
-  InitNetworkInfo(options.network || setup.network_mode,
+  boolean network_enabled = (options.network || setup.network_mode);
+  char *network_server = (options.server_host != NULL ? options.server_host :
+                         setup.network_server_hostname);
+
+  if (strEqual(network_server, STR_NETWORK_AUTO_DETECT))
+    network_server = NULL;
+
+  InitNetworkInfo(network_enabled,
                  FALSE,
                  options.serveronly,
-                 options.server_host,
+                 network_server,
                  options.server_port);
 }
 
@@ -5650,6 +5666,9 @@ void InitNetworkServer(void)
 
   LimitScreenUpdates(FALSE);
 
+  if (game_status == GAME_MODE_LOADING)
+    DrawProgramInfo();
+
   if (!ConnectToServer(network.server_host, network.server_port))
   {
     network.enabled = FALSE;
@@ -5666,7 +5685,8 @@ void InitNetworkServer(void)
   }
 
   /* short time to recognize result of network initialization */
-  Delay_WithScreenUpdates(1000);
+  if (game_status == GAME_MODE_LOADING)
+    Delay_WithScreenUpdates(1000);
 }
 
 static boolean CheckArtworkConfigForCustomElements(char *filename)