added short delay before playing "game.losing" sound effect
[rocksndiamonds.git] / src / game.c
index 197ad64da36c0756b2eee7af7493591c0c7f9e12..af43302f25dcf17a14fcbebab8b6f5494371a602 100644 (file)
@@ -3588,7 +3588,7 @@ void InitGame(void)
   if (restarting)
   {
     // force fading out global animations displayed during game play
-    SetGameStatus(GAME_MODE_LOADING);
+    SetGameStatus(GAME_MODE_PSEUDO_RESTARTING);
   }
   else
   {
@@ -3612,7 +3612,7 @@ void InitGame(void)
   if (restarting)
   {
     // force restarting global animations displayed during game play
-    RestartGlobalAnims();
+    RestartGlobalAnimsByStatus(GAME_MODE_PSEUDO_RESTARTING);
 
     SetGameStatus(GAME_MODE_PLAYING);
   }
@@ -11904,7 +11904,7 @@ static void GameActionsExt(void)
     TapeRecordAction(tape_action);
 
   // remember if game was played (especially after tape stopped playing)
-  if (!tape.playing && summarized_player_action)
+  if (!tape.playing && summarized_player_action && !checkGameFailed())
     game.GamePlayed = TRUE;
 
 #if USE_NEW_PLAYER_ASSIGNMENTS
@@ -13998,7 +13998,6 @@ void BuryPlayer(struct PlayerInfo *player)
     return;
 
   PlayLevelSoundElementAction(jx, jy, player->artwork_element, ACTION_DYING);
-  PlayLevelSound(jx, jy, SND_GAME_LOSING);
 
   RemovePlayer(player);
 
@@ -14656,7 +14655,7 @@ static int DigField(struct PlayerInfo *player,
 
        LevelSolved();
 
-       PlayLevelSound(x, y, SND_GAME_SOKOBAN_SOLVING);
+       PlaySound(SND_GAME_SOKOBAN_SOLVING);
       }
     }
     else
@@ -15681,6 +15680,9 @@ void CheckGameOver(void)
 
   if (game_over_delay > 0)
   {
+    if (game_over_delay == game_over_delay_value / 2)
+      PlaySound(SND_GAME_LOSING);
+
     game_over_delay--;
 
     return;