From: Holger Schemel Date: Sat, 28 Jun 2003 13:03:13 +0000 (+0200) Subject: rnd-20030628-2-src X-Git-Tag: 3.0.0^2~37 X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=commitdiff_plain;h=842f9050c68d9c9f0741e444a052e00cf81ee90b rnd-20030628-2-src --- diff --git a/src/conftime.h b/src/conftime.h index 2eb3b39c..6a13fdbb 100644 --- a/src/conftime.h +++ b/src/conftime.h @@ -1 +1 @@ -#define COMPILE_DATE_STRING "[2003-06-28 00:49]" +#define COMPILE_DATE_STRING "[2003-06-28 12:35]" diff --git a/src/game.c b/src/game.c index 61baa07c..30af0fcb 100644 --- a/src/game.c +++ b/src/game.c @@ -3361,9 +3361,12 @@ void StartMoving(int x, int y) JustStopped[x][y]) #endif { - /* - printf("::: %d\n", MovDir[x][y]); - */ + /* calling "Impact()" here is not only completely unneccessary + (because it already gets called from "ContinueMoving()" in + all relevant situations), but also completely bullshit, because + "JustStopped" also indicates a finished *horizontal* movement; + we must keep this trash for backwards compatibility with older + tapes */ Impact(x, y); } @@ -3446,7 +3449,7 @@ void StartMoving(int x, int y) } } - /* not "else if" because of EL_SPRING */ + /* not "else if" because of elements that can fall and move (EL_SPRING) */ if (CAN_MOVE(element) && !started_moving) { int newx, newy; @@ -4004,17 +4007,25 @@ void ContinueMoving(int x, int y) #if 1 #if 0 + /* 2.1.1 (does not work correctly for spring) */ if (!CAN_MOVE(element)) MovDir[newx][newy] = 0; #else #if 0 + /* (does not work for falling objects that slide horizontally) */ if (CAN_FALL(element) && MovDir[newx][newy] == MV_DOWN) MovDir[newx][newy] = 0; #else + /* if (!CAN_MOVE(element) || (element == EL_SPRING && MovDir[newx][newy] == MV_DOWN)) MovDir[newx][newy] = 0; + */ + + if (!CAN_MOVE(element) || + (CAN_FALL(element) && MovDir[newx][newy] == MV_DOWN)) + MovDir[newx][newy] = 0; #endif #endif