#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 */
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;
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++)
level->time_timegate = 10;
level->amoeba_content = EL_DIAMOND;
level->double_speed = FALSE;
- level->gravity = FALSE;
+ level->initial_gravity = FALSE;
level->em_slippery_gems = FALSE;
level->use_custom_template = FALSE;
element_info[element].collect_score = 10; /* special default */
element_info[element].collect_count = 1; /* special default */
- element_info[element].push_delay_fixed = 2; /* special default */
+ element_info[element].push_delay_fixed = 8; /* 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;
level->time_wheel = getFile8Bit(file);
level->amoeba_content = checkLevelElement(getFile8Bit(file));
level->double_speed = (getFile8Bit(file) == 1 ? TRUE : FALSE);
- level->gravity = (getFile8Bit(file) == 1 ? TRUE : FALSE);
+ level->initial_gravity = (getFile8Bit(file) == 1 ? TRUE : FALSE);
level->encoding_16bit_field = (getFile8Bit(file) == 1 ? TRUE : FALSE);
level->em_slippery_gems = (getFile8Bit(file) == 1 ? TRUE : FALSE);
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 */
putFile8Bit(file, (level->encoding_16bit_amoeba ? EL_EMPTY :
level->amoeba_content));
putFile8Bit(file, (level->double_speed ? 1 : 0));
- putFile8Bit(file, (level->gravity ? 1 : 0));
+ putFile8Bit(file, (level->initial_gravity ? 1 : 0));
putFile8Bit(file, (level->encoding_16bit_field ? 1 : 0));
putFile8Bit(file, (level->em_slippery_gems ? 1 : 0));
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);
}
}
printf("\n");
printf("Amoeba Speed: %d\n", level->amoeba_speed);
printf("\n");
- printf("Gravity: %s\n", (level->gravity ? "yes" : "no"));
+ printf("Gravity: %s\n", (level->initial_gravity ? "yes" : "no"));
printf("Double Speed Movement: %s\n", (level->double_speed ? "yes" : "no"));
printf("EM style slippery gems: %s\n", (level->em_slippery_gems ? "yes" : "no"));
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);
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;
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);