changed function from static to public
[rocksndiamonds.git] / src / libgame / setup.c
index 403d0dae558baa641d5ebf618fb45a8e514fe9c3..6c5250286d5b11e06b1e4342fc2bd55fa5ce0569 100644 (file)
@@ -279,7 +279,7 @@ char *getNewUserLevelSubdir(void)
   return new_level_subdir;
 }
 
-static char *getTapeDir(char *level_subdir)
+char *getTapeDir(char *level_subdir)
 {
   static char *tape_dir = NULL;
   char *data_dir = getUserGameDataDir();
@@ -1290,7 +1290,7 @@ TreeInfo *getValidLevelSeries(TreeInfo *node, TreeInfo *default_node)
     return getFirstValidTreeInfoEntry(default_node);
 }
 
-TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *node)
+static TreeInfo *getValidTreeInfoEntryExt(TreeInfo *node, boolean get_next_node)
 {
   if (node == NULL)
     return NULL;
@@ -1299,16 +1299,26 @@ TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *node)
     return getFirstValidTreeInfoEntry(node->node_group);
 
   if (node->parent_link)       // skip first node (back link) of node group
-  {
-    // get next regular tree node, or step up until one is found
-    while (node->next == NULL && node->node_parent != NULL)
-      node = node->node_parent;
+    get_next_node = TRUE;
 
-    return getFirstValidTreeInfoEntry(node->next);
-  }
+  if (!get_next_node)          // get current regular tree node
+    return node;
+
+  // get next regular tree node, or step up until one is found
+  while (node->next == NULL && node->node_parent != NULL)
+    node = node->node_parent;
+
+  return getFirstValidTreeInfoEntry(node->next);
+}
+
+TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *node)
+{
+  return getValidTreeInfoEntryExt(node, FALSE);
+}
 
-  // this is a regular tree node
-  return node;
+TreeInfo *getNextValidTreeInfoEntry(TreeInfo *node)
+{
+  return getValidTreeInfoEntryExt(node, TRUE);
 }
 
 TreeInfo *getTreeInfoFirstGroupEntry(TreeInfo *node)
@@ -1513,7 +1523,8 @@ int dumpTreeInfo(TreeInfo *node, int depth)
     DebugContinued("tree", "%c '%s' ['%s] [PARENT: '%s'] %s\n",
                   bullet, node->name, node->identifier,
                   (node->node_parent ? node->node_parent->identifier : "-"),
-                  (node->node_group ? "[GROUP]" : ""));
+                  (node->node_group ? "[GROUP]" :
+                   node->is_copy ? "[COPY]" : ""));
 
     if (!node->node_group && !node->parent_link)
       num_leaf_nodes++;
@@ -3588,7 +3599,7 @@ static boolean LoadLevelInfoFromLevelConf(TreeInfo **node_first,
     (leveldir_new->user_defined || !leveldir_new->handicap ?
      leveldir_new->last_level : leveldir_new->first_level);
 
-  DrawInitText(leveldir_new->name, 150, FC_YELLOW);
+  DrawInitTextItem(leveldir_new->name);
 
   pushTreeInfo(node_first, leveldir_new);
 
@@ -3704,7 +3715,7 @@ void LoadLevelInfo(void)
 {
   InitUserLevelDirectory(getLoginName());
 
-  DrawInitText("Loading level series", 120, FC_GREEN);
+  DrawInitTextHead("Loading level series");
 
   LoadLevelInfoFromLevelDir(&leveldir_first, NULL, options.level_directory);
   LoadLevelInfoFromLevelDir(&leveldir_first, NULL, getUserLevelDir(NULL));
@@ -3977,7 +3988,7 @@ void LoadArtworkInfo(void)
 {
   LoadArtworkInfoCache();
 
-  DrawInitText("Looking for custom artwork", 120, FC_GREEN);
+  DrawInitTextHead("Looking for custom artwork");
 
   LoadArtworkInfoFromArtworkDir(&artwork.gfx_first, NULL,
                                options.graphics_directory,
@@ -4112,7 +4123,7 @@ static void LoadArtworkInfoFromLevelInfoExt(ArtworkDirTree **artwork_node,
        setArtworkInfoCacheEntry(artwork_new, level_node, type);
     }
 
-    DrawInitText(level_node->name, 150, FC_YELLOW);
+    DrawInitTextItem(level_node->name);
 
     if (level_node->node_group != NULL)
     {
@@ -4181,7 +4192,7 @@ void LoadLevelArtworkInfo(void)
 {
   print_timestamp_init("LoadLevelArtworkInfo");
 
-  DrawInitText("Looking for custom level artwork", 120, FC_GREEN);
+  DrawInitTextHead("Looking for custom level artwork");
 
   print_timestamp_time("DrawTimeText");