X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=e9f2848699502377b2693522e834dc19c9cefc09;hp=de23a94035ee2ef5da704d97a06e53ec43f21b8a;hb=b7fe72dcb4068a6d989231654382bd457209509c;hpb=2fab4d4c183c2ac47cef52a09b45ed6a83ad31cb diff --git a/src/libgame/setup.c b/src/libgame/setup.c index de23a940..e9f28486 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -167,6 +167,16 @@ static char *getCacheDir() return cache_dir; } +static char *getNetworkDir() +{ + static char *network_dir = NULL; + + if (network_dir == NULL) + network_dir = getPath2(getUserGameDataDir(), NETWORK_DIRECTORY); + + return network_dir; +} + static char *getLevelDirFromTreeInfo(TreeInfo *node) { static char *level_dir = NULL; @@ -198,6 +208,22 @@ char *getUserLevelDir(char *level_subdir) return userlevel_dir; } +char *getNetworkLevelDir(char *level_subdir) +{ + static char *network_level_dir = NULL; + char *data_dir = getNetworkDir(); + char *networklevel_subdir = LEVELS_DIRECTORY; + + checked_free(network_level_dir); + + if (level_subdir != NULL) + network_level_dir = getPath3(data_dir, networklevel_subdir, level_subdir); + else + network_level_dir = getPath2(data_dir, networklevel_subdir); + + return network_level_dir; +} + char *getCurrentLevelDir() { return getLevelDirFromTreeInfo(leveldir_current); @@ -543,7 +569,9 @@ char *getScoreFilename(int nr) checked_free(filename); sprintf(basename, "%03d.%s", nr, SCOREFILE_EXTENSION); - filename = getPath2(getScoreDir(leveldir_current->subdir), basename); + + /* used instead of "leveldir_current->subdir" (for network games) */ + filename = getPath2(getScoreDir(levelset.identifier), basename); return filename; } @@ -1049,6 +1077,17 @@ void InitUserLevelDirectory(char *level_subdir) } } +void InitNetworkLevelDirectory(char *level_subdir) +{ + if (!directoryExists(getNetworkLevelDir(level_subdir))) + { + createDirectory(getUserGameDataDir(), "user data", PERMS_PRIVATE); + createDirectory(getNetworkDir(), "network data", PERMS_PRIVATE); + createDirectory(getNetworkLevelDir(NULL), "main network level", PERMS_PRIVATE); + createDirectory(getNetworkLevelDir(level_subdir), "network level", PERMS_PRIVATE); + } +} + void InitLevelSetupDirectory(char *level_subdir) { createDirectory(getUserGameDataDir(), "user data", PERMS_PRIVATE);