X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Fconvert.c;h=5091480478d027682383987f493939c824cfccb3;hb=e1015ff65ebebc0362ba23172acef6f35dc69f51;hp=4a4b9cf444234d8192f10d35ea7910c6be75ba85;hpb=f277b6c7e5926b448fb3ae123b383a540162ef2b;p=rocksndiamonds.git diff --git a/src/game_em/convert.c b/src/game_em/convert.c index 4a4b9cf4..50914804 100644 --- a/src/game_em/convert.c +++ b/src/game_em/convert.c @@ -275,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++) @@ -301,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; @@ -325,7 +336,7 @@ void prepare_em_level(void) lev.ball_time = cav.ball_time; lev.ball_cnt = cav.ball_time; - lev.ball_state = cav.ball_state; + lev.ball_active = cav.ball_active; lev.ball_random = cav.ball_random; lev.ball_pos = 0; @@ -333,22 +344,22 @@ void prepare_em_level(void) lev.shine_cnt = 0; lev.lenses_time = cav.lenses_time; - lev.lenses_cnt = cav.lenses_cnt; + lev.lenses_cnt = cav.lenses_active ? cav.lenses_time : 0; lev.magnify_time = cav.magnify_time; - lev.magnify_cnt = cav.magnify_cnt; + lev.magnify_cnt = cav.magnify_active ? cav.magnify_time : 0; lev.wheel_time = cav.wheel_time; - lev.wheel_cnt = cav.wheel_cnt; + lev.wheel_cnt = cav.wheel_active ? cav.wheel_time : 0; lev.wheel_x = cav.wheel_x; lev.wheel_y = cav.wheel_y; lev.wind_time = cav.wind_time; - lev.wind_cnt = cav.wind_cnt; + lev.wind_cnt = cav.wind_time; lev.wind_direction = cav.wind_direction; - lev.wonderwall_time = cav.wonderwall_time; - lev.wonderwall_state = cav.wonderwall_state; + lev.wonderwall_time = cav.wonderwall_time; + lev.wonderwall_active = cav.wonderwall_active; lev.killed_out_of_time = FALSE; @@ -370,13 +381,13 @@ void prepare_em_level(void) for (i = 0; i < MAX_PLAYERS; i++) { - ply[i].exists = 0; - ply[i].alive_initial = FALSE; + ply[i].exists = FALSE; + ply[i].alive = FALSE; if (cav.player_x[i] != -1 && cav.player_y[i] != -1) { - ply[i].exists = 1; + ply[i].exists = TRUE; lev.home_initial++; } @@ -396,7 +407,7 @@ void prepare_em_level(void) { if (players_left) { - ply[i].alive_initial = TRUE; + ply[i].alive = TRUE; players_left--; } else @@ -414,17 +425,26 @@ void prepare_em_level(void) for (i = 0; i < MAX_PLAYERS; i++) { ply[i].num = i; - ply[i].alive = ply[i].alive_initial; - ply[i].dynamite = 0; - ply[i].dynamite_cnt = 0; - ply[i].keys = 0; - ply[i].anim = 0; - ply[i].oldx = ply[i].x = cav.player_x[i] + lev.left; - ply[i].oldy = ply[i].y = cav.player_y[i] + lev.top; + ply[i].anim = PLY_still; + + ply[i].x = cav.player_x[i] + lev.left; + ply[i].y = cav.player_y[i] + lev.top; + ply[i].prev_x = ply[i].x; + ply[i].prev_y = ply[i].y; + + ply[i].dynamite = 0; + ply[i].dynamite_cnt = 0; + ply[i].keys = 0; + ply[i].last_move_dir = MV_NONE; - ply[i].joy_n = ply[i].joy_e = ply[i].joy_s = ply[i].joy_w = 0; - ply[i].joy_snap = ply[i].joy_drop = 0; - ply[i].joy_stick = ply[i].joy_spin = 0; + + ply[i].joy_n = FALSE; + ply[i].joy_e = FALSE; + ply[i].joy_s = FALSE; + ply[i].joy_w = FALSE; + ply[i].joy_snap = FALSE; + ply[i].joy_drop = FALSE; + ply[i].joy_stick = FALSE; } // the following engine variables are initialized to version-specific values