fixed bug with losing image filename when scaling bitmaps
[rocksndiamonds.git] / src / libgame / system.c
index 3363ac2b94c7cbfe976ba25c2806b403b75595f6..d5504854bc13d90f30ee9c1a3f9f8adf3387ac2f 100644 (file)
@@ -29,6 +29,7 @@
 /* ========================================================================= */
 
 struct ProgramInfo     program;
+struct NetworkInfo     network;
 struct OptionInfo      options;
 struct VideoSystemInfo video;
 struct AudioSystemInfo audio;
@@ -44,6 +45,7 @@ LevelDirTree         *leveldir_first = NULL;
 LevelDirTree          *leveldir_current = NULL;
 int                    level_nr;
 
+struct LevelSetInfo    levelset;
 struct LevelStats      level_stats[MAX_LEVELS];
 
 DrawWindow            *window = NULL;
@@ -103,6 +105,17 @@ void InitProgramInfo(char *argv0, char *config_filename, char *userdata_subdir,
   program.headless = FALSE;
 }
 
+void InitNetworkInfo(boolean enabled, boolean connected, boolean serveronly,
+                    char *server_host, int server_port)
+{
+  network.enabled = enabled;
+  network.connected = connected;
+  network.serveronly = serveronly;
+
+  network.server_host = server_host;
+  network.server_port = server_port;
+}
+
 void InitScoresInfo()
 {
   char *global_scores_dir = getPath2(getCommonDataDir(), SCORES_DIRECTORY);
@@ -110,6 +123,7 @@ void InitScoresInfo()
   program.global_scores = directoryExists(global_scores_dir);
   program.many_scores_per_name = !program.global_scores;
 
+#if 0
   if (options.debug)
   {
     if (program.global_scores)
@@ -124,6 +138,7 @@ void InitScoresInfo()
       Error(ERR_DEBUG, "Using private, single-user scores directory.");
     }
   }
+#endif
 
   free(global_scores_dir);
 }
@@ -325,60 +340,25 @@ void InitTileCursorInfo()
 
 void InitOverlayInfo()
 {
-  static char *default_grid_button[6][2] =
-  {
-    { "      ",        "  ^^  " },
-    { "      ",        "  ^^  " },
-    { "      ",        "<<  >>" },
-    { "      ",        "<<  >>" },
-    { "111222",        "  vv  " },
-    { "111222",        "  vv  " }
-  };
   int nr = GRID_ACTIVE_NR();
-  int i, x, y;
+  int x, y;
 
   overlay.enabled = FALSE;
   overlay.active = FALSE;
 
   overlay.show_grid = FALSE;
 
-  for (i = 0; i < 2; i++)
-  {
-    int grid_xsize = DEFAULT_GRID_XSIZE(i);
-    int grid_ysize = DEFAULT_GRID_YSIZE(i);
-    int min_xsize = MIN(6, grid_xsize);
-    int min_ysize = MIN(6, grid_ysize);
-    int startx = grid_xsize - min_xsize;
-    int starty = grid_ysize - min_ysize;
-
-    overlay.grid_xsize_all[i] = grid_xsize;
-    overlay.grid_ysize_all[i] = grid_ysize;
-
-    for (x = 0; x < MAX_GRID_XSIZE; x++)
-      for (y = 0; y < MAX_GRID_YSIZE; y++)
-       overlay.grid_button_all[i][x][y] = CHAR_GRID_BUTTON_NONE;
-
-    for (x = 0; x < min_xsize; x++)
-      for (y = 0; y < min_ysize; y++)
-       overlay.grid_button_all[i][x][starty + y] =
-         default_grid_button[y][0][x];
-
-    for (x = 0; x < min_xsize; x++)
-      for (y = 0; y < min_ysize; y++)
-       overlay.grid_button_all[i][startx + x][starty + y] =
-         default_grid_button[y][1][x];
-  }
-
-  overlay.grid_xsize = overlay.grid_xsize_all[nr];
-  overlay.grid_ysize = overlay.grid_ysize_all[nr];
+  overlay.grid_xsize = setup.touch.grid_xsize[nr];
+  overlay.grid_ysize = setup.touch.grid_ysize[nr];
 
   for (x = 0; x < MAX_GRID_XSIZE; x++)
     for (y = 0; y < MAX_GRID_YSIZE; y++)
-      overlay.grid_button[x][y] = overlay.grid_button_all[nr][x][y];
+      overlay.grid_button[x][y] = setup.touch.grid_button[nr][x][y];
 
   overlay.grid_button_highlight = CHAR_GRID_BUTTON_NONE;
+  overlay.grid_button_action = JOY_NO_ACTION;
 
-#if defined(PLATFORM_ANDROID)
+#if defined(USE_TOUCH_INPUT_OVERLAY)
   if (strEqual(setup.touch.control_type, TOUCH_CONTROL_VIRTUAL_BUTTONS))
     overlay.enabled = TRUE;
 #endif
@@ -1408,7 +1388,13 @@ static void CreateScaledBitmaps(Bitmap **bitmaps, int zoom_factor,
        free_old_bitmap = FALSE;
 
     if (free_old_bitmap)
+    {
+      /* copy image filename from old to new standard sized bitmap */
+      bitmaps[IMG_BITMAP_STANDARD]->source_filename =
+       getStringCopy(old_bitmap->source_filename);
+
       FreeBitmap(old_bitmap);
+    }
   }
   else
   {