fixed bug with not closing game panel after envelope request for restart
[rocksndiamonds.git] / src / game.c
index 8b77ddef674f65d232e0c968c5e4c5ef9529870f..b39383fdd3cbcb0d789e1f97ca213454de3db429 100644 (file)
@@ -13997,6 +13997,10 @@ static int DigField(struct PlayerInfo *player,
     CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_DIGS_X,
                                        player->index_bit, dig_side);
 
+    // if digging triggered player relocation, finish digging tile
+    if (mode == DF_DIG && (player->jx != jx || player->jy != jy))
+      setFieldForSnapping(x, y, element, move_direction);
+
     if (mode == DF_SNAP)
     {
       if (level.block_snap_field)
@@ -14118,9 +14122,15 @@ static int DigField(struct PlayerInfo *player,
     PlayLevelSoundElementAction(x, y, element, ACTION_COLLECTING);
 
     if (is_player)
+    {
       CheckTriggeredElementChangeByPlayer(x, y, element, CE_PLAYER_COLLECTS_X,
                                          player->index_bit, dig_side);
 
+      // if collecting triggered player relocation, finish collecting tile
+      if (mode == DF_DIG && (player->jx != jx || player->jy != jy))
+       setFieldForSnapping(x, y, element, move_direction);
+    }
+
     if (mode == DF_SNAP)
     {
       if (level.block_snap_field)
@@ -15242,6 +15252,9 @@ void RequestRestartGame(char *message)
   }
   else
   {
+    // needed in case of envelope request to close game panel
+    CloseDoor(DOOR_CLOSE_1);
+
     SetGameStatus(GAME_MODE_MAIN);
 
     DrawMainMenu();