X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=4dac3c11d1c94aea0d67c9a1f63d284e85629607;hb=bcf0b6f2f2fbcb33be313cbfffeabe64b1aa58d0;hp=ef7fa51f4792121c18f8290f180e698e75eacc57;hpb=5e616edfe5f101927d2ff3f7a14d2c65897de3cc;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index ef7fa51f..4dac3c11 100644 --- a/src/files.c +++ b/src/files.c @@ -34,8 +34,6 @@ #define LEVEL_CHUNK_CNT3_UNUSED 10 /* unused CNT3 chunk bytes */ #define LEVEL_CPART_CUS3_SIZE 134 /* size of CUS3 chunk part */ #define LEVEL_CPART_CUS3_UNUSED 15 /* unused CUS3 bytes / part */ -#define LEVEL_CPART_CUS4_SIZE ??? /* size of CUS4 chunk part */ -#define LEVEL_CPART_CUS4_UNUSED ??? /* unused CUS4 bytes / part */ #define TAPE_HEADER_SIZE 20 /* size of tape file header */ #define TAPE_HEADER_UNUSED 3 /* unused tape header bytes */ @@ -80,7 +78,7 @@ void setElementChangeInfoToDefaults(struct ElementChangeInfo *change) change->delay_fixed = 0; change->delay_random = 0; - change->delay_frames = -1; /* later set to reliable default value */ + change->delay_frames = 1; change->trigger_element = EL_EMPTY_SPACE; @@ -88,7 +86,7 @@ void setElementChangeInfoToDefaults(struct ElementChangeInfo *change) change->use_content = FALSE; change->only_complete = FALSE; change->use_random_change = FALSE; - change->random = 0; + change->random = 100; change->power = CP_NON_DESTRUCTIVE; for(x=0; x<3; x++) @@ -782,8 +780,13 @@ static int LoadLevel_CUS4(FILE *file, int chunk_size, struct LevelInfo *level) change->can_change = getFile8Bit(file); + change->sides = getFile8Bit(file); + + if (change->sides == CH_SIDE_NONE) /* correct empty sides field */ + change->sides = CH_SIDE_ANY; + /* some free bytes for future change property values and padding */ - ReadUnusedBytesFromFile(file, 9); + ReadUnusedBytesFromFile(file, 8); } /* mark this custom element as modified */ @@ -1649,8 +1652,10 @@ static void SaveLevel_CUS4(FILE *file, struct LevelInfo *level, int element) putFile8Bit(file, change->can_change); + putFile8Bit(file, change->sides); + /* some free bytes for future change property values and padding */ - WriteUnusedBytesToFile(file, 9); + WriteUnusedBytesToFile(file, 8); } } @@ -2811,20 +2816,6 @@ void LoadCustomElementDescriptions() freeSetupFileHash(setup_file_hash); } -static int get_special_integer_from_string(char *string_raw) -{ - char *string = getStringToLower(string_raw); - int value = (strcmp(string, "none") == 0 ? 0 : - strcmp(string, "short") == 0 ? 1 : - strcmp(string, "full") == 0 ? 2 : - strcmp(string, "default") == 0 ? 0 : - strcmp(string, "curtain") == 0 ? 1 : -1); - - free(string); - - return value; -} - void LoadSpecialMenuDesignSettings() { char *filename = getCustomArtworkConfigFilename(ARTWORK_TYPE_GRAPHICS); @@ -2835,15 +2826,9 @@ void LoadSpecialMenuDesignSettings() 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) - { - if (strcmp(image_config_vars[i].token, "game.envelope.anim_mode") == 0 - || strcmp(image_config_vars[i].token, "door.anim_mode") == 0) - *image_config_vars[i].value = - get_special_integer_from_string(image_config[j].value); - else - *image_config_vars[i].value = - get_integer_from_string(image_config[j].value); - } + *image_config_vars[i].value = + get_auto_parameter_value(image_config_vars[i].token, + image_config[j].value); if ((setup_file_hash = loadSetupFileHash(filename)) == NULL) return; @@ -2869,13 +2854,8 @@ void LoadSpecialMenuDesignSettings() char *value = getHashEntry(setup_file_hash, image_config_vars[i].token); if (value != NULL) - { - if (strcmp(image_config_vars[i].token, "game.envelope.anim_mode") == 0 - || strcmp(image_config_vars[i].token, "door.anim_mode") == 0) - *image_config_vars[i].value = get_special_integer_from_string(value); - else - *image_config_vars[i].value = get_integer_from_string(value); - } + *image_config_vars[i].value = + get_auto_parameter_value(image_config_vars[i].token, value); } freeSetupFileHash(setup_file_hash);