X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgame.c;h=4c9c56e8f81825e57bebbd3e92dd0f3bb6c3adaa;hp=125e1666e309293488566ae1a6a3677a258cdeba;hb=39fb4fecfb8d4647d3563bdb18ce0065f6129522;hpb=8fd731f280a5237bfb8b6ec3e2be70e45df2ec53 diff --git a/src/game.c b/src/game.c index 125e1666..4c9c56e8 100644 --- a/src/game.c +++ b/src/game.c @@ -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,23 +4715,25 @@ 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) { - SetGameStatus(GAME_MODE_MAIN); - - DrawMainMenu(); + StartGameActions(network.enabled, setup.autorecord, level.random_seed); } else { - StartGameActions(network.enabled, setup.autorecord, level.random_seed); + SetGameStatus(GAME_MODE_MAIN); + + DrawMainMenu(); } } @@ -11228,6 +11229,7 @@ void StartGameActions(boolean init_network_game, boolean record_tape, if (init_network_game) { + SendToServer_LevelFile(); SendToServer_StartPlaying(); return; @@ -14592,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)