static char *getDefaultArtworkSet(int type)
{
- return (type == TREE_TYPE_GRAPHICS_DIR ? GRAPHICS_SUBDIR :
- type == TREE_TYPE_SOUNDS_DIR ? SOUNDS_SUBDIR :
- type == TREE_TYPE_MUSIC_DIR ? MUSIC_SUBDIR : "");
+ return (type == TREE_TYPE_GRAPHICS_DIR ? GFX_CLASSIC_SUBDIR :
+ type == TREE_TYPE_SOUNDS_DIR ? SND_CLASSIC_SUBDIR :
+ type == TREE_TYPE_MUSIC_DIR ? MUS_CLASSIC_SUBDIR : "");
}
static char *getDefaultArtworkDir(int type)
{
return (type == TREE_TYPE_GRAPHICS_DIR ?
- getDefaultGraphicsDir(GRAPHICS_SUBDIR) :
+ getDefaultGraphicsDir(GFX_CLASSIC_SUBDIR) :
type == TREE_TYPE_SOUNDS_DIR ?
- getDefaultSoundsDir(SOUNDS_SUBDIR) :
+ getDefaultSoundsDir(SND_CLASSIC_SUBDIR) :
type == TREE_TYPE_MUSIC_DIR ?
- getDefaultMusicDir(MUSIC_SUBDIR) : "");
+ getDefaultMusicDir(MUS_CLASSIC_SUBDIR) : "");
}
static char *getUserGraphicsDir()
return artwork_dir;
}
-void setLevelArtworkDir(TreeInfo *ti)
+char *setLevelArtworkDir(TreeInfo *ti)
{
char **artwork_path_ptr, **artwork_set_ptr;
TreeInfo *level_artwork;
- TreeInfo *tst1 = getTreeInfoFromIdentifier(leveldir_first, "jue1");
- printf("::: XXX 0.1 '%s'\n", tst1->graphics_path);
-
if (ti == NULL || leveldir_current == NULL)
- return;
+ return NULL;
artwork_path_ptr = &(LEVELDIR_ARTWORK_PATH(leveldir_current, ti->type));
artwork_set_ptr = &(LEVELDIR_ARTWORK_SET( leveldir_current, ti->type));
- printf("::: ['%s', '%s']\n", tst1->identifier, leveldir_current->identifier);
-
- printf("::: XXX 0.2 '%s' [%x]\n", tst1->graphics_path, tst1->graphics_path);
-
-#if 1
if (*artwork_path_ptr != NULL)
- {
- if (ti->type == 0)
- printf("::: free'ing '%s' [%x] [%x] [type %d] ...\n",
- *artwork_path_ptr, *artwork_path_ptr,
- leveldir_current->graphics_path, ti->type);
-
free(*artwork_path_ptr);
- }
-#endif
-
- printf("::: XXX 0.3 '%s' [%x]\n", tst1->graphics_path, tst1->graphics_path);
if ((level_artwork = getTreeInfoFromIdentifier(ti, *artwork_set_ptr)))
- {
*artwork_path_ptr = getStringCopy(getSetupArtworkDir(level_artwork));
-
- printf(":1: setting to '%s' [type %d] ...\n", *artwork_path_ptr, ti->type);
- }
else
{
/* No (or non-existing) artwork configured in "levelinfo.conf". This would
{
*artwork_path_ptr = getStringCopy(getDefaultArtworkDir(ti->type));
*artwork_set_ptr = getStringCopy(getDefaultArtworkSet(ti->type));
-
- if (ti->type == 0)
- printf(":2: setting to '%s' [type %d] ...\n",
- *artwork_path_ptr, ti->type);
}
else
{
*artwork_path_ptr = getStringCopy(UNDEFINED_FILENAME);
*artwork_set_ptr = NULL;
-
- if (ti->type == 0)
- printf(":3: setting to '%s' [type %d] ...\n",
- *artwork_path_ptr, ti->type);
}
free(dir);
}
+
+ return *artwork_set_ptr;
}
inline static char *getLevelArtworkSet(int type)
return filename;
}
-static char *getCorrectedImageBasename(char *basename)
+static char *getCorrectedArtworkBasename(char *basename)
{
char *basename_corrected = basename;
/* if corrected filename is still longer than standard MS-DOS filename
size (8 characters + 1 dot + 3 characters file extension), shorten
filename by writing file extension after 8th basename character */
- if (strlen(basename_corrected) > 8+1+3)
+ if (strlen(basename_corrected) > 8 + 1 + 3)
{
static char *msdos_filename = NULL;
free(msdos_filename);
msdos_filename = getStringCopy(basename_corrected);
- strncpy(&msdos_filename[8], &basename[strlen(basename) - 1+3], 1+3 + 1);
+ strncpy(&msdos_filename[8], &basename[strlen(basename) - (1+3)], 1+3 +1);
+
+ basename_corrected = msdos_filename;
}
}
#endif
if (filename != NULL)
free(filename);
- basename = getCorrectedImageBasename(basename);
+ basename = getCorrectedArtworkBasename(basename);
if (!setup.override_level_graphics)
{
}
/* 4th try: look for default artwork in new default artwork directory */
- filename = getPath2(getDefaultGraphicsDir(GRAPHICS_SUBDIR), basename);
+ filename = getPath2(getDefaultGraphicsDir(GFX_CLASSIC_SUBDIR), basename);
if (fileExists(filename))
return filename;
if (filename != NULL)
free(filename);
+ basename = getCorrectedArtworkBasename(basename);
+
if (!setup.override_level_sounds)
{
/* 1st try: look for special artwork in current level series directory */
}
/* 4th try: look for default artwork in new default artwork directory */
- filename = getPath2(getDefaultSoundsDir(SOUNDS_SUBDIR), basename);
+ filename = getPath2(getDefaultSoundsDir(SND_CLASSIC_SUBDIR), basename);
if (fileExists(filename))
return filename;
}
/* 4th try: look for default artwork in new default artwork directory */
- directory = getStringCopy(getDefaultMusicDir(MUSIC_SUBDIR));
+ directory = getStringCopy(getDefaultMusicDir(MUS_CLASSIC_SUBDIR));
if (fileExists(directory))
return directory;
for (i=0; i<(depth + 1) * 3; i++)
printf(" ");
+#if 1
+ printf("filename == '%s' ['%s', '%s'] [%d])\n",
+ node->filename, node->fullpath, node->basepath, node->user_defined);
+#else
printf("filename == '%s' (%s) [%s] (%d)\n",
node->filename, node->name, node->identifier, node->sort_priority);
+#endif
if (node->node_group != NULL)
dumpTreeInfo(node->node_group, depth + 1);
#endif
}
+static void freeTreeInfo(TreeInfo *ldi)
+{
+ if (ldi->filename)
+ free(ldi->filename);
+ if (ldi->fullpath)
+ free(ldi->fullpath);
+ if (ldi->basepath)
+ free(ldi->basepath);
+ if (ldi->identifier)
+ free(ldi->identifier);
+
+ if (ldi->name)
+ free(ldi->name);
+ if (ldi->name_sorting)
+ free(ldi->name_sorting);
+ if (ldi->author)
+ free(ldi->author);
+
+ if (ldi->class_desc)
+ free(ldi->class_desc);
+
+ if (ldi->type == TREE_TYPE_LEVEL_DIR)
+ {
+ if (ldi->graphics_set)
+ free(ldi->graphics_set);
+ if (ldi->sounds_set)
+ free(ldi->sounds_set);
+ if (ldi->music_set)
+ free(ldi->music_set);
+
+ if (ldi->graphics_path)
+ free(ldi->graphics_path);
+ if (ldi->sounds_path)
+ free(ldi->sounds_path);
+ if (ldi->music_path)
+ free(ldi->music_path);
+ }
+}
+
void setSetupInfo(struct TokenInfo *token_info,
int token_nr, char *token_value)
{
ti_new->node_parent = node_parent;
ti_new->parent_link = TRUE;
+#if 1
+ setString(&ti_new->identifier, node_parent->identifier);
+ setString(&ti_new->name, ".. (parent directory)");
+ setString(&ti_new->name_sorting, ti_new->name);
+
+ setString(&ti_new->filename, "..");
+ setString(&ti_new->fullpath, node_parent->fullpath);
+
+ ti_new->sort_priority = node_parent->sort_priority;
+
+ setString(&ti_new->class_desc, getLevelClassDescription(ti_new));
+#else
ti_new->identifier = getStringCopy(node_parent->identifier);
ti_new->name = ".. (parent directory)";
ti_new->name_sorting = getStringCopy(ti_new->name);
ti_new->fullpath = getStringCopy(node_parent->fullpath);
ti_new->sort_priority = node_parent->sort_priority;
+
ti_new->class_desc = getLevelClassDescription(ti_new);
+#endif
pushTreeInfo(&node_parent->node_group, ti_new);
}
getHashEntry(setup_file_hash, levelinfo_tokens[i].text));
*leveldir_new = ldi;
+#if 1
+ if (strcmp(leveldir_new->name, ANONYMOUS_NAME) == 0)
+ setString(&leveldir_new->name, leveldir_new->filename);
+#else
if (strcmp(leveldir_new->name, ANONYMOUS_NAME) == 0)
{
free(leveldir_new->name);
leveldir_new->name = getStringCopy(leveldir_new->filename);
}
+#endif
DrawInitText(leveldir_new->name, 150, FC_YELLOW);
if (node_parent == NULL) /* top level group */
{
- leveldir_new->basepath = level_directory;
- leveldir_new->fullpath = leveldir_new->filename;
+ leveldir_new->basepath = getStringCopy(level_directory);
+ leveldir_new->fullpath = getStringCopy(leveldir_new->filename);
}
else /* sub level group */
{
- leveldir_new->basepath = node_parent->basepath;
+ leveldir_new->basepath = getStringCopy(node_parent->basepath);
leveldir_new->fullpath = getPath2(node_parent->fullpath, directory_name);
}
leveldir_new->last_level =
leveldir_new->first_level + leveldir_new->levels - 1;
+#if 1
+ leveldir_new->user_defined =
+ (strcmp(leveldir_new->basepath, options.level_directory) != 0);
+#else
leveldir_new->user_defined =
(leveldir_new->basepath == options.level_directory ? FALSE : TRUE);
+#endif
leveldir_new->color = LEVELCOLOR(leveldir_new);
+#if 1
+ setString(&leveldir_new->class_desc, getLevelClassDescription(leveldir_new));
+#else
leveldir_new->class_desc = getLevelClassDescription(leveldir_new);
+#endif
leveldir_new->handicap_level = /* set handicap to default value */
(leveldir_new->user_defined ?
LoadLevelInfoFromLevelDir(&leveldir_first, NULL, options.level_directory);
LoadLevelInfoFromLevelDir(&leveldir_first, NULL, getUserLevelDir(NULL));
- {
- TreeInfo *tst1 = getTreeInfoFromIdentifier(leveldir_first, "jue1");
- TreeInfo *tst2 = getTreeInfoFromIdentifier(leveldir_first, "demojue");
- printf("::: ??? 1 '%s' [%x, %x]\n", tst1->graphics_path,
- tst1->graphics_path, tst2->graphics_path);
- }
-
/* before sorting, the first entries will be from the user directory */
leveldir_current = getFirstValidTreeInfoEntry(leveldir_first);
getHashEntry(setup_file_hash, levelinfo_tokens[i].text));
*artwork_new = ldi;
+#if 1
+ if (strcmp(artwork_new->name, ANONYMOUS_NAME) == 0)
+ setString(&artwork_new->name, artwork_new->filename);
+#else
if (strcmp(artwork_new->name, ANONYMOUS_NAME) == 0)
{
free(artwork_new->name);
artwork_new->name = getStringCopy(artwork_new->filename);
}
+#endif
#if 0
DrawInitText(artwork_new->name, 150, FC_YELLOW);
artwork_new->fullpath = getPath2(node_parent->fullpath, directory_name);
}
+#if 1
+ artwork_new->user_defined =
+ (strcmp(artwork_new->basepath, OPTIONS_ARTWORK_DIRECTORY(type)) != 0);
+#else
artwork_new->user_defined =
(artwork_new->basepath == OPTIONS_ARTWORK_DIRECTORY(type) ? FALSE : TRUE);
+#endif
/* (may use ".sort_priority" from "setup_file_hash" above) */
artwork_new->color = ARTWORKCOLOR(artwork_new);
+#if 1
+ setString(&artwork_new->class_desc, getLevelClassDescription(artwork_new));
+#else
artwork_new->class_desc = getLevelClassDescription(artwork_new);
+#endif
if (setup_file_hash == NULL) /* (after determining ".user_defined") */
{
+#if 0
if (artwork_new->name != NULL)
+ {
free(artwork_new->name);
+ artwork_new->name = NULL;
+ }
+#endif
+
+#if 0
+ if (artwork_new->identifier != NULL)
+ {
+ free(artwork_new->identifier);
+ artwork_new->identifier = NULL;
+ }
+#endif
if (strcmp(artwork_new->filename, ".") == 0)
{
if (artwork_new->user_defined)
{
+#if 1
+ setString(&artwork_new->identifier, "private");
+#else
artwork_new->identifier = getStringCopy("private");
+#endif
artwork_new->sort_priority = ARTWORKCLASS_USER;
}
else
{
+#if 1
+ setString(&artwork_new->identifier, "classic");
+#else
artwork_new->identifier = getStringCopy("classic");
+#endif
artwork_new->sort_priority = ARTWORKCLASS_CLASSICS;
}
/* set to new values after changing ".sort_priority" */
artwork_new->color = ARTWORKCOLOR(artwork_new);
+#if 1
+ setString(&artwork_new->class_desc,
+ getLevelClassDescription(artwork_new));
+#else
artwork_new->class_desc = getLevelClassDescription(artwork_new);
+#endif
}
else
{
+#if 1
+ setString(&artwork_new->identifier, artwork_new->filename);
+#else
artwork_new->identifier = getStringCopy(artwork_new->filename);
+#endif
}
+#if 1
+ setString(&artwork_new->name, artwork_new->identifier);
+ setString(&artwork_new->name_sorting, artwork_new->name);
+#else
artwork_new->name = getStringCopy(artwork_new->identifier);
artwork_new->name_sorting = getStringCopy(artwork_new->name);
+#endif
}
DrawInitText(artwork_new->name, 150, FC_YELLOW);
setTreeInfoToDefaults(artwork_new, type);
+#if 1
+ setString(&artwork_new->filename, UNDEFINED_FILENAME);
+ setString(&artwork_new->fullpath, UNDEFINED_FILENAME);
+ setString(&artwork_new->basepath, UNDEFINED_FILENAME);
+
+ setString(&artwork_new->identifier, UNDEFINED_FILENAME);
+ setString(&artwork_new->name, UNDEFINED_FILENAME);
+ setString(&artwork_new->name_sorting, UNDEFINED_FILENAME);
+#else
artwork_new->filename = getStringCopy(UNDEFINED_FILENAME);
artwork_new->fullpath = getStringCopy(UNDEFINED_FILENAME);
artwork_new->basepath = getStringCopy(UNDEFINED_FILENAME);
artwork_new->identifier = getStringCopy(UNDEFINED_FILENAME);
artwork_new->name = getStringCopy(UNDEFINED_FILENAME);
artwork_new->name_sorting = getStringCopy(UNDEFINED_FILENAME);
+#endif
return artwork_new;
}
getTreeInfoFromIdentifier(artwork.gfx_first, setup.graphics_set);
if (artwork.gfx_current == NULL)
artwork.gfx_current =
- getTreeInfoFromIdentifier(artwork.gfx_first, GRAPHICS_SUBDIR);
+ getTreeInfoFromIdentifier(artwork.gfx_first, GFX_CLASSIC_SUBDIR);
if (artwork.gfx_current == NULL)
artwork.gfx_current = getFirstValidTreeInfoEntry(artwork.gfx_first);
getTreeInfoFromIdentifier(artwork.snd_first, setup.sounds_set);
if (artwork.snd_current == NULL)
artwork.snd_current =
- getTreeInfoFromIdentifier(artwork.snd_first, SOUNDS_SUBDIR);
+ getTreeInfoFromIdentifier(artwork.snd_first, SND_CLASSIC_SUBDIR);
if (artwork.snd_current == NULL)
artwork.snd_current = getFirstValidTreeInfoEntry(artwork.snd_first);
getTreeInfoFromIdentifier(artwork.mus_first, setup.music_set);
if (artwork.mus_current == NULL)
artwork.mus_current =
- getTreeInfoFromIdentifier(artwork.mus_first, MUSIC_SUBDIR);
+ getTreeInfoFromIdentifier(artwork.mus_first, MUS_CLASSIC_SUBDIR);
if (artwork.mus_current == NULL)
artwork.mus_current = getFirstValidTreeInfoEntry(artwork.mus_first);
getTreeInfoFromIdentifier(artwork.gfx_first, setup.graphics_set);
if (artwork.gfx_current == NULL)
artwork.gfx_current =
- getTreeInfoFromIdentifier(artwork.gfx_first, GRAPHICS_SUBDIR);
+ getTreeInfoFromIdentifier(artwork.gfx_first, GFX_CLASSIC_SUBDIR);
if (artwork.gfx_current == NULL)
artwork.gfx_current = getFirstValidTreeInfoEntry(artwork.gfx_first);
}
getTreeInfoFromIdentifier(artwork.snd_first, setup.sounds_set);
if (artwork.snd_current == NULL)
artwork.snd_current =
- getTreeInfoFromIdentifier(artwork.snd_first, SOUNDS_SUBDIR);
+ getTreeInfoFromIdentifier(artwork.snd_first, SND_CLASSIC_SUBDIR);
if (artwork.snd_current == NULL)
artwork.snd_current = getFirstValidTreeInfoEntry(artwork.snd_first);
}
getTreeInfoFromIdentifier(artwork.mus_first, setup.music_set);
if (artwork.mus_current == NULL)
artwork.mus_current =
- getTreeInfoFromIdentifier(artwork.mus_first, MUSIC_SUBDIR);
+ getTreeInfoFromIdentifier(artwork.mus_first, MUS_CLASSIC_SUBDIR);
if (artwork.mus_current == NULL)
artwork.mus_current = getFirstValidTreeInfoEntry(artwork.mus_first);
}
static void SaveUserLevelInfo()
{
+ LevelDirTree *level_info;
char *filename;
FILE *file;
int i;
return;
}
+ level_info = newTreeInfo();
+
/* always start with reliable default values */
- setTreeInfoToDefaults(&ldi, TREE_TYPE_LEVEL_DIR);
+ setTreeInfoToDefaults(level_info, TREE_TYPE_LEVEL_DIR);
-#if 0
- /* !!! FIX ME !!! */
- setString(&ldi.name, getLoginName());
- setString(&ldi.author, getRealName());
- ldi.levels = 100;
- ldi.first_level = 1;
- ldi.sort_priority = LEVELCLASS_USER_START;
- ldi.readonly = FALSE;
- setString(&ldi.graphics_set, GRAPHICS_SUBDIR);
- setString(&ldi.sounds_set, SOUNDS_SUBDIR);
- setString(&ldi.music_set, MUSIC_SUBDIR);
+#if 1
+ setString(&level_info->name, getLoginName());
+ setString(&level_info->author, getRealName());
+ level_info->levels = 100;
+ level_info->first_level = 1;
+ level_info->sort_priority = LEVELCLASS_USER_START;
+ level_info->readonly = FALSE;
+ setString(&level_info->graphics_set, GFX_CLASSIC_SUBDIR);
+ setString(&level_info->sounds_set, SND_CLASSIC_SUBDIR);
+ setString(&level_info->music_set, MUS_CLASSIC_SUBDIR);
#else
ldi.name = getStringCopy(getLoginName());
ldi.author = getStringCopy(getRealName());
ldi.first_level = 1;
ldi.sort_priority = LEVELCLASS_USER_START;
ldi.readonly = FALSE;
- ldi.graphics_set = getStringCopy(GRAPHICS_SUBDIR);
- ldi.sounds_set = getStringCopy(SOUNDS_SUBDIR);
- ldi.music_set = getStringCopy(MUSIC_SUBDIR);
+ ldi.graphics_set = getStringCopy(GFX_CLASSIC_SUBDIR);
+ ldi.sounds_set = getStringCopy(SND_CLASSIC_SUBDIR);
+ ldi.music_set = getStringCopy(MUS_CLASSIC_SUBDIR);
#endif
fprintf(file, "%s\n\n", getFormattedSetupEntry(TOKEN_STR_FILE_IDENTIFIER,
getCookie("LEVELINFO")));
+ ldi = *level_info;
for (i=0; i<NUM_LEVELINFO_TOKENS; i++)
if (i != LEVELINFO_TOKEN_IDENTIFIER &&
i != LEVELINFO_TOKEN_NAME_SORTING &&
fprintf(file, "%s\n", getSetupLine(levelinfo_tokens, "", i));
fclose(file);
- free(filename);
SetFilePermissions(filename, PERMS_PRIVATE);
+
+ freeTreeInfo(level_info);
+ free(filename);
}
char *getSetupValue(int type, void *value)
level_subdir));
fclose(file);
- free(filename);
SetFilePermissions(filename, PERMS_PRIVATE);
+
+ free(filename);
}
static void checkSeriesInfo()
handicap_level_str));
fclose(file);
- free(filename);
SetFilePermissions(filename, PERMS_PRIVATE);
+
+ free(filename);
}