added using cave buffer offsets in EM level conversion and game logic
authorHolger Schemel <info@artsoft.org>
Wed, 29 Jan 2020 21:54:12 +0000 (22:54 +0100)
committerHolger Schemel <info@artsoft.org>
Tue, 19 May 2020 16:12:58 +0000 (18:12 +0200)
src/game_em/convert.c
src/game_em/logic.c

index 5553772e62f6ece5654cf91c702e8cf14adfbed9..65efdcc13f78f88ee89ed9a0851bb08e68620126 100644 (file)
@@ -938,22 +938,20 @@ void prepare_em_level(void)
 
   /* reset all runtime variables to their initial values */
 
+  game_init_cave_buffers();
+
   lev.left = CAVE_BUFFER_XOFFSET;
   lev.top  = CAVE_BUFFER_YOFFSET;
   lev.right = lev.left + lev.width;
   lev.bottom = lev.top + lev.height;
 
-  for (y = 0; y < CAVE_HEIGHT; y++)
-    for (x = 0; x < CAVE_WIDTH; x++)
+  for (x = 0; x < lev.width; x++)
+    for (y = 0; y < lev.height; y++)
       lev.cave[lev.left + x][lev.top + y] = native_em_level.cave[x][y];
 
-  for (y = 0; y < CAVE_BUFFER_HEIGHT; y++)
-    for (x = 0; x < CAVE_BUFFER_WIDTH; x++)
-      lev.next[x][y] = lev.cave[x][y];
-
-  for (y = 0; y < CAVE_BUFFER_HEIGHT; y++)
-    for (x = 0; x < CAVE_BUFFER_WIDTH; x++)
-      lev.draw[x][y] = lev.cave[x][y];
+  for (x = lev.left; x < lev.right; x++)
+    for (y = lev.top; y < lev.bottom; y++)
+      lev.next[x][y] = lev.draw[x][y] = lev.cave[x][y];
 
   lev.time_initial = lev.time_seconds;
   lev.time = lev.time_initial;
index 808db47d18ef338d4841b642cfc046df2f1bb863..89de4ee59f8828232880b579cc0cebcee5d31d2e 100644 (file)
@@ -6273,8 +6273,8 @@ void logic_2(void)
   seed = RandomEM;
   score = 0;
 
-  for (y = 1; y < CAVE_BUFFER_HEIGHT - 1; y++)
-    for (x = 0; x < CAVE_BUFFER_WIDTH; x++)
+  for (y = lev.top; y < lev.bottom; y++)
+    for (x = lev.left; x < lev.right; x++)
       handle_tile(x, y);
 
   if (ply[0].alive || ply[1].alive || ply[2].alive || ply[3].alive)
@@ -6346,13 +6346,13 @@ void logic_3(void)
 
   /* handle explosions */
 
-  for (y = 1; y < CAVE_BUFFER_HEIGHT - 1; y++)
-    for (x = 1; x < CAVE_BUFFER_WIDTH - 1; x++)
+  for (y = lev.top; y < lev.bottom; y++)
+    for (x = lev.left; x < lev.right; x++)
       Lexplode(x, y);
 
   /* triple buffering */
 
-  for (y = 0; y < CAVE_BUFFER_HEIGHT; y++)
-    for (x = 0; x < CAVE_BUFFER_WIDTH; x++)
+  for (y = lev.top; y < lev.bottom; y++)
+    for (x = lev.left; x < lev.right; x++)
       next[x][y] = cave[x][y];
 }