X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame.c;h=46f173b47f1393185e461bc8ccf105fe378e801b;hb=6eaf8f1f31cd229a7315063f4434389d00aa5cff;hp=f4ae9303776da68ac2be4439c6b5ff651be2fe59;hpb=8bf81088836952a4f0263281560ef2127435e4b2;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index f4ae9303..46f173b4 100644 --- a/src/game.c +++ b/src/game.c @@ -1785,7 +1785,7 @@ static void InitPlayerField(int x, int y, int element, boolean init_game) player->jy = player->last_jy = y; } - if (!init_game) + // always check if player was just killed and should be reanimated { int player_nr = GET_PLAYER_NR(element); struct PlayerInfo *player = &stored_player[player_nr]; @@ -1877,6 +1877,8 @@ static void InitField(int x, int y, boolean init_game) case EL_MOLE_RIGHT: case EL_MOLE_UP: case EL_MOLE_DOWN: + case EL_SPRING_LEFT: + case EL_SPRING_RIGHT: InitMovDir(x, y); break; @@ -2991,6 +2993,12 @@ static void InitGameEngine(void) game_em.use_old_explosions = (game.engine_version < VERSION_IDENT(4,1,4,2)); + game_em.use_old_android = + (game.engine_version < VERSION_IDENT(4,1,4,2)); + + game_em.use_wrap_around = + (game.engine_version > VERSION_IDENT(4,1,4,1)); + // -------------------------------------------------------------------------- // set maximal allowed number of custom element changes per game frame @@ -4394,15 +4402,6 @@ void UpdateEngineValues(int actual_scroll_x, int actual_scroll_y, { // this is used for non-R'n'D game engines to update certain engine values - if (level.game_engine_type == GAME_ENGINE_TYPE_EM) - { - actual_scroll_x = correctLevelPosX_EM(actual_scroll_x); - actual_scroll_y = correctLevelPosY_EM(actual_scroll_y); - - actual_player_x = correctLevelPosX_EM(actual_player_x); - actual_player_y = correctLevelPosY_EM(actual_player_y); - } - // needed to determine if sounds are played within the visible screen area scroll_x = actual_scroll_x; scroll_y = actual_scroll_y; @@ -4495,6 +4494,12 @@ void InitMovDir(int x, int y) MovDir[x][y] = direction[2][element - EL_MOLE_LEFT]; break; + case EL_SPRING_LEFT: + case EL_SPRING_RIGHT: + Feld[x][y] = EL_SPRING; + MovDir[x][y] = direction[2][element - EL_SPRING_LEFT]; + break; + default: if (IS_CUSTOM_ELEMENT(element)) { @@ -14865,9 +14870,6 @@ void PlayLevelSound_EM(int xx, int yy, int element_em, int sample) int x = xx - offset; int y = yy - offset; - x = correctLevelPosX_EM(x); - y = correctLevelPosY_EM(y); - switch (sample) { case SOUND_blank: