added optional button to restart game (door, panel and touch variants)
[rocksndiamonds.git] / src / game_em / convert.c
index 59c9a81e2d95ded94a1071865a7172f19aa76573..f8059b539e26169688a04c398952872597188d41 100644 (file)
@@ -278,21 +278,24 @@ void prepare_em_level(void)
   lev.bottom = lev.top + lev.height;
 
   lev.infinite = game_em.use_wrap_around;
+  lev.infinite_true = cav.infinite_true;
 
   if (lev.infinite)
   {
     /* add linked cave buffer columns for wrap-around movement */
     for (x = 0; x < lev.left; x++)
     {
-      lev.cavecol[x] = lev.cavecol[lev.width + x];
-      lev.nextcol[x] = lev.nextcol[lev.width + x];
-      lev.drawcol[x] = lev.drawcol[lev.width + x];
-      lev.boomcol[x] = lev.boomcol[lev.width + x];
-
-      lev.cavecol[lev.right + x] = lev.cavecol[lev.left + x];
-      lev.nextcol[lev.right + x] = lev.nextcol[lev.left + x];
-      lev.drawcol[lev.right + x] = lev.drawcol[lev.left + x];
-      lev.boomcol[lev.right + x] = lev.boomcol[lev.left + x];
+      int offset = (lev.infinite_true ? 0 : 1);
+
+      lev.cavecol[x] = &lev.cavecol[lev.width + x][-offset];
+      lev.nextcol[x] = &lev.nextcol[lev.width + x][-offset];
+      lev.drawcol[x] = &lev.drawcol[lev.width + x][-offset];
+      lev.boomcol[x] = &lev.boomcol[lev.width + x][-offset];
+
+      lev.cavecol[lev.right + x] = &lev.cavecol[lev.left + x][offset];
+      lev.nextcol[lev.right + x] = &lev.nextcol[lev.left + x][offset];
+      lev.drawcol[lev.right + x] = &lev.drawcol[lev.left + x][offset];
+      lev.boomcol[lev.right + x] = &lev.boomcol[lev.left + x][offset];
     }
   }
 
@@ -469,6 +472,10 @@ void prepare_em_level(void)
   // - game_em.use_old_push_elements (default: FALSE)
   // - game_em.use_old_push_into_acid (default: FALSE)
   // - game_em.use_wrap_around (default: TRUE)
+  // - game_em.use_push_delay (default: TRUE)
+
+  if (native_em_level.file_version > FILE_VERSION_EM_V5)
+    game_em.use_push_delay = FALSE;
 
   game_em.level_solved = FALSE;
   game_em.game_over = FALSE;