X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=e9d2cb5968a1677854bb94e2bc38ab6a6de243b6;hb=dab1449db859710caf2b5bdd075f90263a9590e3;hp=3989a22a83fc62557b4bf434be9e29b9e287b87b;hpb=90a176e848f9a21c6352c8b9aba303441fcfc27a;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 3989a22a..e9d2cb59 100644 --- a/src/files.c +++ b/src/files.c @@ -313,6 +313,8 @@ static void setLevelInfoToDefaults(struct LevelInfo *level) level->no_valid_file = FALSE; + level->changed = FALSE; + if (leveldir_current == NULL) /* only when dumping level */ return; @@ -2235,10 +2237,14 @@ static void LoadLevel_InitVersion(struct LevelInfo *level, char *filename) } } -#if 1 +#if 1 /* USE_NEW_BLOCK_STYLE */ /* blocking the last field when moving was corrected in version 3.1.1 */ if (level->game_version < VERSION_IDENT(3,1,1,0)) { +#if 0 + printf("::: %d\n", level->block_last_field); +#endif + /* even "not blocking" was blocking the last field for one frame */ level->block_delay = (level->block_last_field ? 7 : 1); level->sp_block_delay = (level->sp_block_last_field ? 7 : 1); @@ -2370,6 +2376,7 @@ static void LoadLevel_InitElements(struct LevelInfo *level, char *filename) } /* initialize "can_explode" field for old levels which did not store this */ + /* !!! CHECK THIS -- "<= 3,1,0,0" IS PROBABLY WRONG !!! */ if (level->game_version <= VERSION_IDENT(3,1,0,0)) { for (i = 0; i < NUM_CUSTOM_ELEMENTS; i++) @@ -2385,6 +2392,22 @@ static void LoadLevel_InitElements(struct LevelInfo *level, char *filename) } } + /* correct previously hard-coded move delay values for maze runner style */ + if (level->game_version < VERSION_IDENT(3,1,1,0)) + { + for (i = 0; i < NUM_CUSTOM_ELEMENTS; i++) + { + int element = EL_CUSTOM_START + i; + + if (element_info[element].move_pattern & MV_MAZE_RUNNER_STYLE) + { + /* previously hard-coded and therefore ignored */ + element_info[element].move_delay_fixed = 9; + element_info[element].move_delay_random = 0; + } + } + } + #if 0 /* set default push delay values (corrected since version 3.0.7-1) */ if (level->game_version < VERSION_IDENT(3,0,7,1)) @@ -2488,8 +2511,13 @@ void LoadLevelTemplate(int nr) LoadLevelFromFilename_RND(&level_template, filename); #endif +#if 1 + LoadLevel_InitVersion(&level_template, filename); + LoadLevel_InitElements(&level_template, filename); +#else LoadLevel_InitVersion(&level, filename); LoadLevel_InitElements(&level, filename); +#endif ActivateLevelTemplate(); } @@ -3597,6 +3625,8 @@ void DumpTape(struct TapeInfo *tape) printf_line("-", 79); printf("Tape of Level %03d (file version %08d, game version %08d)\n", tape->level_nr, tape->file_version, tape->game_version); + printf(" (effective engine version %08d)\n", + tape->engine_version); printf("Level series identifier: '%s'\n", tape->level_identifier); printf_line("-", 79);