replaced glib function calls to g_list_*()
[rocksndiamonds.git] / src / game_bd / main_bd.c
index 8f80b4f485e6d40bb4407ab930bc802df1cb1788..68f0ec400e8ff37e54d7066c7475cec45d3c5f6c 100644 (file)
@@ -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);