changed drawing to playfield when changing network mode setup options
authorHolger Schemel <info@artsoft.org>
Wed, 27 Jun 2018 19:16:37 +0000 (21:16 +0200)
committerHolger Schemel <info@artsoft.org>
Wed, 27 Jun 2018 19:16:37 +0000 (21:16 +0200)
src/init.c
src/network.c
src/screens.c

index db1070e45d6e0eac883fa6701a1d02ecc1ec7dad..dd7e5a174b822a42aefc75fa6ac5de5dcce691d1 100644 (file)
@@ -5621,8 +5621,6 @@ void InitNetworkServer()
 
   LimitScreenUpdates(FALSE);
 
-  ClearRectangle(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE);
-
   if (!ConnectToServer(network.server_host, network.server_port))
   {
     network.enabled = FALSE;
index cabcfd3030485ce0b55fc24ba40f363f171bb89f..fcd757d48831d34efe78778fce6e476522c8b9f2 100644 (file)
@@ -52,24 +52,45 @@ static boolean stop_network_game = FALSE;
 static void DrawNetworkTextExt(char *message, int font_nr, boolean initialize)
 {
   static int xpos = 0, ypos = 0;
+  static int max_line_width = 0;
   int font_width = getFontWidth(font_nr);
   int font_height = getFontHeight(font_nr);
+  int ypos_1 = 120;
+  int ypos_2 = 150;
 
   if (initialize)
   {
-    xpos = (WIN_XSIZE - getTextWidth(message, font_nr)) / 2;
-    ypos = 120;
+    if (game_status == GAME_MODE_LOADING)
+    {
+      max_line_width = WIN_XSIZE;
+
+      xpos = (max_line_width - getTextWidth(message, font_nr)) / 2;
+      ypos = ypos_1;
 
-    DrawText(xpos, ypos, message, font_nr);
+      DrawText(xpos, ypos, message, font_nr);
 
-    xpos = 0;
-    ypos = 150;
+      xpos = 0;
+      ypos = ypos_2;
+    }
+    else
+    {
+      max_line_width = SXSIZE;
+
+      DrawTextSCentered(ypos_1, font_nr, message);
+
+      /* calculate offset to x position caused by rounding */
+      int max_chars_per_line = max_line_width / font_width;
+      int xoffset = (max_line_width - max_chars_per_line * font_width) / 2;
+
+      xpos = SX + xoffset;
+      ypos = SY + ypos_2;
+    }
 
     Error(ERR_DEBUG, "========== %s ==========", message);
   }
   else
   {
-    int max_chars_per_line = WIN_XSIZE / font_width;
+    int max_chars_per_line = max_line_width / font_width;
     int max_lines_per_text = 10;
     int num_lines_spacing = (font_nr == FC_YELLOW ? 1 : 3);
     int num_lines_printed = DrawTextBuffer(xpos, ypos, message, font_nr,
index 3ffcb48493dcb0b11ae1bd0b2196b08d2b2fc8c2..3eab4a7343e9235371708e03f4e4b2bdea08dd83 100644 (file)
@@ -6449,12 +6449,9 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx)
   {
     network.enabled = setup.network_mode;
 
-    SetGameStatus(GAME_MODE_LOADING);
-    SetDrawBackgroundMask(REDRAW_NONE);
-
     FadeOut(REDRAW_ALL);
 
-    ClearRectangle(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE);
+    ClearField();
 
     FadeIn(REDRAW_ALL);
 
@@ -6463,11 +6460,6 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx)
     else
       DisconnectFromNetworkServer();
 
-    SetGameStatus(GAME_MODE_SETUP);
-    SetDrawBackgroundMask(REDRAW_FIELD);
-
-    redraw_mask = REDRAW_ALL;
-
     DrawSetupScreen();
   }
 }