/* default: only one element in group */
element_info[element].group->num_elements = 1;
+
+ element_info[element].group->choice_mode = ANIM_RANDOM;
}
}
static int getFileTypeFromBasename(char *basename)
{
- char *filename = getLevelFilenameFromBasename(basename);
+ static char *filename = NULL;
struct stat file_status;
/* ---------- try to determine file type from filename ---------- */
/* ---------- try to determine file type from filesize ---------- */
+ checked_free(filename);
+ filename = getPath2(getCurrentLevelDir(), basename);
+
if (stat(filename, &file_status) == 0)
{
/* check for typical filesize of a Supaplex level package file */
static char *getSingleLevelBasename(int nr, int type)
{
static char basename[MAX_FILENAME_LEN];
+ char *level_filename = getStringCopy(leveldir_current->level_filename);
- if (leveldir_current->level_filename == NULL)
- leveldir_current->level_filename =
- getStringCat2("%03d.", LEVELFILE_EXTENSION);
+ if (level_filename == NULL)
+ level_filename = getStringCat2("%03d.", LEVELFILE_EXTENSION);
switch (type)
{
case LEVEL_FILE_TYPE_UNKNOWN:
default:
- sprintf(basename, leveldir_current->level_filename, nr);
+ sprintf(basename, level_filename, nr);
break;
}
+ free(level_filename);
+
return basename;
}
ei->use_gfx_element = getFile8Bit(file);
ei->gfx_element = getMappedElement(getFile16BitBE(file));
+ group->choice_mode = getFile8Bit(file);
+
/* some free bytes for future values and padding */
- ReadUnusedBytesFromFile(file, 4);
+ ReadUnusedBytesFromFile(file, 3);
for (i = 0; i < MAX_ELEMENTS_IN_GROUP; i++)
group->element[i] = getMappedElement(getFile16BitBE(file));
putFile8Bit(file, ei->use_gfx_element);
putFile16BitBE(file, ei->gfx_element);
+ putFile8Bit(file, group->choice_mode);
+
/* some free bytes for future values and padding */
- WriteUnusedBytesToFile(file, 4);
+ WriteUnusedBytesToFile(file, 3);
for (i = 0; i < MAX_ELEMENTS_IN_GROUP; i++)
putFile16BitBE(file, group->element[i]);