X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Fconvert.c;h=e5bc5c6832cf21e08a90622422587a57bf48bc26;hb=a31f49b0d06d4874e266c62383a225d61bb1ae5d;hp=9ebf6f4c825afcc395df46714d44120b9d5e084b;hpb=3f3cf82da520ddc14fbfd50d284e1eacc620b6b3;p=rocksndiamonds.git diff --git a/src/game_em/convert.c b/src/game_em/convert.c index 9ebf6f4c..e5bc5c68 100644 --- a/src/game_em/convert.c +++ b/src/game_em/convert.c @@ -213,12 +213,14 @@ static const short map[CAVE_TILE_MAX] = 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) @@ -240,19 +242,19 @@ int map_em_element_X_to_C(int element_em_game) map_reverse_initialized = TRUE; } - if (element_em_game >= 0 && element_em_game < 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) @@ -273,18 +275,21 @@ 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++) @@ -299,6 +304,14 @@ void prepare_em_level(void) 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;