replaced function to draw graphic animation (MM engine)
[rocksndiamonds.git] / src / files.c
index 4cc8065647a2c5daf566b48f5010b6051931f22a..0f478eb10164b241c93a980ce86c35f44e007a8a 100644 (file)
@@ -3896,7 +3896,7 @@ void CopyNativeLevel_RND_to_MM(struct LevelInfo *level)
   level_mm->encoding_16bit_field = level->encoding_16bit_field;
 
   level_mm->fieldx = MIN(level->fieldx, MM_MAX_PLAYFIELD_WIDTH);
-  level_mm->fieldy = MIN(level->fieldx, MM_MAX_PLAYFIELD_HEIGHT);
+  level_mm->fieldy = MIN(level->fieldy, MM_MAX_PLAYFIELD_HEIGHT);
 
   level_mm->time = level->time;
   level_mm->kettles_needed = level->gems_needed;
@@ -3915,9 +3915,10 @@ void CopyNativeLevel_RND_to_MM(struct LevelInfo *level)
   level_mm->amoeba_speed = level->amoeba_speed;
   level_mm->time_fuse = 0;
 
-  for (y = 0; y < level_mm->fieldx; y++)
-    for (x = 0; x < level_mm->fieldy; x++)
-      level_mm->field[x][y] = map_element_RND_to_MM(level->field[x][y]);
+  for (x = 0; x < level->fieldx; x++)
+    for (y = 0; y < level->fieldy; y++)
+      Ur[x][y] =
+       level_mm->field[x][y] = map_element_RND_to_MM(level->field[x][y]);
 }
 
 void CopyNativeLevel_MM_to_RND(struct LevelInfo *level)
@@ -3930,7 +3931,7 @@ void CopyNativeLevel_MM_to_RND(struct LevelInfo *level)
   level->encoding_16bit_field = level_mm->encoding_16bit_field;
 
   level->fieldx = MIN(level_mm->fieldx, MAX_LEV_FIELDX);
-  level->fieldy = MIN(level_mm->fieldx, MAX_LEV_FIELDY);
+  level->fieldy = MIN(level_mm->fieldy, MAX_LEV_FIELDY);
 
   level->time = level_mm->time;
   level->gems_needed = level_mm->kettles_needed;
@@ -3944,9 +3945,20 @@ void CopyNativeLevel_MM_to_RND(struct LevelInfo *level)
 
   level->amoeba_speed = level_mm->amoeba_speed;
 
-  for (y = 0; y < level->fieldx; y++)
-    for (x = 0; x < level->fieldy; x++)
+  for (x = 0; x < level->fieldx; x++)
+    for (y = 0; y < level->fieldy; y++)
       level->field[x][y] = map_element_MM_to_RND(level_mm->field[x][y]);
+
+  if (level_mm->auto_count_kettles)
+  {
+    level->gems_needed = 0;
+
+    for (x = 0; x < level->fieldx; x++)
+      for (y = 0; y < level->fieldy; y++)
+       if (level->field[x][y] == EL_MM_KETTLE ||
+           level->field[x][y] == EL_DF_CELL)
+         level->gems_needed++;
+  }
 }