X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=8fa4317c3beab9502bfa62ad100d629b6a42469d;hb=5dd3c868d9df906623a5fc0ff2124655a14e3715;hp=905c890ed0761d45229bdc3cf4834bf657a3079f;hpb=8f33ee4940b9c35bf4627b7ef1126d03748da646;p=rocksndiamonds.git diff --git a/src/libgame/setup.c b/src/libgame/setup.c index 905c890e..8fa4317c 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -154,7 +154,7 @@ static char *getLevelDirFromTreeInfo(TreeInfo *node) return level_dir; } -static char *getCurrentLevelDir() +char *getCurrentLevelDir() { return getLevelDirFromTreeInfo(leveldir_current); } @@ -349,23 +349,6 @@ inline static char *getLevelArtworkDir(int type) return LEVELDIR_ARTWORK_PATH(leveldir_current, type); } -char *getLevelFilename(int nr) -{ - static char *filename = NULL; - char basename[MAX_FILENAME_LEN]; - - checked_free(filename); - - if (nr < 0) - sprintf(basename, "template.%s", LEVELFILE_EXTENSION); - else - sprintf(basename, "%03d.%s", nr, LEVELFILE_EXTENSION); - - filename = getPath2(getCurrentLevelDir(), basename); - - return filename; -} - char *getTapeFilename(int nr) { static char *filename = NULL; @@ -374,7 +357,7 @@ char *getTapeFilename(int nr) checked_free(filename); sprintf(basename, "%03d.%s", nr, TAPEFILE_EXTENSION); - filename = getPath2(getTapeDir(leveldir_current->filename), basename); + filename = getPath2(getTapeDir(leveldir_current->subdir), basename); return filename; } @@ -400,7 +383,7 @@ char *getScoreFilename(int nr) checked_free(filename); sprintf(basename, "%03d.%s", nr, SCOREFILE_EXTENSION); - filename = getPath2(getScoreDir(leveldir_current->filename), basename); + filename = getPath2(getScoreDir(leveldir_current->subdir), basename); return filename; } @@ -945,11 +928,11 @@ void dumpTreeInfo(TreeInfo *node, int depth) printf(" "); #if 1 - printf("filename == '%s' ['%s', '%s'] [%d])\n", - node->filename, node->fullpath, node->basepath, node->user_defined); + printf("subdir == '%s' ['%s', '%s'] [%d])\n", + node->subdir, node->fullpath, node->basepath, node->user_defined); #else - printf("filename == '%s' (%s) [%s] (%d)\n", - node->filename, node->name, node->identifier, node->sort_priority); + printf("subdir == '%s' (%s) [%s] (%d)\n", + node->subdir, node->name, node->identifier, node->sort_priority); #endif if (node->node_group != NULL) @@ -1599,8 +1582,10 @@ void checkSetupFileHashIdentifier(SetupFileHash *setup_file_hash, #define LEVELINFO_TOKEN_GRAPHICS_SET 11 #define LEVELINFO_TOKEN_SOUNDS_SET 12 #define LEVELINFO_TOKEN_MUSIC_SET 13 +#define LEVELINFO_TOKEN_FILENAME 14 +#define LEVELINFO_TOKEN_FILETYPE 15 -#define NUM_LEVELINFO_TOKENS 14 +#define NUM_LEVELINFO_TOKENS 16 static LevelDirTree ldi; @@ -1620,7 +1605,9 @@ static struct TokenInfo levelinfo_tokens[] = { TYPE_BOOLEAN, &ldi.readonly, "readonly" }, { TYPE_STRING, &ldi.graphics_set, "graphics_set" }, { TYPE_STRING, &ldi.sounds_set, "sounds_set" }, - { TYPE_STRING, &ldi.music_set, "music_set" } + { TYPE_STRING, &ldi.music_set, "music_set" }, + { TYPE_STRING, &ldi.level_filename, "filename" }, + { TYPE_STRING, &ldi.level_filetype, "filetype" } }; static void setTreeInfoToDefaults(TreeInfo *ldi, int type) @@ -1640,7 +1627,7 @@ static void setTreeInfoToDefaults(TreeInfo *ldi, int type) ldi->cl_first = -1; ldi->cl_cursor = -1; - ldi->filename = NULL; + ldi->subdir = NULL; ldi->fullpath = NULL; ldi->basepath = NULL; ldi->identifier = NULL; @@ -1666,6 +1653,9 @@ static void setTreeInfoToDefaults(TreeInfo *ldi, int type) ldi->sounds_path = getStringCopy(UNDEFINED_FILENAME); ldi->music_path = getStringCopy(UNDEFINED_FILENAME); + ldi->level_filename = NULL; + ldi->level_filetype = NULL; + ldi->levels = 0; ldi->first_level = 0; ldi->last_level = 0; @@ -1699,7 +1689,7 @@ static void setTreeInfoToDefaultsFromParent(TreeInfo *ldi, TreeInfo *parent) ldi->cl_first = -1; ldi->cl_cursor = -1; - ldi->filename = NULL; + ldi->subdir = NULL; ldi->fullpath = NULL; ldi->basepath = NULL; ldi->identifier = NULL; @@ -1725,6 +1715,9 @@ static void setTreeInfoToDefaultsFromParent(TreeInfo *ldi, TreeInfo *parent) ldi->sounds_path = getStringCopy(UNDEFINED_FILENAME); ldi->music_path = getStringCopy(UNDEFINED_FILENAME); + ldi->level_filename = NULL; + ldi->level_filetype = NULL; + ldi->levels = 0; ldi->first_level = 0; ldi->last_level = 0; @@ -1746,7 +1739,7 @@ static void setTreeInfoToDefaultsFromParent(TreeInfo *ldi, TreeInfo *parent) other structure's pointer may point to them! */ - ldi->filename = NULL; + ldi->subdir = NULL; ldi->fullpath = NULL; ldi->basepath = NULL; ldi->identifier = NULL; @@ -1777,7 +1770,7 @@ static void setTreeInfoToDefaultsFromParent(TreeInfo *ldi, TreeInfo *parent) static void freeTreeInfo(TreeInfo *ldi) { - checked_free(ldi->filename); + checked_free(ldi->subdir); checked_free(ldi->fullpath); checked_free(ldi->basepath); checked_free(ldi->identifier); @@ -1895,7 +1888,7 @@ static void createParentTreeInfoNode(TreeInfo *node_parent) setString(&ti_new->name, ".. (parent directory)"); setString(&ti_new->name_sorting, ti_new->name); - setString(&ti_new->filename, ".."); + setString(&ti_new->subdir, ".."); setString(&ti_new->fullpath, node_parent->fullpath); ti_new->sort_priority = node_parent->sort_priority; @@ -1907,7 +1900,7 @@ static void createParentTreeInfoNode(TreeInfo *node_parent) ti_new->name = ".. (parent directory)"; ti_new->name_sorting = getStringCopy(ti_new->name); - ti_new->filename = ".."; + ti_new->subdir = ".."; ti_new->fullpath = getStringCopy(node_parent->fullpath); ti_new->sort_priority = node_parent->sort_priority; @@ -1950,7 +1943,7 @@ static boolean LoadLevelInfoFromLevelConf(TreeInfo **node_first, else setTreeInfoToDefaults(leveldir_new, TREE_TYPE_LEVEL_DIR); - leveldir_new->filename = getStringCopy(directory_name); + leveldir_new->subdir = getStringCopy(directory_name); checkSetupFileHashIdentifier(setup_file_hash, getCookie("LEVELINFO")); @@ -1963,19 +1956,19 @@ static boolean LoadLevelInfoFromLevelConf(TreeInfo **node_first, #if 1 if (strcmp(leveldir_new->name, ANONYMOUS_NAME) == 0) - setString(&leveldir_new->name, leveldir_new->filename); + setString(&leveldir_new->name, leveldir_new->subdir); #else if (strcmp(leveldir_new->name, ANONYMOUS_NAME) == 0) { free(leveldir_new->name); - leveldir_new->name = getStringCopy(leveldir_new->filename); + leveldir_new->name = getStringCopy(leveldir_new->subdir); } #endif DrawInitText(leveldir_new->name, 150, FC_YELLOW); if (leveldir_new->identifier == NULL) - leveldir_new->identifier = getStringCopy(leveldir_new->filename); + leveldir_new->identifier = getStringCopy(leveldir_new->subdir); if (leveldir_new->name_sorting == NULL) leveldir_new->name_sorting = getStringCopy(leveldir_new->name); @@ -1983,7 +1976,7 @@ static boolean LoadLevelInfoFromLevelConf(TreeInfo **node_first, if (node_parent == NULL) /* top level group */ { leveldir_new->basepath = getStringCopy(level_directory); - leveldir_new->fullpath = getStringCopy(leveldir_new->filename); + leveldir_new->fullpath = getStringCopy(leveldir_new->subdir); } else /* sub level group */ { @@ -2176,7 +2169,7 @@ static boolean LoadArtworkInfoFromArtworkConf(TreeInfo **node_first, else setTreeInfoToDefaults(artwork_new, type); - artwork_new->filename = getStringCopy(directory_name); + artwork_new->subdir = getStringCopy(directory_name); if (setup_file_hash) /* (before defining ".color" and ".class_desc") */ { @@ -2193,12 +2186,12 @@ static boolean LoadArtworkInfoFromArtworkConf(TreeInfo **node_first, #if 1 if (strcmp(artwork_new->name, ANONYMOUS_NAME) == 0) - setString(&artwork_new->name, artwork_new->filename); + setString(&artwork_new->name, artwork_new->subdir); #else if (strcmp(artwork_new->name, ANONYMOUS_NAME) == 0) { free(artwork_new->name); - artwork_new->name = getStringCopy(artwork_new->filename); + artwork_new->name = getStringCopy(artwork_new->subdir); } #endif @@ -2207,7 +2200,7 @@ static boolean LoadArtworkInfoFromArtworkConf(TreeInfo **node_first, #endif if (artwork_new->identifier == NULL) - artwork_new->identifier = getStringCopy(artwork_new->filename); + artwork_new->identifier = getStringCopy(artwork_new->subdir); if (artwork_new->name_sorting == NULL) artwork_new->name_sorting = getStringCopy(artwork_new->name); @@ -2216,7 +2209,7 @@ static boolean LoadArtworkInfoFromArtworkConf(TreeInfo **node_first, if (node_parent == NULL) /* top level group */ { artwork_new->basepath = getStringCopy(base_directory); - artwork_new->fullpath = getStringCopy(artwork_new->filename); + artwork_new->fullpath = getStringCopy(artwork_new->subdir); } else /* sub level group */ { @@ -2258,7 +2251,7 @@ static boolean LoadArtworkInfoFromArtworkConf(TreeInfo **node_first, } #endif - if (strcmp(artwork_new->filename, ".") == 0) + if (strcmp(artwork_new->subdir, ".") == 0) { if (artwork_new->user_defined) { @@ -2291,9 +2284,9 @@ static boolean LoadArtworkInfoFromArtworkConf(TreeInfo **node_first, else { #if 1 - setString(&artwork_new->identifier, artwork_new->filename); + setString(&artwork_new->identifier, artwork_new->subdir); #else - artwork_new->identifier = getStringCopy(artwork_new->filename); + artwork_new->identifier = getStringCopy(artwork_new->subdir); #endif } @@ -2382,7 +2375,7 @@ static TreeInfo *getDummyArtworkInfo(int type) setTreeInfoToDefaults(artwork_new, type); #if 1 - setString(&artwork_new->filename, UNDEFINED_FILENAME); + setString(&artwork_new->subdir, UNDEFINED_FILENAME); setString(&artwork_new->fullpath, UNDEFINED_FILENAME); setString(&artwork_new->basepath, UNDEFINED_FILENAME); @@ -2390,7 +2383,7 @@ static TreeInfo *getDummyArtworkInfo(int type) setString(&artwork_new->name, UNDEFINED_FILENAME); setString(&artwork_new->name_sorting, UNDEFINED_FILENAME); #else - artwork_new->filename = getStringCopy(UNDEFINED_FILENAME); + artwork_new->subdir = getStringCopy(UNDEFINED_FILENAME); artwork_new->fullpath = getStringCopy(UNDEFINED_FILENAME); artwork_new->basepath = getStringCopy(UNDEFINED_FILENAME); @@ -2495,7 +2488,7 @@ void LoadArtworkInfoFromLevelInfo(ArtworkDirTree **artwork_node, #if 0 if (!level_node->parent_link) printf("CHECKING '%s' ['%s', '%s'] ...\n", path, - level_node->filename, level_node->name); + level_node->subdir, level_node->name); #endif if (!level_node->parent_link) @@ -2511,7 +2504,7 @@ void LoadArtworkInfoFromLevelInfo(ArtworkDirTree **artwork_node, free((*artwork_node)->name); free((*artwork_node)->name_sorting); - (*artwork_node)->identifier = getStringCopy(level_node->filename); + (*artwork_node)->identifier = getStringCopy(level_node->subdir); (*artwork_node)->name = getStringCopy(level_node->name); (*artwork_node)->name_sorting = getStringCopy(level_node->name); @@ -2766,7 +2759,7 @@ void SaveLevelSetup_LastSeries() /* ----------------------------------------------------------------------- */ char *filename = getPath2(getSetupDir(), LEVELSETUP_FILENAME); - char *level_subdir = leveldir_current->filename; + char *level_subdir = leveldir_current->subdir; FILE *file; InitUserDataDirectory(); @@ -2845,7 +2838,7 @@ void LoadLevelSetup_SeriesInfo() { char *filename; SetupFileHash *level_setup_hash = NULL; - char *level_subdir = leveldir_current->filename; + char *level_subdir = leveldir_current->subdir; /* always start with reliable default values */ level_nr = leveldir_current->first_level; @@ -2856,7 +2849,7 @@ void LoadLevelSetup_SeriesInfo() /* ~/./levelsetup//levelsetup.conf */ /* ----------------------------------------------------------------------- */ - level_subdir = leveldir_current->filename; + level_subdir = leveldir_current->subdir; filename = getPath2(getLevelSetupDir(level_subdir), LEVELSETUP_FILENAME); @@ -2906,7 +2899,7 @@ void LoadLevelSetup_SeriesInfo() void SaveLevelSetup_SeriesInfo() { char *filename; - char *level_subdir = leveldir_current->filename; + char *level_subdir = leveldir_current->subdir; char *level_nr_str = int2str(level_nr, 0); char *handicap_level_str = int2str(leveldir_current->handicap_level, 0); FILE *file;