moved level set info structure to game library layer
[rocksndiamonds.git] / src / libgame / system.c
index dea7258d009e5cef1816ed53fd17742a5e98035b..7321731c75110895a24c6c0380a5036cdf338ee2 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;
@@ -87,10 +89,10 @@ void InitProgramInfo(char *argv0, char *config_filename, char *userdata_subdir,
 
   program.cookie_prefix = cookie_prefix;
 
+  program.version_super = VERSION_SUPER(program_version);
   program.version_major = VERSION_MAJOR(program_version);
   program.version_minor = VERSION_MINOR(program_version);
   program.version_patch = VERSION_PATCH(program_version);
-  program.version_build = VERSION_BUILD(program_version);
   program.version_ident = program_version;
 
   program.version_string = program_version_string;
@@ -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);
 }
@@ -310,6 +325,7 @@ void InitTileCursorInfo()
 {
   tile_cursor.enabled = FALSE;
   tile_cursor.active = FALSE;
+  tile_cursor.moving = FALSE;
 
   tile_cursor.xpos = 0;
   tile_cursor.ypos = 0;
@@ -317,14 +333,32 @@ void InitTileCursorInfo()
   tile_cursor.y = 0;
   tile_cursor.target_x = 0;
   tile_cursor.target_y = 0;
+
+  tile_cursor.sx = 0;
+  tile_cursor.sy = 0;
 }
 
 void InitOverlayInfo()
 {
+  int nr = GRID_ACTIVE_NR();
+  int x, y;
+
   overlay.enabled = FALSE;
   overlay.active = FALSE;
 
-#if defined(PLATFORM_ANDROID)
+  overlay.show_grid = FALSE;
+
+  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] = setup.touch.grid_button[nr][x][y];
+
+  overlay.grid_button_highlight = CHAR_GRID_BUTTON_NONE;
+  overlay.grid_button_action = JOY_NO_ACTION;
+
+#if defined(USE_TOUCH_INPUT_OVERLAY)
   if (strEqual(setup.touch.control_type, TOUCH_CONTROL_VIRTUAL_BUTTONS))
     overlay.enabled = TRUE;
 #endif
@@ -347,8 +381,10 @@ void SetTileCursorTargetXY(int x, int y)
 
   tile_cursor.xpos = x;
   tile_cursor.ypos = y;
-  tile_cursor.target_x = gfx.sx + x * gfx.game_tile_size;
-  tile_cursor.target_y = gfx.sy + y * gfx.game_tile_size;
+  tile_cursor.target_x = tile_cursor.sx + x * gfx.game_tile_size;
+  tile_cursor.target_y = tile_cursor.sy + y * gfx.game_tile_size;
+
+  tile_cursor.moving = TRUE;
 }
 
 void SetTileCursorXY(int x, int y)
@@ -359,6 +395,14 @@ void SetTileCursorXY(int x, int y)
 
   tile_cursor.x = tile_cursor.target_x;
   tile_cursor.y = tile_cursor.target_y;
+
+  tile_cursor.moving = FALSE;
+}
+
+void SetTileCursorSXSY(int sx, int sy)
+{
+  tile_cursor.sx = sx;
+  tile_cursor.sy = sy;
 }
 
 void SetOverlayEnabled(boolean enabled)
@@ -371,6 +415,16 @@ void SetOverlayActive(boolean active)
   overlay.active = active;
 }
 
+void SetOverlayShowGrid(boolean show_grid)
+{
+  overlay.show_grid = show_grid;
+
+  SetOverlayActive(show_grid);
+
+  if (show_grid)
+    SetOverlayEnabled(TRUE);
+}
+
 boolean GetOverlayActive()
 {
   return overlay.active;