X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=b1e3b4439756a3307269cd94a56b6362775c294c;hb=2f5368f25e34c02cb5ff7a012aa96198442231cb;hp=dd36e29a684e44a29c7252e86830c2da7ea30a82;hpb=cf6b3ab16571c028cdaf955bb4c737798d352486;p=rocksndiamonds.git diff --git a/src/libgame/setup.c b/src/libgame/setup.c index dd36e29a..b1e3b443 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -108,23 +108,6 @@ static char *getUserLevelDir(char *level_subdir) return userlevel_dir; } -static char *getTapeDir(char *level_subdir) -{ - static char *tape_dir = NULL; - char *data_dir = getUserDataDir(); - char *tape_subdir = TAPES_DIRECTORY; - - if (tape_dir) - free(tape_dir); - - if (level_subdir != NULL) - tape_dir = getPath3(data_dir, tape_subdir, level_subdir); - else - tape_dir = getPath2(data_dir, tape_subdir); - - return tape_dir; -} - static char *getScoreDir(char *level_subdir) { static char *score_dir = NULL; @@ -180,6 +163,37 @@ static char *getCurrentLevelDir() return getLevelDirFromTreeInfo(leveldir_current); } +static char *getTapeDir(char *level_subdir) +{ + static char *tape_dir = NULL; + char *data_dir = getUserDataDir(); + char *tape_subdir = TAPES_DIRECTORY; + + if (tape_dir) + free(tape_dir); + + if (level_subdir != NULL) + tape_dir = getPath3(data_dir, tape_subdir, level_subdir); + else + tape_dir = getPath2(data_dir, tape_subdir); + + return tape_dir; +} + +static char *getSolutionTapeDir() +{ + static char *tape_dir = NULL; + char *data_dir = getCurrentLevelDir(); + char *tape_subdir = TAPES_DIRECTORY; + + if (tape_dir) + free(tape_dir); + + tape_dir = getPath2(data_dir, tape_subdir); + + return tape_dir; +} + static char *getDefaultGraphicsDir(char *graphics_subdir) { static char *graphics_dir = NULL; @@ -379,6 +393,20 @@ char *getTapeFilename(int nr) return filename; } +char *getSolutionTapeFilename(int nr) +{ + static char *filename = NULL; + char basename[MAX_FILENAME_LEN]; + + if (filename != NULL) + free(filename); + + sprintf(basename, "%03d.%s", nr, TAPEFILE_EXTENSION); + filename = getPath2(getSolutionTapeDir(), basename); + + return filename; +} + char *getScoreFilename(int nr) { static char *filename = NULL; @@ -417,30 +445,58 @@ char *getEditorSetupFilename() return filename; } -char *getDemoAnimInfoFilename() +char *getHelpAnimFilename() { static char *filename = NULL; if (filename != NULL) free(filename); - filename = getPath2(getCurrentLevelDir(), DEMOANIMINFO_FILENAME); + filename = getPath2(getCurrentLevelDir(), HELPANIM_FILENAME); return filename; } -char *getDemoAnimTextFilename() +char *getHelpTextFilename() { static char *filename = NULL; if (filename != NULL) free(filename); - filename = getPath2(getCurrentLevelDir(), DEMOANIMTEXT_FILENAME); + filename = getPath2(getCurrentLevelDir(), HELPTEXT_FILENAME); return filename; } +char *getLevelSetInfoFilename() +{ + static char *filename = NULL; + char *basenames[] = + { + "readme", + "readme.txt", + "README", + "README.txt", + "README.TXT", + + NULL + }; + int i; + + for (i = 0; basenames[i] != NULL; i++) + { + if (filename != NULL) + free(filename); + + filename = getPath2(getCurrentLevelDir(), basenames[i]); + if (fileExists(filename)) + return filename; + } + + return NULL; +} + static char *getCorrectedArtworkBasename(char *basename) { char *basename_corrected = basename; @@ -910,7 +966,7 @@ void dumpTreeInfo(TreeInfo *node, int depth) while (node) { - for (i=0; i<(depth + 1) * 3; i++) + for (i = 0; i < (depth + 1) * 3; i++) printf(" "); #if 1 @@ -956,7 +1012,7 @@ void sortTreeInfo(TreeInfo **node_first, compare_function); /* update the linkage of list elements with the sorted node array */ - for (i=0; inext = sort_array[i + 1]; sort_array[num_nodes - 1]->next = NULL; @@ -1178,9 +1234,13 @@ char *getFormattedSetupEntry(char *token, char *value) int i; static char entry[MAX_LINE_LEN]; + /* if value is an empty string, just return token without value */ + if (*value == '\0') + return token; + /* start with the token and some spaces to format output line */ sprintf(entry, "%s:", token); - for (i=strlen(entry); i