rnd-19980810
[rocksndiamonds.git] / src / game.c
index e170331debf8e5d7f306e301144b6e8e56910b94..15c379531fc488fc94a14f84cc5b0c02b7d6cc5e 100644 (file)
@@ -2798,6 +2798,15 @@ BOOL MoveFigureOneStep(int dx, int dy, int real_dx, int real_dy)
   JX = newJX;
   JY = newJY;
 
   JX = newJX;
   JY = newJY;
 
+
+  JX2 = oldJX;
+  JY2 = oldJY;
+
+  PlayerMovPos = TILEX/4;
+  PlayerMovPos = (dx > 0 || dy > 0 ? -1 : 1) * 3*TILEX/4;
+
+  ScrollFigure(-1);
+
   if (Store[oldJX][oldJY])
   {
     DrawGraphic(SCROLLX(oldJX),SCROLLY(oldJY),el2gfx(Store[oldJX][oldJY]));
   if (Store[oldJX][oldJY])
   {
     DrawGraphic(SCROLLX(oldJX),SCROLLY(oldJY),el2gfx(Store[oldJX][oldJY]));
@@ -2896,6 +2905,24 @@ BOOL MoveFigure(int dx, int dy)
   return(moved);
 }
 
   return(moved);
 }
 
+void ScrollFigure(int init)
+{
+  static long actual_frame_counter;
+
+  if (init)
+  {
+    actual_frame_counter = FrameCounter;
+    return;
+  }
+  else if (!FrameReached(&actual_frame_counter,1))
+    return;
+
+  PlayerMovPos += (PlayerMovPos > 0 ? -1 : 1) * TILEX/4;
+
+  DrawLevelElement(JX2,JY2, Feld[JX2][JY2]);
+  DrawPlayerField();
+}
+
 void TestIfGoodThingHitsBadThing(int goodx, int goody)
 {
   int i, killx = goodx, killy = goody;
 void TestIfGoodThingHitsBadThing(int goodx, int goody)
 {
   int i, killx = goodx, killy = goody;