X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Fconvert.c;h=00768b5b96a54aa3b87797426136a8a1dcc8350f;hb=6b9e2be7;hp=12deb93096808ffbb2dff4d8c63d8844c3676aac;hpb=ccae7930955b9fdb46e1d2da1373cc00ff76cff1;p=rocksndiamonds.git diff --git a/src/game_em/convert.c b/src/game_em/convert.c index 12deb930..00768b5b 100644 --- a/src/game_em/convert.c +++ b/src/game_em/convert.c @@ -9,7 +9,7 @@ void prepare_em_level(void) { - int i, x, y; + int i, j, x, y; int players_left; boolean team_mode; @@ -17,6 +17,9 @@ void prepare_em_level(void) game_init_cave_buffers(); + lev.width = cav.width; + lev.height = cav.height; + lev.left = CAVE_BUFFER_XOFFSET; lev.top = CAVE_BUFFER_YOFFSET; lev.right = lev.left + lev.width; @@ -38,213 +41,79 @@ void prepare_em_level(void) 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]; + lev.cave[lev.left + x][lev.top + y] = cav.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; - - lev.required = lev.required_initial; + lev.time = cav.time_seconds; + lev.gems_needed = cav.gems_needed; lev.score = 0; - lev.android_move_cnt = lev.android_move_time; - lev.android_clone_cnt = lev.android_clone_time; - - lev.ball_pos = 0; - lev.ball_state = lev.ball_state_initial; - lev.ball_cnt = lev.ball_time; + lev.eater_score = cav.eater_score; + lev.alien_score = cav.alien_score; + lev.bug_score = cav.bug_score; + lev.tank_score = cav.tank_score; + lev.emerald_score = cav.emerald_score; + lev.diamond_score = cav.diamond_score; + lev.nut_score = cav.nut_score; + lev.slurp_score = cav.slurp_score; + lev.dynamite_score = cav.dynamite_score; + lev.key_score = cav.key_score; + lev.lenses_score = cav.lenses_score; + lev.magnify_score = cav.magnify_score; + lev.exit_score = cav.exit_score; + + lev.amoeba_time = cav.amoeba_time; + + lev.android_move_time = cav.android_move_time; + lev.android_move_cnt = cav.android_move_time; + + lev.android_clone_time = cav.android_clone_time; + lev.android_clone_cnt = cav.android_clone_time; + + lev.ball_time = cav.ball_time; + lev.ball_cnt = cav.ball_time; + lev.ball_state = cav.ball_state; + lev.ball_random = cav.ball_random; + lev.ball_pos = 0; lev.eater_pos = 0; lev.shine_cnt = 0; - lev.lenses_cnt = lev.lenses_cnt_initial; - lev.magnify_cnt = lev.magnify_cnt_initial; - - lev.wheel_cnt = lev.wheel_cnt_initial; - lev.wheel_x = lev.wheel_x_initial; - lev.wheel_y = lev.wheel_y_initial; - - lev.wind_direction = lev.wind_direction_initial; - lev.wind_cnt = lev.wind_cnt_initial; - - lev.wonderwall_state = lev.wonderwall_state_initial; - lev.wonderwall_time = lev.wonderwall_time_initial; - - lev.killed_out_of_time = FALSE; - - if (lev.android_eater) - { - lev.android_array[Xeater_n] = Xeater_n; - lev.android_array[Yeater_nB] = Xeater_n; - - lev.android_array[Xeater_e] = Xeater_e; - lev.android_array[Yeater_eB] = Xeater_e; + lev.lenses_time = cav.lenses_time; + lev.lenses_cnt = cav.lenses_cnt; - lev.android_array[Xeater_s] = Xeater_s; - lev.android_array[Yeater_sB] = Xeater_s; + lev.magnify_time = cav.magnify_time; + lev.magnify_cnt = cav.magnify_cnt; - lev.android_array[Xeater_w] = Xeater_w; - lev.android_array[Yeater_wB] = Xeater_w; - } - - if (lev.android_alien) - { - lev.android_array[Xalien] = Xalien; - lev.android_array[Xalien_pause] = Xalien; - lev.android_array[Yalien_nB] = Xalien; - lev.android_array[Yalien_eB] = Xalien; - lev.android_array[Yalien_sB] = Xalien; - lev.android_array[Yalien_wB] = Xalien; - } + lev.wheel_time = cav.wheel_time; + lev.wheel_cnt = cav.wheel_cnt; + lev.wheel_x = cav.wheel_x; + lev.wheel_y = cav.wheel_y; - if (lev.android_bug) - { - lev.android_array[Xbug_1_n] = Xbug_2_n; - lev.android_array[Xbug_2_n] = Xbug_2_n; - lev.android_array[Ybug_nB] = Xbug_2_n; - lev.android_array[Ybug_n_e] = Xbug_2_n; - lev.android_array[Ybug_n_w] = Xbug_2_n; - - lev.android_array[Xbug_1_e] = Xbug_2_e; - lev.android_array[Xbug_2_e] = Xbug_2_e; - lev.android_array[Ybug_eB] = Xbug_2_e; - lev.android_array[Ybug_e_s] = Xbug_2_e; - lev.android_array[Ybug_e_n] = Xbug_2_e; - - lev.android_array[Xbug_1_s] = Xbug_2_s; - lev.android_array[Xbug_2_s] = Xbug_2_s; - lev.android_array[Ybug_sB] = Xbug_2_s; - lev.android_array[Ybug_s_w] = Xbug_2_s; - lev.android_array[Ybug_s_e] = Xbug_2_s; - - lev.android_array[Xbug_1_w] = Xbug_2_w; - lev.android_array[Xbug_2_w] = Xbug_2_w; - lev.android_array[Ybug_wB] = Xbug_2_w; - lev.android_array[Ybug_w_n] = Xbug_2_w; - lev.android_array[Ybug_w_s] = Xbug_2_w; - } + lev.wind_time = cav.wind_time; + lev.wind_cnt = cav.wind_cnt; + lev.wind_direction = cav.wind_direction; - if (lev.android_tank) - { - lev.android_array[Xtank_1_n] = Xtank_1_n; - lev.android_array[Xtank_2_n] = Xtank_1_n; - lev.android_array[Ytank_nB] = Xtank_1_n; - lev.android_array[Ytank_n_e] = Xtank_1_n; - lev.android_array[Ytank_n_w] = Xtank_1_n; - - lev.android_array[Xtank_1_e] = Xtank_1_e; - lev.android_array[Xtank_2_e] = Xtank_1_e; - lev.android_array[Ytank_eB] = Xtank_1_e; - lev.android_array[Ytank_e_s] = Xtank_1_e; - lev.android_array[Ytank_e_n] = Xtank_1_e; - - lev.android_array[Xtank_1_s] = Xtank_1_s; - lev.android_array[Xtank_2_s] = Xtank_1_s; - lev.android_array[Ytank_sB] = Xtank_1_s; - lev.android_array[Ytank_s_w] = Xtank_1_s; - lev.android_array[Ytank_s_e] = Xtank_1_s; - - lev.android_array[Xtank_1_w] = Xtank_1_w; - lev.android_array[Xtank_2_w] = Xtank_1_w; - lev.android_array[Ytank_wB] = Xtank_1_w; - lev.android_array[Ytank_w_n] = Xtank_1_w; - lev.android_array[Ytank_w_s] = Xtank_1_w; - } - - if (lev.android_emerald) - { - lev.android_array[Xemerald] = Xemerald; - lev.android_array[Xemerald_pause] = Xemerald; - lev.android_array[Xemerald_fall] = Xemerald; - lev.android_array[Yemerald_sB] = Xemerald; - lev.android_array[Yemerald_eB] = Xemerald; - lev.android_array[Yemerald_wB] = Xemerald; - } + lev.wonderwall_time = cav.wonderwall_time; + lev.wonderwall_state = cav.wonderwall_state; - if (lev.android_diamond) - { - lev.android_array[Xdiamond] = Xdiamond; - lev.android_array[Xdiamond_pause] = Xdiamond; - lev.android_array[Xdiamond_fall] = Xdiamond; - lev.android_array[Ydiamond_sB] = Xdiamond; - lev.android_array[Ydiamond_eB] = Xdiamond; - lev.android_array[Ydiamond_wB] = Xdiamond; - } - - if (lev.android_stone) - { - lev.android_array[Xstone] = Xstone; - lev.android_array[Xstone_pause] = Xstone; - lev.android_array[Xstone_fall] = Xstone; - lev.android_array[Ystone_sB] = Xstone; - lev.android_array[Ystone_eB] = Xstone; - lev.android_array[Ystone_wB] = Xstone; - } - - if (lev.android_bomb) - { - lev.android_array[Xbomb] = Xbomb; - lev.android_array[Xbomb_pause] = Xbomb; - lev.android_array[Xbomb_fall] = Xbomb; - lev.android_array[Ybomb_sB] = Xbomb; - lev.android_array[Ybomb_eB] = Xbomb; - lev.android_array[Ybomb_wB] = Xbomb; - } - - if (lev.android_nut) - { - lev.android_array[Xnut] = Xnut; - lev.android_array[Xnut_pause] = Xnut; - lev.android_array[Xnut_fall] = Xnut; - lev.android_array[Ynut_sB] = Xnut; - lev.android_array[Ynut_eB] = Xnut; - lev.android_array[Ynut_wB] = Xnut; - } + lev.killed_out_of_time = FALSE; - if (lev.android_spring) - { - lev.android_array[Xspring] = Xspring; - lev.android_array[Xspring_pause] = Xspring; - lev.android_array[Xspring_fall] = Xspring; - lev.android_array[Xspring_e] = Xspring; - lev.android_array[Xspring_w] = Xspring; - lev.android_array[Yspring_sB] = Xspring; - lev.android_array[Yspring_eB] = Xspring; - lev.android_array[Yspring_wB] = Xspring; - lev.android_array[Yspring_alien_eB] = Xspring; - lev.android_array[Yspring_alien_wB] = Xspring; - } + lev.num_ball_arrays = cav.num_ball_arrays; - if (lev.android_dynamite) - { - lev.android_array[Xdynamite] = Xdynamite; - } + for (i = 0; i < 8; i++) + for (j = 0; j < 9; j++) + lev.eater_array[i][j] = cav.eater_array[i][j]; - if (lev.android_balloon) - { - lev.android_array[Xballoon] = Xballoon; - lev.android_array[Yballoon_nB] = Xballoon; - lev.android_array[Yballoon_eB] = Xballoon; - lev.android_array[Yballoon_sB] = Xballoon; - lev.android_array[Yballoon_wB] = Xballoon; - } + for (i = 0; i < 8; i++) + for (j = 0; j < 8; j++) + lev.ball_array[i][j] = cav.ball_array[i][j]; - if (lev.android_amoeba) - { - lev.android_array[Xfake_amoeba] = Xdrip; - lev.android_array[Yfake_amoeba] = Xdrip; - lev.android_array[Xamoeba_1] = Xdrip; - lev.android_array[Xamoeba_2] = Xdrip; - lev.android_array[Xamoeba_3] = Xdrip; - lev.android_array[Xamoeba_4] = Xdrip; - lev.android_array[Xamoeba_5] = Xdrip; - lev.android_array[Xamoeba_6] = Xdrip; - lev.android_array[Xamoeba_7] = Xdrip; - lev.android_array[Xamoeba_8] = Xdrip; - } + for (i = 0; i < TILE_MAX; i++) + lev.android_array[i] = cav.android_array[i]; /* determine number of players in this level */ lev.home_initial = 0; @@ -254,7 +123,8 @@ void prepare_em_level(void) ply[i].exists = 0; ply[i].alive_initial = FALSE; - if (ply[i].x_initial != -1 && ply[i].y_initial != -1) + if (cav.player_x[i] != -1 && + cav.player_y[i] != -1) { ply[i].exists = 1; @@ -281,10 +151,8 @@ void prepare_em_level(void) } else { - int x = ply[i].x_initial; - int y = ply[i].y_initial; - - native_em_level.cave[x][y] = Xblank; + int x = cav.player_x[i]; + int y = cav.player_y[i]; lev.cave[lev.left + x][lev.top + y] = Xblank; lev.next[lev.left + x][lev.top + y] = Xblank; @@ -301,8 +169,8 @@ void prepare_em_level(void) ply[i].dynamite_cnt = 0; ply[i].keys = 0; ply[i].anim = 0; - ply[i].oldx = ply[i].x = ply[i].x_initial + lev.left; - ply[i].oldy = ply[i].y = ply[i].y_initial + lev.top; + 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].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; @@ -314,6 +182,7 @@ void prepare_em_level(void) // // - game_em.use_single_button (default: TRUE) // - game_em.use_snap_key_bug (default: FALSE) + // - game_em.use_old_explosions (default: FALSE) game_em.level_solved = FALSE; game_em.game_over = FALSE;