X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=9ea1754932adb1371c9d994aca8e8af497411e3a;hb=7a8e465114815815796c2ebbe5f2e018a9265a3f;hp=129be747af2f74255697c6e5d804fca741543160;hpb=94045da2221fcef6b3c1cc12db1eaf3ae35c73b7;p=rocksndiamonds.git diff --git a/src/libgame/setup.c b/src/libgame/setup.c index 129be747..9ea17549 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -140,6 +140,19 @@ static char *getScoreCacheDir(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 }; @@ -673,10 +686,10 @@ char *getScoreTapeFilename(char *basename_no_ext, int nr) checked_free(filename); - sprintf(basename, "%03d.%s.%s", nr, basename_no_ext, TAPEFILE_EXTENSION); + sprintf(basename, "%s.%s", basename_no_ext, TAPEFILE_EXTENSION); // used instead of "leveldir_current->subdir" (for network games) - filename = getPath2(getScoreDir(levelset.identifier), basename); + filename = getPath2(getScoreTapeDir(levelset.identifier, nr), basename); return filename; } @@ -1142,11 +1155,44 @@ char *getCustomMusicDirectory(void) return NULL; // cannot find specified artwork file anywhere } +void MarkTapeDirectoryUploadsAsComplete(char *level_subdir) +{ + char *filename = getPath2(getTapeDir(level_subdir), UPLOADED_FILENAME); + + touchFile(filename); + + checked_free(filename); +} + +void MarkTapeDirectoryUploadsAsIncomplete(char *level_subdir) +{ + char *filename = getPath2(getTapeDir(level_subdir), UPLOADED_FILENAME); + + unlink(filename); + + checked_free(filename); +} + +boolean CheckTapeDirectoryUploadsComplete(char *level_subdir) +{ + char *filename = getPath2(getTapeDir(level_subdir), UPLOADED_FILENAME); + boolean success = fileExists(filename); + + checked_free(filename); + + return success; +} + void InitTapeDirectory(char *level_subdir) { + boolean new_tape_dir = !directoryExists(getTapeDir(level_subdir)); + createDirectory(getUserGameDataDir(), "user data", PERMS_PRIVATE); createDirectory(getTapeDir(NULL), "main tape", PERMS_PRIVATE); createDirectory(getTapeDir(level_subdir), "level tape", PERMS_PRIVATE); + + if (new_tape_dir) + MarkTapeDirectoryUploadsAsComplete(level_subdir); } void InitScoreDirectory(char *level_subdir) @@ -1164,6 +1210,13 @@ void InitScoreCacheDirectory(char *level_subdir) createDirectory(getScoreCacheDir(level_subdir), "level score", PERMS_PRIVATE); } +void InitScoreTapeDirectory(char *level_subdir, int nr) +{ + InitScoreDirectory(level_subdir); + + createDirectory(getScoreTapeDir(level_subdir, nr), "score tape", PERMS_PRIVATE); +} + static void SaveUserLevelInfo(void); void InitUserLevelDirectory(char *level_subdir)