X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Fgame.c;h=79fb4518f4c5f685e4d01f6b8c32d61617c87e7f;hp=2dcc07a496969b3782f16f9908c60e1d5106cc65;hb=cf41c74d18630924c1e32ad913d315a493402ef9;hpb=be5c5ba78b4d464fc85076e194fc8d03b77d3f14 diff --git a/src/game.c b/src/game.c index 2dcc07a4..79fb4518 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(); @@ -12180,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 @@ -12527,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; @@ -12551,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; @@ -15748,9 +15757,6 @@ static void RedrawGameButtonsExt(boolean on_tape) for (i = 0; i < NUM_GAME_BUTTONS; i++) if (!on_tape || gamebutton_info[i].allowed_on_tape) RedrawGadget(game_gadget[i]); - - // RedrawGadget() may have set REDRAW_ALL if buttons are defined off-area - redraw_mask &= ~REDRAW_ALL; } static void SetGadgetState(struct GadgetInfo *gi, boolean state)