rnd-20060607-1-src
authorHolger Schemel <info@artsoft.org>
Wed, 7 Jun 2006 07:38:44 +0000 (09:38 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:52:05 +0000 (10:52 +0200)
* fixed bug with displaying running player when player stopped at border

ChangeLog
src/conftime.h
src/game.c
src/game.h
src/main.h

index c07604be8a7163d3c1e742bf5a74b1027b9a685f..7ce1772e06f71471cd031b9be61278469b15472b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 2006-06-06
        * fixed bug with displaying any player as "yellow" when moving into acid
+       * fixed bug with displaying running player when player stopped at border
 
 2006-06-03
        * fixed bug with player exploding when moving into acid
index 4df6b8bb2252cac8f7c7e99d5b5ca53f36ed9301..ddaadea5b4c8cf2482f4e127669b31f24ae6114e 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2006-06-06 00:32]"
+#define COMPILE_DATE_STRING "[2006-06-06 23:46]"
index ac37d91eb997b8f8f9097c144c23d8a00fdc817b..09eea8f3bf0c635affcf0b99b2916fe2c5378c75 100644 (file)
@@ -44,6 +44,7 @@
 #define USE_GFX_RESET_GFX_ANIMATION    (USE_NEW_STUFF          * 1)
 #define USE_BOTH_SWITCHGATE_SWITCHES   (USE_NEW_STUFF          * 1)
 #define USE_PLAYER_GRAVITY             (USE_NEW_STUFF          * 1)
+#define USE_FIXED_BORDER_RUNNING_GFX   (USE_NEW_STUFF          * 1)
 
 #define USE_QUICKSAND_IMPACT_BUGFIX    (USE_NEW_STUFF          * 0)
 
@@ -1993,6 +1994,8 @@ void InitGame()
 
     player->last_move_dir = MV_NONE;
 
+    player->is_active = FALSE;
+
     player->is_waiting = FALSE;
     player->is_moving = FALSE;
     player->is_auto_moving = FALSE;
@@ -10587,6 +10590,8 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy)
     player->move_delay_value = original_move_delay_value;
   }
 
+  player->is_active = FALSE;
+
   if (player->last_move_dir & MV_HORIZONTAL)
   {
     if (!(moved |= MovePlayerOneStep(player, 0, dy, dx, dy)))
@@ -10598,6 +10603,17 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy)
       moved |= MovePlayerOneStep(player, 0, dy, dx, dy);
   }
 
+#if USE_FIXED_BORDER_RUNNING_GFX
+  if (!moved && !player->is_active)
+  {
+    player->is_moving = FALSE;
+    player->is_digging = FALSE;
+    player->is_collecting = FALSE;
+    player->is_snapping = FALSE;
+    player->is_pushing = FALSE;
+  }
+#endif
+
   jx = player->jx;
   jy = player->jy;
 
@@ -12182,6 +12198,7 @@ int DigField(struct PlayerInfo *player,
     }
 
     player->is_pushing = TRUE;
+    player->is_active = TRUE;
 
     if (!(IN_LEV_FIELD(nextx, nexty) &&
          (IS_FREE(nextx, nexty) ||
@@ -12434,7 +12451,10 @@ int DigField(struct PlayerInfo *player,
   if (is_player)               /* function can also be called by EL_PENGUIN */
   {
     if (Feld[x][y] != element)         /* really digged/collected something */
+    {
       player->is_collecting = !player->is_digging;
+      player->is_active = TRUE;
+    }
   }
 
   return MP_MOVING;
@@ -12503,6 +12523,7 @@ boolean SnapField(struct PlayerInfo *player, int dx, int dy)
     return FALSE;
 
   player->is_snapping = TRUE;
+  player->is_active = TRUE;
 
   if (player->MovPos == 0)
   {
index 10ae3eaf9e7a8378f79daecd7055b6d2be1bddef..71ad7a0a3b8084c0296b9464c340b8522f15613d 100644 (file)
@@ -115,6 +115,8 @@ struct PlayerInfo
 
   int last_move_dir;
 
+  boolean is_active;
+
   boolean is_waiting;
   boolean is_moving;
   boolean is_auto_moving;
index 53fa767f9207b07f35aab39af2d7100bded4018c..ddd1218669d2e0a7377e412f899928b971edb27d 100644 (file)
                                 IS_EDITOR_CASCADE_ACTIVE(e)   ? (e) - 1 : (e))
 
 #define EL_NAME(e)             ((e) >= 0 ? element_info[e].token_name : "(?)")
+#define MV_TEXT(d)             ((d) == MV_NONE  ? "MV_NONE"  :         \
+                                (d) == MV_LEFT  ? "MV_LEFT"  :         \
+                                (d) == MV_RIGHT ? "MV_RIGHT" :         \
+                                (d) == MV_UP    ? "MV_UP"    :         \
+                                (d) == MV_DOWN  ? "MV_DOWN"  : "(various)")
 
 /* fundamental game speed values */
 #define MICROLEVEL_SCROLL_DELAY        50      /* delay for scrolling micro level */