X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=19f536d9f2498e18bdbe9ca11b36211757fb37ba;hb=aacdd16335c68a011fab047272b828792a2a884e;hp=6a9cb746b8b30e05de07b06957190e84f65f1b5a;hpb=5f9fbeb32ecd4c70ed6d6df8809719af619b40c0;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 6a9cb746..19f536d9 100644 --- a/src/files.c +++ b/src/files.c @@ -99,18 +99,26 @@ static void setLevelInfoToDefaults() { int element = EL_CUSTOM_START + i; - level.custom_element[i].use_gfx_element = FALSE; - level.custom_element[i].gfx_element = EL_EMPTY_SPACE; - level.custom_element[i].move_direction = 0; + element_info[element].use_gfx_element = FALSE; + element_info[element].gfx_element = EL_EMPTY_SPACE; + + element_info[element].push_delay_fixed = 2; /* special default */ + element_info[element].push_delay_random = 8; /* special default */ + element_info[element].move_delay_fixed = 0; + element_info[element].move_delay_random = 0; + + element_info[element].move_pattern = MV_ALL_DIRECTIONS; + element_info[element].move_direction_initial = MV_NO_MOVING; + element_info[element].move_stepsize = TILEX / 8; for(x=0; x<3; x++) for(y=0; y<3; y++) - level.custom_element[i].content[x][y] = EL_EMPTY_SPACE; + element_info[element].content[x][y] = EL_EMPTY_SPACE; - level.custom_element[i].change.events = CE_BITMASK_DEFAULT; - level.custom_element[i].change.delay_fixed = 0; - level.custom_element[i].change.delay_random = 0; - level.custom_element[i].change.successor = EL_EMPTY_SPACE; + element_info[element].change.events = CE_BITMASK_DEFAULT; + element_info[element].change.delay_fixed = 0; + element_info[element].change.delay_random = 0; + element_info[element].change.successor = EL_EMPTY_SPACE; /* start with no properties at all */ for (j=0; j < NUM_EP_BITFIELDS; j++) @@ -378,10 +386,9 @@ static int LoadLevel_CUS2(FILE *file, int chunk_size, struct LevelInfo *level) { int element = getFile16BitBE(file); int custom_element_successor = getFile16BitBE(file); - int i = element - EL_CUSTOM_START; if (IS_CUSTOM_ELEMENT(element)) - level->custom_element[i].change.successor = custom_element_successor; + element_info[element].change.successor = custom_element_successor; else Error(ERR_WARN, "invalid custom element number %d", element); } @@ -771,12 +778,12 @@ static void SaveLevel_CUS2(FILE *file, struct LevelInfo *level, { int element = EL_CUSTOM_START + i; - if (level->custom_element[i].change.successor != EL_EMPTY_SPACE) + if (element_info[element].change.successor != EL_EMPTY_SPACE) { if (check < num_changed_custom_elements) { putFile16BitBE(file, element); - putFile16BitBE(file, level->custom_element[i].change.successor); + putFile16BitBE(file, element_info[element].change.successor); } check++; @@ -836,7 +843,7 @@ void SaveLevel(int level_nr) /* check for non-standard custom elements and calculate "CUS2" chunk size */ for (i=0; i < NUM_CUSTOM_ELEMENTS; i++) - if (level.custom_element[i].change.successor != EL_EMPTY_SPACE) + if (element_info[EL_CUSTOM_START + i].change.successor != EL_EMPTY_SPACE) num_changed_custom_elements2++; putFileChunkBE(file, "RND1", CHUNK_SIZE_UNDEFINED); @@ -887,7 +894,7 @@ void SaveLevel(int level_nr) void DumpLevel(struct LevelInfo *level) { printf_line("-", 79); - printf("Level xxx (file version %06d, game version %06d)\n", + printf("Level xxx (file version %08d, game version %08d)\n", level->file_version, level->game_version); printf_line("-", 79); @@ -1207,6 +1214,10 @@ void LoadTapeFromFilename(char *filename) fclose(file); tape.length_seconds = GetTapeLength(); + +#if 0 + printf("tape version: %d\n", tape.game_version); +#endif } void LoadTape(int level_nr) @@ -1344,7 +1355,7 @@ void DumpTape(struct TapeInfo *tape) } printf_line("-", 79); - printf("Tape of Level %03d (file version %06d, game version %06d)\n", + printf("Tape of Level %03d (file version %08d, game version %08d)\n", tape->level_nr, tape->file_version, tape->game_version); printf("Level series identifier: '%s'\n", tape->level_identifier); printf_line("-", 79); @@ -1928,16 +1939,19 @@ void LoadSpecialMenuDesignSettings() if ((setup_file_hash = loadSetupFileHash(filename)) == NULL) return; - /* special case: initialize with default values that may be overwrittem */ + /* special case: initialize with default values that may be overwritten */ for (i=0; i < NUM_SPECIAL_GFX_ARGS; i++) { char *value_x = getHashEntry(setup_file_hash, "menu.draw_xoffset"); char *value_y = getHashEntry(setup_file_hash, "menu.draw_yoffset"); + char *list_size = getHashEntry(setup_file_hash, "menu.list_size"); if (value_x != NULL) menu.draw_xoffset[i] = get_integer_from_string(value_x); if (value_y != NULL) menu.draw_yoffset[i] = get_integer_from_string(value_y); + if (list_size != NULL) + menu.list_size[i] = get_integer_from_string(list_size); } /* read (and overwrite with) values that may be specified in config file */