fixed bug with not recognizing ".mode_loop: false" for music
[rocksndiamonds.git] / src / game.c
index fb56f906e1efd6bcebf8b496f6935056bf419ca7..4c9c56e8f81825e57bebbd3e92dd0f3bb6c3adaa 100644 (file)
@@ -2224,8 +2224,8 @@ void UpdateGameControlValues()
 
   /* update game panel control values */
 
-  /* use "level.file_info.nr" instead of "level_nr" (for network games) */
-  game_panel_controls[GAME_PANEL_LEVEL_NUMBER].value = level.file_info.nr;
+  /* used instead of "level_nr" (for network games) */
+  game_panel_controls[GAME_PANEL_LEVEL_NUMBER].value = levelset.level_nr;
   game_panel_controls[GAME_PANEL_GEMS].value = gems;
 
   game_panel_controls[GAME_PANEL_INVENTORY_COUNT].value = 0;
@@ -3337,8 +3337,7 @@ void InitGame()
 
   ExpireSoundLoops(TRUE);
 
-  if (!level_editor_test_game)
-    FadeOut(fade_mask);
+  FadeOut(fade_mask);
 
   /* needed if different viewport properties defined for playing */
   ChangeViewportPropertiesIfNeeded();
@@ -4661,7 +4660,6 @@ void GameWon()
 void GameEnd()
 {
   int hi_pos;
-  int last_level_nr = level_nr;
 
   local_player->LevelSolved_GameEnd = TRUE;
 
@@ -4703,7 +4701,8 @@ void GameEnd()
   }
 
   if (setup.increment_levels &&
-      level_nr < leveldir_current->last_level)
+      level_nr < leveldir_current->last_level &&
+      !network_playing)
   {
     level_nr++;                /* advance to next level */
     TapeErase();       /* start with empty tape */
@@ -4716,15 +4715,17 @@ void GameEnd()
     }
   }
 
-  hi_pos = NewHiScore(last_level_nr);
+  /* used instead of last "level_nr" (for network games) */
+  hi_pos = NewHiScore(levelset.level_nr);
 
   if (hi_pos >= 0 && !setup.skip_scores_after_game)
   {
     SetGameStatus(GAME_MODE_SCORES);
 
-    DrawHallOfFame(last_level_nr, hi_pos);
+    DrawHallOfFame(levelset.level_nr, hi_pos);
   }
-  else if (setup.auto_play_next_level && setup.increment_levels)
+  else if (setup.auto_play_next_level && setup.increment_levels &&
+          !network_playing)
   {
     StartGameActions(network.enabled, setup.autorecord, level.random_seed);
   }
@@ -14593,7 +14594,7 @@ static void PlayLevelMusic()
   char *next_music = getMusicInfoEntryFilename(music_nr);
 
   if (!strEqual(curr_music, next_music))
-    PlayMusic(music_nr);
+    PlayMusicLoop(music_nr);
 }
 
 void PlayLevelSound_EM(int xx, int yy, int element_em, int sample)