fixed graphical bugs with off-screen playfield movement in MM engine
[rocksndiamonds.git] / src / game_mm / mm_tools.c
index 39bb24671273009ff21270cc47acb651e879e626..8d77a8c01908e112897b24ca36803572bbe5992e 100644 (file)
@@ -364,7 +364,24 @@ void DrawScreenField_MM(int x, int y)
 
 void DrawLevelField_MM(int x, int y)
 {
-  DrawScreenField_MM(x, y);
+  if (IN_SCR_FIELD(SCREENX(x), SCREENY(y)))
+    DrawScreenField_MM(SCREENX(x), SCREENY(y));
+  else if (IS_MOVING(x, y))
+  {
+    int newx,newy;
+
+    Moving2Blocked(x, y, &newx, &newy);
+    if (IN_SCR_FIELD(SCREENX(newx), SCREENY(newy)))
+      DrawScreenField_MM(SCREENX(newx), SCREENY(newy));
+  }
+  else if (IS_BLOCKED(x, y))
+  {
+    int oldx, oldy;
+
+    Blocked2Moving(x, y, &oldx, &oldy);
+    if (IN_SCR_FIELD(SCREENX(oldx), SCREENY(oldy)))
+      DrawScreenField_MM(SCREENX(oldx), SCREENY(oldy));
+  }
 }
 
 void DrawMiniElement_MM(int x, int y, int element)