X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=e0f9c8781c8f199311028141fe57aee066ad09b1;hb=41831f337ebfff25c7138785efe20af5c2b0a2a8;hp=a84acfb8f5b90cfe87c819c8e270b4aec70d6e49;hpb=0f9fd686e8524b0c87b9444860880d469791ffb0;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index a84acfb8..e0f9c878 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(); @@ -3574,6 +3573,8 @@ void InitGame() game.ball_state = level.ball_state_initial; game.ball_content_nr = 0; + game.explosions_delayed = TRUE; + game.envelope_active = FALSE; for (i = 0; i < NUM_BELTS; i++) @@ -3955,6 +3956,9 @@ void InitGame() if (stored_player[i].active) local_player->players_still_needed++; + if (level.solved_by_one_player) + local_player->players_still_needed = 1; + /* when recording the game, store which players take part in the game */ if (tape.recording) { @@ -4661,7 +4665,6 @@ void GameWon() void GameEnd() { int hi_pos; - int last_level_nr = level_nr; local_player->LevelSolved_GameEnd = TRUE; @@ -4717,13 +4720,14 @@ 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 && !network_playing) @@ -13424,7 +13428,8 @@ void ExitPlayer(struct PlayerInfo *player) DrawPlayer(player); /* needed here only to cleanup last field */ RemovePlayer(player); - local_player->players_still_needed--; + if (local_player->players_still_needed > 0) + local_player->players_still_needed--; } static void setFieldForSnapping(int x, int y, int element, int direction) @@ -14595,7 +14600,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)