fixed setting (and maybe inheriting) draw order for global animations
[rocksndiamonds.git] / src / init.c
index e96344eb51caf8da240895cc395e18bc1b096e16..45945dcd2d2f7868056be394ef789c4b34bf293c 100644 (file)
@@ -722,14 +722,23 @@ static void InitGlobalAnimGraphicInfo(void)
     struct GraphicInfo *g = &graphic_info[graphic];
     struct FileInfo *image = getImageListEntryFromImageID(graphic);
     char **parameter_raw = image->parameter;
-    int p = GFX_ARG_DRAW_MASKED;
-    int draw_masked = get_graphic_parameter_value(parameter_raw[p],
-                                                 image_config_suffix[p].token,
-                                                 image_config_suffix[p].type);
+    int p1 = GFX_ARG_DRAW_MASKED;
+    int p2 = GFX_ARG_DRAW_ORDER;
+    int draw_masked = get_graphic_parameter_value(parameter_raw[p1],
+                                                 image_config_suffix[p1].token,
+                                                 image_config_suffix[p1].type);
+    int draw_order = get_graphic_parameter_value(parameter_raw[p2],
+                                                image_config_suffix[p2].token,
+                                                image_config_suffix[p2].type);
 
     // if ".draw_masked" parameter is undefined, use default value "TRUE"
     if (draw_masked == ARG_UNDEFINED_VALUE)
       g->draw_masked = TRUE;
+
+    // if ".draw_order" parameter is undefined, set back to "undefined"
+    // (used to be able to inherit draw order from main animation later)
+    if (draw_order == ARG_UNDEFINED_VALUE)
+      g->draw_order = ARG_UNDEFINED_VALUE;
   }
 
 #if 0
@@ -1412,6 +1421,7 @@ static void set_graphic_parameters_ext(int graphic, int *parameter,
   g->sort_priority = 0;                        // default for title screens
   g->class = 0;
   g->style = STYLE_DEFAULT;
+  g->alpha = -1;
 
   g->bitmaps = src_bitmaps;
   g->bitmap = src_bitmap;
@@ -1648,7 +1658,7 @@ static void set_graphic_parameters_ext(int graphic, int *parameter,
   g->draw_yoffset = parameter[GFX_ARG_DRAW_YOFFSET];
 
   // use a different default value for global animations and toons
-  if ((graphic >= IMG_GFX_GLOBAL_ANIM_1 && graphic <= IMG_GFX_GLOBAL_ANIM_8) ||
+  if ((graphic >= IMG_GFX_GLOBAL_ANIM_1 && graphic <= IMG_GFX_GLOBAL_ANIM_32) ||
       (graphic >= IMG_TOON_1            && graphic <= IMG_TOON_20))
     g->draw_masked = TRUE;
 
@@ -1656,6 +1666,10 @@ static void set_graphic_parameters_ext(int graphic, int *parameter,
   if (parameter[GFX_ARG_DRAW_MASKED] != ARG_UNDEFINED_VALUE)
     g->draw_masked = parameter[GFX_ARG_DRAW_MASKED];
 
+  // use a different default value for global animations (corrected later)
+  if (graphic >= IMG_GLOBAL_ANIM_1 && graphic <= IMG_GLOBAL_ANIM_32)
+    g->draw_order = ARG_UNDEFINED_VALUE;
+
   // used for toon animations and global animations
   if (parameter[GFX_ARG_DRAW_ORDER] != ARG_UNDEFINED_VALUE)
     g->draw_order = parameter[GFX_ARG_DRAW_ORDER];
@@ -1686,6 +1700,8 @@ static void set_graphic_parameters_ext(int graphic, int *parameter,
     g->class = parameter[GFX_ARG_CLASS];
   if (parameter[GFX_ARG_STYLE] != ARG_UNDEFINED_VALUE)
     g->style = parameter[GFX_ARG_STYLE];
+  if (parameter[GFX_ARG_ALPHA] != ARG_UNDEFINED_VALUE)
+    g->alpha = parameter[GFX_ARG_ALPHA];
 
   // this is only used for drawing menu buttons and text
   g->active_xoffset = parameter[GFX_ARG_ACTIVE_XOFFSET];
@@ -5490,9 +5506,7 @@ static void InitSetup(void)
 static void InitGameInfo(void)
 {
   game.restart_level = FALSE;
-
   game.request_active = FALSE;
-  game.request_active_or_moving = FALSE;
 
   game.use_masked_elements_initial = FALSE;
 }