X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_mm%2Fmm_files.c;h=fa47d1f4da7656997ab583ded1f973585abf1ded;hb=6cf34a189f4a3707c9131652621dd67731f14f6b;hp=0b88735ec920e8bcac421222359fdc7bf4882ec6;hpb=b903ee03857c26c3816a37b4c7c858c24250a7ef;p=rocksndiamonds.git diff --git a/src/game_mm/mm_files.c b/src/game_mm/mm_files.c index 0b88735e..fa47d1f4 100644 --- a/src/game_mm/mm_files.c +++ b/src/game_mm/mm_files.c @@ -97,18 +97,21 @@ void setLevelInfoToDefaults_MM() native_mm_level.encoding_16bit_field = FALSE; /* default: only 8-bit elements */ - lev_fieldx = native_mm_level.fieldx = STD_LEV_FIELDX; - lev_fieldy = native_mm_level.fieldy = STD_LEV_FIELDY; + native_mm_level.fieldx = STD_LEV_FIELDX; + native_mm_level.fieldy = STD_LEV_FIELDY; for (x = 0; x < MAX_LEV_FIELDX; x++) for (y = 0; y < MAX_LEV_FIELDY; y++) - native_mm_level.field[x][y] = Feld[x][y] = Ur[x][y] = EL_EMPTY; + native_mm_level.field[x][y] = Ur[x][y] = EL_EMPTY; native_mm_level.time = 100; native_mm_level.kettles_needed = 0; native_mm_level.auto_count_kettles = TRUE; native_mm_level.amoeba_speed = 0; - native_mm_level.time_fuse = 0; + native_mm_level.time_fuse = 25; + native_mm_level.time_bomb = 75; + native_mm_level.time_ball = 75; + native_mm_level.time_block = 75; native_mm_level.laser_red = FALSE; native_mm_level.laser_green = FALSE; native_mm_level.laser_blue = TRUE; @@ -124,9 +127,8 @@ void setLevelInfoToDefaults_MM() for (i = 0; i < LEVEL_SCORE_ELEMENTS; i++) native_mm_level.score[i] = 10; - native_mm_level.field[0][0] = Feld[0][0] = Ur[0][0] = EL_MCDUFFIN_RIGHT; + native_mm_level.field[0][0] = Ur[0][0] = EL_MCDUFFIN_RIGHT; native_mm_level.field[STD_LEV_FIELDX-1][STD_LEV_FIELDY-1] = - Feld[STD_LEV_FIELDX-1][STD_LEV_FIELDY-1] = Ur[STD_LEV_FIELDX-1][STD_LEV_FIELDY-1] = EL_EXIT_CLOSED; } @@ -155,8 +157,8 @@ static int LoadLevel_MM_HEAD(File *file, int chunk_size, int i; int laser_color; - lev_fieldx = level->fieldx = getFile8Bit(file); - lev_fieldy = level->fieldy = getFile8Bit(file); + level->fieldx = getFile8Bit(file); + level->fieldy = getFile8Bit(file); level->time = getFile16BitInteger(file, BYTE_ORDER_BIG_ENDIAN); level->kettles_needed = getFile16BitInteger(file, BYTE_ORDER_BIG_ENDIAN); @@ -182,6 +184,10 @@ static int LoadLevel_MM_HEAD(File *file, int chunk_size, level->amoeba_speed = getFile8Bit(file); level->time_fuse = getFile8Bit(file); + // fuse time was 0 and hardcoded in game engine in level files up to 2.0.x + if (level->file_version <= MM_FILE_VERSION_2_0) + level->time_fuse = 25; + laser_color = getFile8Bit(file); level->laser_red = (laser_color >> 2) & 0x01; level->laser_green = (laser_color >> 1) & 0x01; @@ -229,7 +235,7 @@ static int LoadLevel_MM_BODY(File *file, int chunk_size, for (y = 0; y < level->fieldy; y++) for (x = 0; x < level->fieldx; x++) - native_mm_level.field[x][y] = Feld[x][y] = Ur[x][y] = + native_mm_level.field[x][y] = Ur[x][y] = checkLevelElement(level->encoding_16bit_field ? getFile16BitInteger(file, BYTE_ORDER_BIG_ENDIAN) : getFile8Bit(file));