added program config file support for run-time special edition support
[rocksndiamonds.git] / src / libgame / system.c
index 25edb0effd65a959df172d43fa84f9c03d77ddcb..9a0bed5a93e27442626a319da746fe613b655475 100644 (file)
@@ -64,7 +64,7 @@ int                   FrameCounter = 0;
 /* init/close functions                                                      */
 /* ========================================================================= */
 
-void InitProgramInfo(char *argv0,
+void InitProgramInfo(char *argv0, char *config_filename,
                     char *userdata_subdir, char *userdata_subdir_unix,
                     char *program_title, char *icon_title,
                     char *sdl_icon_filename, char *cookie_prefix,
@@ -73,6 +73,8 @@ void InitProgramInfo(char *argv0,
   program.command_basepath = getBasePath(argv0);
   program.command_basename = getBaseName(argv0);
 
+  program.config_filename = config_filename;
+
   program.userdata_subdir = userdata_subdir;
   program.userdata_subdir_unix = userdata_subdir_unix;
   program.userdata_path = getUserGameDataDir();
@@ -170,6 +172,8 @@ void InitGfxFieldInfo(int sx, int sy, int sxsize, int sysize,
 
   gfx.field_save_buffer = field_save_buffer;
 
+  gfx.drawing_area_changed = FALSE;
+
   SetDrawDeactivationMask(REDRAW_NONE);                /* do not deactivate drawing */
   SetDrawBackgroundMask(REDRAW_NONE);          /* deactivate masked drawing */
 }
@@ -245,6 +249,11 @@ void InitGfxCustomArtworkInfo()
   gfx.draw_init_text = TRUE;
 }
 
+void InitGfxOtherSettings()
+{
+  gfx.cursor_mode = CURSOR_DEFAULT;
+}
+
 void SetDrawDeactivationMask(int draw_deactivation_mask)
 {
   gfx.draw_deactivation_mask = draw_deactivation_mask;
@@ -354,6 +363,8 @@ void InitVideoBuffer(int width, int height, int depth, boolean fullscreen)
 
   SDLInitVideoBuffer(&backbuffer, &window, fullscreen);
 
+  video.initialized = TRUE;
+
   drawto = backbuffer;
 }
 
@@ -463,6 +474,16 @@ boolean DrawingOnBackground(int x, int y)
          CheckDrawingArea(x, y, 1, 1, gfx.draw_background_mask));
 }
 
+boolean DrawingAreaChanged()
+{
+  int drawing_area_changed = gfx.drawing_area_changed;
+
+  // reset flag for change of drawing area after querying it
+  gfx.drawing_area_changed = FALSE;
+
+  return drawing_area_changed;
+}
+
 static boolean InClippedRectangle(Bitmap *bitmap, int *x, int *y,
                                  int *width, int *height, boolean is_dest)
 {
@@ -1250,6 +1271,8 @@ void SetMouseCursor(int mode)
                mode == CURSOR_PLAYFIELD ? cursor_playfield : NULL);
 
   SDLSetMouseCursor(cursor_new);
+
+  gfx.cursor_mode = mode;
 }