rnd-20030807-1-src
[rocksndiamonds.git] / src / game.c
index 718b1fff062877878666bddd6e2109a08c845ffc..f5b3ab7b883d783c088bd11a20379611c4fc3a75 100644 (file)
@@ -1032,6 +1032,7 @@ void InitGame()
   game.switchgate_pos = 0;
   game.balloon_dir = MV_NO_MOVING;
   game.explosions_delayed = TRUE;
+  game.current_gravity = level.initial_gravity;
 
   for (i=0; i<4; i++)
   {
@@ -3846,9 +3847,10 @@ void StartMoving(int x, int y)
        return;
       }
 
-#if 0
-      GfxAction[x][y] = ACTION_MOVING;
-#endif
+      /* special case of "moving" animation of waiting elements (FIX THIS !!!);
+        for all other elements GfxAction will be set by InitMovingField() */
+      if (element == EL_BD_BUTTERFLY || element == EL_BD_FIREFLY)
+       GfxAction[x][y] = ACTION_MOVING;
     }
 
     /* now make next step */
@@ -6086,7 +6088,7 @@ void ScrollLevel(int dx, int dy)
 
 static void CheckGravityMovement(struct PlayerInfo *player)
 {
-  if (level.gravity && !player->programmed_action)
+  if (game.current_gravity && !player->programmed_action)
   {
     int move_dir_vertical = player->action & (MV_UP | MV_DOWN);
     int move_dir_horizontal = player->action & (MV_LEFT | MV_RIGHT);
@@ -7084,7 +7086,7 @@ int DigField(struct PlayerInfo *player,
          element == EL_SP_GRAVITY_PORT_RIGHT ||
          element == EL_SP_GRAVITY_PORT_UP ||
          element == EL_SP_GRAVITY_PORT_DOWN)
-       level.gravity = !level.gravity;
+       game.current_gravity = !game.current_gravity;
 
       /* automatically move to the next field with double speed */
       player->programmed_action = move_direction;