for (i = 0; i < MAX_PLAYERS; i++)
{
+ /* check for wrap-around movement */
+ if (ply[i].x < lev.left ||
+ ply[i].x > lev.right - 1)
+ {
+ ply[i].x = (ply[i].x < lev.left ? lev.right - 1 : lev.left);
+
+ game.centered_player_nr_next = i;
+ game.set_centered_player = TRUE;
+ game.set_centered_player_fast = TRUE;
+ }
+
ply[i].oldx = ply[i].x;
ply[i].oldy = ply[i].y;
ply[i].anim = PLY_still;
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)
for (count = lev.amoeba_time; count--;)
{
- x = lev.left - 1 + (random >> 10) % CAVE_WIDTH;
- y = lev.top - 1 + (random >> 20) % CAVE_HEIGHT;
+ x = lev.left - 1 + (random >> 10) % (CAVE_WIDTH + 2);
+ y = lev.top - 1 + (random >> 20) % (CAVE_HEIGHT + 2);
- Lamoeba(x, y);
+ if (x >= lev.left && x < lev.right &&
+ y >= lev.top && y < lev.bottom)
+ Lamoeba(x, y);
random = random * 129 + 1;
}
/* 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];
}