X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=1321fe9cc7be00bc3511c13887a56af1a331aef4;hb=f857fec3082c785b0dd271b6ad1b7642a2ed4e65;hp=87c4204f67cf7d573db4ebfb726e1338dc1f5a83;hpb=6945f3749927053ee70b47133b2998557a452f75;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 87c4204f..1321fe9c 100644 --- a/src/files.c +++ b/src/files.c @@ -45,7 +45,7 @@ static void setLevelInfoToDefaults() { - int i, x, y; + int i, j, x, y; level.file_version = FILE_VERSION_ACTUAL; level.game_version = GAME_VERSION_ACTUAL; @@ -98,7 +98,14 @@ static void setLevelInfoToDefaults() for (i=0; i < NUM_CUSTOM_ELEMENTS; i++) { level.custom_element_successor[i] = EL_EMPTY_SPACE; + + /* start with no properties at all */ +#if 1 + for (j=0; j < NUM_EP_BITFIELDS; j++) + Properties[EL_CUSTOM_START + i][j] = EP_BITMASK_DEFAULT; +#else Properties[EL_CUSTOM_START + i][EP_BITFIELD_BASE] = EP_BITMASK_DEFAULT; +#endif } BorderElement = EL_STEELWALL; @@ -1900,47 +1907,38 @@ void LoadSpecialMenuDesignSettings() { char *filename = getCustomArtworkConfigFilename(ARTWORK_TYPE_GRAPHICS); SetupFileHash *setup_file_hash; - char *value; + int i, j; - /* !!! CHANGE THIS !!! (redundant initialization) !!! */ - global.num_toons = 20; - global.menu_draw_xoffset = 0; - global.menu_draw_yoffset = 0; - global.menu_draw_xoffset_MAIN = 0; - global.menu_draw_yoffset_MAIN = 0; - global.door_step_offset = 2; - global.door_step_delay = 10; + /* always start with reliable default values from default config */ + for (i=0; image_config_vars[i].token != NULL; i++) + for (j=0; image_config[j].token != NULL; j++) + if (strcmp(image_config_vars[i].token, image_config[j].token) == 0) + *image_config_vars[i].value = + get_integer_from_string(image_config[j].value); if ((setup_file_hash = loadSetupFileHash(filename)) == NULL) return; - value = getHashEntry(setup_file_hash, "global.num_toons"); - if (value != NULL) - global.num_toons = get_integer_from_string(value); - - value = getHashEntry(setup_file_hash, "menu.draw_xoffset"); - if (value != NULL) - global.menu_draw_xoffset = get_integer_from_string(value); - - value = getHashEntry(setup_file_hash, "menu.draw_yoffset"); - if (value != NULL) - global.menu_draw_yoffset = get_integer_from_string(value); - - value = getHashEntry(setup_file_hash, "menu.draw_xoffset.MAIN"); - if (value != NULL) - global.menu_draw_xoffset_MAIN = get_integer_from_string(value); + /* special case: initialize with default values that may be overwrittem */ + 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"); - value = getHashEntry(setup_file_hash, "menu.draw_yoffset.MAIN"); - if (value != NULL) - global.menu_draw_yoffset_MAIN = get_integer_from_string(value); + 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); + } - value = getHashEntry(setup_file_hash, "door.step_offset"); - if (value != NULL) - global.door_step_offset = get_integer_from_string(value); + /* read (and overwrite with) values that may be specified in config file */ + for (i=0; image_config_vars[i].token != NULL; i++) + { + char *value = getHashEntry(setup_file_hash, image_config_vars[i].token); - value = getHashEntry(setup_file_hash, "door.step_delay"); - if (value != NULL) - global.door_step_delay = get_integer_from_string(value); + if (value != NULL) + *image_config_vars[i].value = get_integer_from_string(value); + } freeSetupFileHash(setup_file_hash); }