X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=862c5083d0c2d974b13eeadf6754b9fcfcf162c4;hb=038fb64da88a05a91c974dc1e3b14cf4cdc69743;hp=fbe34cc7a6eeef5328fc8bb5b85bef4a62c741fb;hpb=5e53b3af62af5a0fb7726afebf62dc4a5c297596;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index fbe34cc7..862c5083 100644 --- a/src/game.c +++ b/src/game.c @@ -2228,14 +2228,14 @@ static void UpdateGameControlValues(void) game_mm.score : game.score); int gems = (level.game_engine_type == GAME_ENGINE_TYPE_EM ? - game_em.lev->required : + game_em.lev->gems_needed : level.game_engine_type == GAME_ENGINE_TYPE_SP ? game_sp.infotrons_still_needed : level.game_engine_type == GAME_ENGINE_TYPE_MM ? game_mm.kettles_still_needed : game.gems_still_needed); int exit_closed = (level.game_engine_type == GAME_ENGINE_TYPE_EM ? - game_em.lev->required > 0 : + game_em.lev->gems_needed > 0 : level.game_engine_type == GAME_ENGINE_TYPE_SP ? game_sp.infotrons_still_needed > 0 : level.game_engine_type == GAME_ENGINE_TYPE_MM ? @@ -2906,12 +2906,17 @@ static void InitGameEngine(void) game.use_block_last_field_bug = (game.engine_version < VERSION_IDENT(3,1,1,0)); + /* various special flags and settings for native Emerald Mine game engine */ + game_em.use_single_button = (game.engine_version > VERSION_IDENT(4,0,0,2)); game_em.use_snap_key_bug = (game.engine_version < VERSION_IDENT(4,0,1,0)); + game_em.use_old_explosions = + (game.engine_version < VERSION_IDENT(4,1,4,2)); + // -------------------------------------------------------------------------- // set maximal allowed number of custom element changes per game frame @@ -3250,6 +3255,8 @@ static void InitGameEngine(void) // ---------- initialize graphics engine ------------------------------------ game.scroll_delay_value = (game.forced_scroll_delay_value != -1 ? game.forced_scroll_delay_value : + level.game_engine_type == GAME_ENGINE_TYPE_EM && + !setup.forced_scroll_delay ? 0 : setup.scroll_delay ? setup.scroll_delay_value : 0); game.scroll_delay_value = MIN(MAX(MIN_SCROLL_DELAY, game.scroll_delay_value), MAX_SCROLL_DELAY); @@ -3933,7 +3940,7 @@ void InitGame(void) game.centered_player_nr = (network_playing ? local_player->index_nr : -1); game.centered_player_nr_next = game.centered_player_nr; game.set_centered_player = FALSE; - game.set_centered_player_fast = FALSE; + game.set_centered_player_wrap = FALSE; if (network_playing && tape.recording) { @@ -14701,7 +14708,7 @@ static void PlayLevelMusic(void) void PlayLevelSound_EM(int xx, int yy, int element_em, int sample) { - int element = (element_em > -1 ? map_element_EM_to_RND(element_em) : 0); + int element = (element_em > -1 ? map_element_EM_to_RND_game(element_em) : 0); int offset = (BorderElement == EL_STEELWALL ? 1 : 0); int x = xx - 1 - offset; int y = yy - 1 - offset;