added optional button to restart game (door, panel and touch variants)
[rocksndiamonds.git] / src / game_mm / mm_tools.c
index aa9c2a5d0aab5cbdeed125d1961bdd6b7d417cc7..12ca83cee8e22041ee608e659ad1f106c5d1ac3a 100644 (file)
@@ -1057,7 +1057,8 @@ static void DrawTileCursor_Xsn(int draw_target)
   }
 }
 
-void DrawTileCursor_MM(int draw_target, boolean tile_cursor_active)
+void DrawTileCursor_MM(int draw_target, int drawing_stage,
+                      boolean tile_cursor_active)
 {
   if (program.headless)
     return;
@@ -1072,7 +1073,12 @@ void DrawTileCursor_MM(int draw_target, boolean tile_cursor_active)
   int width = tilesize;
   int height = tilesize;
 
-  DrawTileCursor_Xsn(draw_target);
+  if (!drawing_stage)
+  {
+    DrawTileCursor_Xsn(draw_target);
+
+    return;
+  }
 
   if (!tile_cursor.enabled ||
       !tile_cursor.active ||
@@ -1149,6 +1155,8 @@ int get_base_element(int element)
     return EL_DF_MIRROR_AUTO_START;
   else if (IS_DF_MIRROR_FIXED(element))
     return EL_DF_MIRROR_FIXED_START;
+  else if (IS_DF_SLOPE(element))
+    return EL_DF_SLOPE_START;
   else if (IS_PACMAN(element))
     return EL_PACMAN_START;
   else if (IS_GRID_STEEL(element))
@@ -1207,7 +1215,8 @@ int get_num_elements(int element)
           IS_RECEIVER(element) ||
           IS_PACMAN(element) ||
           IS_GRID_STEEL(element) ||
-          IS_GRID_WOOD(element))
+          IS_GRID_WOOD(element) ||
+          IS_DF_SLOPE(element))
     return 4;
   else
     return 1;
@@ -1278,6 +1287,13 @@ static int getFlippedTileExt_MM(int element, int mode)
          (mode != MM_FLIP_XY && element_phase > 1))
        element_phase ^= 1;
     }
+    else if (IS_DF_SLOPE(element))
+    {
+      element_phase = (mode == MM_FLIP_X  ? 5 - element_phase :
+                      mode == MM_FLIP_Y  ? 3 - element_phase :
+                      mode == MM_FLIP_XY ? 4 - element_phase :
+                      element_phase);
+    }
     else
     {
       int num_elements_flip = num_elements;