int map_em_element_C_to_X(int element_em_cave)
{
- if (element_em_cave >= 0 && element_em_cave < CAVE_TILE_MAX)
- return map[element_em_cave];
+ if (element_em_cave < 0 || element_em_cave >= CAVE_TILE_MAX)
+ {
+ Error(ERR_WARN, "invalid EM cave element %d", element_em_cave);
- Error(ERR_WARN, "invalid EM cave element %d", element_em_cave);
+ return Xblank;
+ }
- return Xblank;
+ return map[element_em_cave];
}
int map_em_element_X_to_C(int element_em_game)
{
- static unsigned short map_reverse[TILE_MAX];
+ static unsigned short map_reverse[GAME_TILE_MAX];
static boolean map_reverse_initialized = FALSE;
if (!map_reverse_initialized)
int i;
// return "Cblank" for all undefined elements in mapping array
- for (i = 0; i < TILE_MAX; i++)
+ for (i = 0; i < GAME_TILE_MAX; i++)
map_reverse[i] = Cblank;
for (i = 0; i < CAVE_TILE_MAX; i++)
map_reverse_initialized = TRUE;
}
- if (element_em_game >= 0 && element_em_game < TILE_MAX)
+ if (element_em_game < 0 || element_em_game >= GAME_TILE_MAX)
{
- int element_em_cave = map_reverse[element_em_game];
-
- if (element_em_cave == Cblank && element_em_game != Xblank)
- Error(ERR_WARN, "unknown EM game element %d", element_em_game);
+ Error(ERR_WARN, "invalid EM game element %d", element_em_game);
- return element_em_cave;
+ return Cblank;
}
- Error(ERR_WARN, "invalid EM game element %d", element_em_game);
+ int element_em_cave = map_reverse[element_em_game];
- return Cblank;
+ if (element_em_cave == Cblank && element_em_game != Xblank)
+ Error(ERR_WARN, "unknown EM game element %d", element_em_game);
+
+ return element_em_cave;
}
void prepare_em_level(void)
lev.right = lev.left + lev.width;
lev.bottom = lev.top + lev.height;
- /* add linked cave buffer columns for wrap-around movement */
- for (x = 0; x < lev.left; x++)
+ if (cav.infinite)
{
- 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];
+ /* 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];
+ }
}
for (x = 0; x < lev.width; x++)
lev.gems_needed = cav.gems_needed;
lev.score = 0;
+ lev.testmode = cav.testmode;
+
+ if (lev.testmode)
+ {
+ lev.time = 0;
+ lev.gems_needed = 0;
+ }
+
lev.eater_score = cav.eater_score;
lev.alien_score = cav.alien_score;
lev.bug_score = cav.bug_score;
for (j = 0; j < 8; j++)
lev.ball_array[i][j] = map[cav.ball_array[i][j]];
- for (i = 0; i < TILE_MAX; i++)
+ for (i = 0; i < GAME_TILE_MAX; i++)
lev.android_array[i] = map[cav.android_array[i]];
/* determine number of players in this level */