X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=dbfec24dd8202d1a924230408950d822064c0dd6;hb=03e447c3496a66bbe4c9052a8583789b51ac42de;hp=32ae11215a1a87626d9acdac70e99d6ea62cafaf;hpb=3bb225da5092d0741870829d9f8f8642070d29c5;p=rocksndiamonds.git diff --git a/src/libgame/setup.c b/src/libgame/setup.c index 32ae1121..dbfec24d 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -114,6 +114,19 @@ static char *getScoreDir(char *level_subdir) return score_dir; } +static char *getScoreTapeDir(char *level_subdir, int nr) +{ + static char *score_tape_dir = NULL; + char tape_subdir[MAX_FILENAME_LEN]; + + checked_free(score_tape_dir); + + sprintf(tape_subdir, "%03d", nr); + score_tape_dir = getPath2(getScoreDir(level_subdir), tape_subdir); + + return score_tape_dir; +} + static char *getUserSubdir(int nr) { static char user_subdir[16] = { 0 }; @@ -594,6 +607,34 @@ char *getScoreFilename(int nr) return filename; } +char *getScoreTapeBasename(char *name) +{ + static char basename[MAX_FILENAME_LEN]; + char basename_raw[MAX_FILENAME_LEN]; + char timestamp[20]; + + sprintf(timestamp, "%s", getCurrentTimestamp()); + sprintf(basename_raw, "%s-%s", timestamp, name); + sprintf(basename, "%s-%08x", timestamp, get_hash_from_key(basename_raw)); + + return basename; +} + +char *getScoreTapeFilename(char *basename_no_ext, int nr) +{ + static char *filename = NULL; + char basename[MAX_FILENAME_LEN]; + + checked_free(filename); + + sprintf(basename, "%s.%s", basename_no_ext, TAPEFILE_EXTENSION); + + // used instead of "leveldir_current->subdir" (for network games) + filename = getPath2(getScoreTapeDir(levelset.identifier, nr), basename); + + return filename; +} + char *getSetupFilename(void) { static char *filename = NULL; @@ -1075,6 +1116,15 @@ void InitScoreDirectory(char *level_subdir) createDirectory(getScoreDir(level_subdir), "level score", permissions); } +void InitScoreTapeDirectory(char *level_subdir, int nr) +{ + int permissions = (program.global_scores ? PERMS_PUBLIC : PERMS_PRIVATE); + + InitScoreDirectory(level_subdir); + + createDirectory(getScoreTapeDir(level_subdir, nr), "score tape", permissions); +} + static void SaveUserLevelInfo(void); void InitUserLevelDirectory(char *level_subdir)