X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fmain_bd.c;h=ccb04e23a3f211bebf515d870a31c23aadc57c25;hb=d959ed0d8d9cadec525853c2ab584f8d1ab079ae;hp=991523c5539e8d616a81508080a982c9543285a4;hpb=45483d224aed58ac2cf856b0fcdd2d4707084047;p=rocksndiamonds.git diff --git a/src/game_bd/main_bd.c b/src/game_bd/main_bd.c index 991523c5..ccb04e23 100644 --- a/src/game_bd/main_bd.c +++ b/src/game_bd/main_bd.c @@ -187,3 +187,65 @@ boolean checkGameRunning_BD(void) { return (game_bd.game != NULL && game_bd.game->state_counter == GAME_INT_CAVE_RUNNING); } + +unsigned int InitEngineRandom_BD(int seed) +{ + if (seed == NEW_RANDOMIZE) + { + // get randomly selected seed to render the cave + seed = g_random_int_range(0, GD_CAVE_SEED_MAX); + } + + game_bd.random_seed = seed; + + return (unsigned int)seed; +} + + +// ============================================================================ +// graphics functions +// ============================================================================ + +void CoverScreen_BD(void) +{ + game_bd.cover_screen = FALSE; + + if (setup.bd_skip_uncovering) + return; + + game_bd.game->state_counter = GAME_INT_COVER_START; + + // play game engine (with normal speed) until cave covered + while (game_bd.game->state_counter < GAME_INT_COVER_ALL + 1) + { + play_game_func(game_bd.game, 0); + + RedrawPlayfield_BD(TRUE); + + BlitScreenToBitmap_BD(backbuffer); + + BackToFront(); + } + + // stop uncovering loop sound when not using native sound engine + FadeSounds(); +} + +void BlitScreenToBitmap_BD(Bitmap *target_bitmap) +{ + int xsize = SXSIZE; + int ysize = SYSIZE; + int full_xsize = native_bd_level.cave->w * TILESIZE_VAR; + int full_ysize = native_bd_level.cave->h * TILESIZE_VAR; + int sx = SX + (full_xsize < xsize ? (xsize - full_xsize) / 2 : 0); + int sy = SY + (full_ysize < ysize ? (ysize - full_ysize) / 2 : 0); + int sxsize = (full_xsize < xsize ? full_xsize : xsize); + int sysize = (full_ysize < ysize ? full_ysize : ysize); + + BlitBitmap(gd_screen_bitmap, target_bitmap, 0, 0, sxsize, sysize, sx, sy); +} + +void RedrawPlayfield_BD(boolean force_redraw) +{ + gd_drawcave(gd_screen_bitmap, game_bd.game, force_redraw); +}