added functions for accessing score tapes in cache directory (not used yet)
authorHolger Schemel <info@artsoft.org>
Sat, 16 Apr 2022 23:04:36 +0000 (01:04 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 16 Apr 2022 23:05:31 +0000 (01:05 +0200)
src/files.c
src/files.h
src/libgame/setup.c
src/libgame/setup.h

index 6866a4b64ebed84ea96ecebf5e5526fabbd4bd79..044dcbcc5f1110765abde36978323aa5d5de2166 100644 (file)
@@ -8340,6 +8340,13 @@ void LoadScoreTape(char *score_tape_basename, int nr)
   LoadTapeFromFilename(filename);
 }
 
+void LoadScoreCacheTape(char *score_tape_basename, int nr)
+{
+  char *filename = getScoreCacheTapeFilename(score_tape_basename, nr);
+
+  LoadTapeFromFilename(filename);
+}
+
 static boolean checkSaveTape_SCRN(struct TapeInfo *tape)
 {
   // chunk required for team mode tapes with non-default screen size
index 3736666e97b5bada64b9872fcca779477303849c..887a9fdf5e8825c220f3d78fa5dd3c0ca5cc9e81 100644 (file)
@@ -54,6 +54,7 @@ void LoadTapeFromFilename(char *);
 void LoadTape(int);
 void LoadSolutionTape(int);
 void LoadScoreTape(char *, int);
+void LoadScoreCacheTape(char *, int);
 void SaveTapeToFilename(char *);
 void SaveTape(int);
 void SaveScoreTape(int);
index 7e34711afcbb0719f258cf1e2e0384a2b71e8e04..464e91293967c9521a2fa1ca210f4a5889ee2558 100644 (file)
@@ -164,6 +164,19 @@ static char *getScoreTapeDir(char *level_subdir, int nr)
   return score_tape_dir;
 }
 
+static char *getScoreCacheTapeDir(char *level_subdir, int nr)
+{
+  static char *score_cache_tape_dir = NULL;
+  char tape_subdir[MAX_FILENAME_LEN];
+
+  checked_free(score_cache_tape_dir);
+
+  sprintf(tape_subdir, "%03d", nr);
+  score_cache_tape_dir = getPath2(getScoreCacheDir(level_subdir), tape_subdir);
+
+  return score_cache_tape_dir;
+}
+
 static char *getUserSubdir(int nr)
 {
   static char user_subdir[16] = { 0 };
@@ -705,6 +718,21 @@ char *getScoreTapeFilename(char *basename_no_ext, int nr)
   return filename;
 }
 
+char *getScoreCacheTapeFilename(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(getScoreCacheTapeDir(levelset.identifier, nr), basename);
+
+  return filename;
+}
+
 char *getSetupFilename(void)
 {
   static char *filename = NULL;
@@ -1295,6 +1323,13 @@ void InitScoreTapeDirectory(char *level_subdir, int nr)
   createDirectory(getScoreTapeDir(level_subdir, nr), "score tape", PERMS_PRIVATE);
 }
 
+void InitScoreCacheTapeDirectory(char *level_subdir, int nr)
+{
+  InitScoreCacheDirectory(level_subdir);
+
+  createDirectory(getScoreCacheTapeDir(level_subdir, nr), "score tape", PERMS_PRIVATE);
+}
+
 static void SaveUserLevelInfo(void);
 
 void InitUserLevelDirectory(char *level_subdir)
index 573d55b702809129babd428ba3017974875f3753..1e785a956c2f7eeb42ca9fd8999864351b73ca50 100644 (file)
@@ -272,6 +272,7 @@ char *getScoreFilename(int);
 char *getScoreCacheFilename(int);
 char *getScoreTapeBasename(char *);
 char *getScoreTapeFilename(char *, int);
+char *getScoreCacheTapeFilename(char *, int);
 char *getSetupFilename(void);
 char *getDefaultSetupFilename(void);
 char *getEditorSetupFilename(void);
@@ -299,6 +300,7 @@ void InitTapeDirectory(char *);
 void InitScoreDirectory(char *);
 void InitScoreCacheDirectory(char *);
 void InitScoreTapeDirectory(char *, int);
+void InitScoreCacheTapeDirectory(char *, int);
 void InitUserLevelDirectory(char *);
 void InitNetworkLevelDirectory(char *);
 void InitLevelSetupDirectory(char *);