summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
c375792)
* fixed bug in "InitMovingField()" where treating an integer array as
boolean caused wrong resetting of animations while elements are moving
* fixed problem with resetting animations when starting element change
+2007-02-24
+ * fixed bug in "InitMovingField()" where treating an integer array as
+ boolean caused wrong resetting of animations while elements are moving
+ * fixed problem with resetting animations when starting element change
+
2007-02-08
* added sort priority for order of title screens and title messages
2007-02-08
* added sort priority for order of title screens and title messages
-#define COMPILE_DATE_STRING "2007-02-21 03:39"
+#define COMPILE_DATE_STRING "2007-02-24 02:52"
#define USE_FIX_KILLED_BY_NON_WALKABLE (USE_NEW_STUFF * 1)
#define USE_FIX_IMPACT_COLLISION (USE_NEW_STUFF * 1)
#define USE_FIX_KILLED_BY_NON_WALKABLE (USE_NEW_STUFF * 1)
#define USE_FIX_IMPACT_COLLISION (USE_NEW_STUFF * 1)
+#define USE_GFX_RESET_WHEN_NOT_MOVING (USE_NEW_STUFF * 1)
+
/* for DigField() */
#define DF_NO_PUSH 0
/* for DigField() */
#define DF_NO_PUSH 0
/* check if element was/is moving or being moved before/after mode change */
#if 1
/* check if element was/is moving or being moved before/after mode change */
#if 1
+#if 1
+ is_moving_before = (WasJustMoving[x][y] != 0);
+#else
+ /* (!!! this does not work -- WasJustMoving is NOT a boolean value !!!) */
is_moving_before = WasJustMoving[x][y];
is_moving_before = WasJustMoving[x][y];
#else
is_moving_before = (getElementMoveStepsizeExt(x, y, MovDir[x][y]) != 0);
#endif
#else
is_moving_before = (getElementMoveStepsizeExt(x, y, MovDir[x][y]) != 0);
#endif
if (ABS(MovPos[x][y]) < TILEX)
{
if (ABS(MovPos[x][y]) < TILEX)
{
+#if 0
+ int ee = Feld[x][y];
+ int gg = el_act_dir2img(element, GfxAction[x][y], GfxDir[x][y]);
+ int ff = getGraphicAnimationFrame(gg, GfxFrame[x][y]);
+
+ printf("::: %d.%d: moving %d ... [%d, %d, %d] [%d, %d, %d]\n",
+ x, y, ABS(MovPos[x][y]),
+ ee, gg, ff,
+ GfxAction[x][y], GfxDir[x][y], GfxFrame[x][y]);
+#endif
+
DrawLevelField(x, y);
return; /* element is still moving */
DrawLevelField(x, y);
return; /* element is still moving */
if (change->can_change)
{
if (change->can_change)
{
- ResetGfxAnimation(x, y);
- ResetRandomAnimationValue(x, y);
+#if 0
+ /* !!! not clear why graphic animation should be reset at all here !!! */
+#if USE_GFX_RESET_WHEN_NOT_MOVING
+ /* when a custom element is about to change (for example by change delay),
+ do not reset graphic animation when the custom element is moving */
+ if (IS_MOVING(x, y))
+#endif
+ {
+ ResetGfxAnimation(x, y);
+ ResetRandomAnimationValue(x, y);
+ }
+#endif
if (change->pre_change_function)
change->pre_change_function(x, y);
if (change->pre_change_function)
change->pre_change_function(x, y);