X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fmain_bd.c;h=68f0ec400e8ff37e54d7066c7475cec45d3c5f6c;hb=01bf4018243f57cefbc0308e49f4dd2d40a0c054;hp=8f80b4f485e6d40bb4407ab930bc802df1cb1788;hpb=c3f4524693a17a8d75c7d25da24d4003b234d114;p=rocksndiamonds.git diff --git a/src/game_bd/main_bd.c b/src/game_bd/main_bd.c index 8f80b4f4..68f0ec40 100644 --- a/src/game_bd/main_bd.c +++ b/src/game_bd/main_bd.c @@ -69,6 +69,11 @@ void setLevelInfoToDefaults_BD_Ext(int width, int height) { cave->w = width; cave->h = height; + + cave->x1 = 0; + cave->y1 = 0; + cave->x2 = cave->w - 1; + cave->y2 = cave->h - 1; } gd_flatten_cave(cave, 0); @@ -132,7 +137,7 @@ boolean LoadNativeLevel_BD(char *filename, int level_pos, boolean level_info_onl // check if this cave has any replays if (native_bd_level.cave->replays != NULL) { - GList *item = native_bd_level.cave->replays; + List *item = native_bd_level.cave->replays; // try to find replay that was recorded for this difficulty level while (item != NULL && @@ -264,6 +269,10 @@ void InitGameEngine_BD(void) game_bd.game = gd_game_new(native_bd_level.cave_nr, native_bd_level.level_nr); + game_bd.game->itercycle = 0; + game_bd.game->itermax = 8; // default; dynamically changed at runtime + game_bd.game->itermax_last = game_bd.game->itermax; + // default: start with completely covered playfield int next_state = GAME_INT_START_UNCOVER + 1; @@ -282,6 +291,8 @@ void InitGameEngine_BD(void) if (setup.bd_skip_uncovering) gd_scroll(game_bd.game, TRUE, TRUE); + ClearRectangle(gd_screen_bitmap, 0, 0, SXSIZE, SYSIZE); + RedrawPlayfield_BD(TRUE); UpdateGameDoorValues_BD(); @@ -375,10 +386,11 @@ void CoverScreen_BD(void) void BlitScreenToBitmap_BD(Bitmap *target_bitmap) { + GdCave *cave = native_bd_level.cave; 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 full_xsize = (cave->x2 - cave->x1 + 1) * TILESIZE_VAR; + int full_ysize = (cave->y2 - cave->y1 + 1) * 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);