X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=e75235853eec0be2caa54fbf912a3f6a5b933e36;hb=31b462a53d66e5d4fb8701c2b7d31180af1f5f6d;hp=5a0a70b76f9cf6169f9ae91edf8c56904fb0469d;hpb=42ffe4ef1bde9f93619d259af377083cdcd96da6;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 5a0a70b7..e7523585 100644 --- a/src/game.c +++ b/src/game.c @@ -4355,20 +4355,26 @@ void InitGame() } #if NEW_TILESIZE -#if 1 - if (TILESIZE_VAR < TILESIZE && EVEN(SCR_FIELDX)) - { - // SBX_Left--; - SBX_Right++; - } -#endif -#endif + + if (lev_fieldx + (SBX_Left < 0 ? 2 : 0) <= SCR_FIELDX) + SBX_Left = SBX_Right = -1 * (SCR_FIELDX - lev_fieldx) / 2; + + if (lev_fieldy + (SBY_Upper < 0 ? 2 : 0) <= SCR_FIELDY) + SBY_Upper = SBY_Lower = -1 * (SCR_FIELDY - lev_fieldy) / 2; + + if (EVEN(SCR_FIELDX)) + SBX_Left--; + if (EVEN(SCR_FIELDY)) + SBY_Upper--; + +#else if (lev_fieldx + (SBX_Left == -1 ? 2 : 0) <= SCR_FIELDX) SBX_Left = SBX_Right = -1 * (SCR_FIELDX - lev_fieldx) / 2; if (lev_fieldy + (SBY_Upper == -1 ? 2 : 0) <= SCR_FIELDY) SBY_Upper = SBY_Lower = -1 * (SCR_FIELDY - lev_fieldy) / 2; +#endif /* if local player not found, look for custom element that might create the player (make some assumptions about the right custom element) */ @@ -4479,6 +4485,10 @@ void InitGame() local_player->jy - MIDPOSY); } +#if 0 + printf("::: %d, %d (initial)\n", scroll_x, scroll_y); +#endif + #if 0 /* do not use PLAYING mask for fading out from main screen */ game_status = GAME_MODE_MAIN; @@ -4536,9 +4546,13 @@ void InitGame() if (game.timegate_time_left == 0) CloseAllOpenTimegates(); +#if NEW_TILESIZE + BlitScreenToBitmap(backbuffer); +#else /* blit playfield from scroll buffer to normal back buffer for fading in */ if (setup.soft_scrolling) BlitBitmap(fieldbuffer, backbuffer, FX, FY, SXSIZE, SYSIZE, SX, SY); +#endif redraw_mask |= REDRAW_FROM_BACKBUFFER; } @@ -4624,6 +4638,17 @@ void InitGame() MapTapeButtons(); #endif + if (!game.restart_level && !tape.playing) + { + LevelStats_incPlayed(level_nr); + + SaveLevelSetup_SeriesInfo(); + +#if 0 + printf("::: PLAYING LEVEL (%d)\n", LevelStats_getPlayed(level_nr)); +#endif + } + game.restart_level = FALSE; } @@ -4867,6 +4892,17 @@ void GameWon() local_player->LevelSolved_SaveTape = tape.recording; local_player->LevelSolved_SaveScore = !tape.playing; + if (!tape.playing) + { + LevelStats_incSolved(level_nr); + + SaveLevelSetup_SeriesInfo(); + +#if 0 + printf("::: LEVEL SOLVED (%d)\n", LevelStats_getSolved(level_nr)); +#endif + } + if (tape.auto_play) /* tape might already be stopped here */ tape.auto_play_level_solved = TRUE; @@ -5071,6 +5107,7 @@ void GameEnd() if (level_nr == leveldir_current->handicap_level) { leveldir_current->handicap_level++; + SaveLevelSetup_SeriesInfo(); }