X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgame.c;h=f0d6aff1d4517c50d0b7aeff690535828c3514c9;hp=b68f6be1e470eb6295ba830bc6f8c2611fc4f6e2;hb=3cc2ee99e57014c6962d26365e92bd3eac36a492;hpb=719b72db403d64e84dc9c90388f7e6fd43a77d7b diff --git a/src/game.c b/src/game.c index b68f6be1..f0d6aff1 100644 --- a/src/game.c +++ b/src/game.c @@ -3354,7 +3354,7 @@ void InitGame(void) SetGameStatus(GAME_MODE_PLAYING); if (level_editor_test_game) - FadeSkipNextFadeIn(); + FadeSkipNextFadeOut(); else FadeSetEnterScreen(); @@ -3365,8 +3365,10 @@ void InitGame(void) ExpireSoundLoops(TRUE); - if (!level_editor_test_game) - FadeOut(fade_mask); + FadeOut(fade_mask); + + if (level_editor_test_game) + FadeSkipNextFadeIn(); // needed if different viewport properties defined for playing ChangeViewportPropertiesIfNeeded(); @@ -11465,13 +11467,14 @@ static void GameActionsExt(void) stored_player[map_player_action[local_player->index_nr]].effective_action = summarized_player_action; + // summarize all actions at centered player in local team mode if (tape.recording && - setup.team_mode && + setup.team_mode && !network.enabled && setup.input_on_focus && game.centered_player_nr != -1) { for (i = 0; i < MAX_PLAYERS; i++) - stored_player[i].effective_action = + stored_player[map_player_action[i]].effective_action = (i == game.centered_player_nr ? summarized_player_action : 0); } @@ -12179,12 +12182,17 @@ void GameActions_RND(void) DrawAllPlayers(); PlayAllPlayersSound(); - if (local_player->show_envelope != 0 && (!local_player->active || - local_player->MovPos == 0)) + for (i = 0; i < MAX_PLAYERS; i++) { - ShowEnvelope(local_player->show_envelope - EL_ENVELOPE_1); + struct PlayerInfo *player = &stored_player[i]; + + if (player->show_envelope != 0 && (!player->active || + player->MovPos == 0)) + { + ShowEnvelope(player->show_envelope - EL_ENVELOPE_1); - local_player->show_envelope = 0; + player->show_envelope = 0; + } } // use random number generator in every frame to make it less predictable @@ -12526,10 +12534,11 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy) } else { - int offset = game.scroll_delay_value; + int offset_raw = game.scroll_delay_value; if (jx != old_jx) // player has moved horizontally { + int offset = MIN(offset_raw, (SCR_FIELDX - 2) / 2); int offset_x = offset * (player->MovDir == MV_LEFT ? +1 : -1); int new_scroll_x = jx - MIDPOSX + offset_x; @@ -12550,6 +12559,7 @@ boolean MovePlayer(struct PlayerInfo *player, int dx, int dy) } else // player has moved vertically { + int offset = MIN(offset_raw, (SCR_FIELDY - 2) / 2); int offset_y = offset * (player->MovDir == MV_UP ? +1 : -1); int new_scroll_y = jy - MIDPOSY + offset_y;