added function to get next valid tree node
authorHolger Schemel <info@artsoft.org>
Fri, 3 Sep 2021 13:40:34 +0000 (15:40 +0200)
committerHolger Schemel <info@artsoft.org>
Fri, 3 Sep 2021 13:40:34 +0000 (15:40 +0200)
src/libgame/setup.c
src/libgame/setup.h

index 403d0dae558baa641d5ebf618fb45a8e514fe9c3..60ec59f307cc83e9aaf332a86c5b85f16b13e73d 100644 (file)
@@ -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,6 +1299,9 @@ TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *node)
     return getFirstValidTreeInfoEntry(node->node_group);
 
   if (node->parent_link)       // skip first node (back link) of node group
+    get_next_node = TRUE;
+
+  if (get_next_node)
   {
     // get next regular tree node, or step up until one is found
     while (node->next == NULL && node->node_parent != NULL)
@@ -1311,6 +1314,16 @@ TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *node)
   return node;
 }
 
+TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *node)
+{
+  return getValidTreeInfoEntryExt(node, FALSE);
+}
+
+TreeInfo *getNextValidTreeInfoEntry(TreeInfo *node)
+{
+  return getValidTreeInfoEntryExt(node, TRUE);
+}
+
 TreeInfo *getTreeInfoFirstGroupEntry(TreeInfo *node)
 {
   if (node == NULL)
index b312caac17b15ffd0c085dce8cba7739b4ffe109..1a79b558ead6c991880a468226c3df2de48cfe2b 100644 (file)
@@ -304,6 +304,7 @@ int numTreeInfo(TreeInfo *);
 boolean validLevelSeries(TreeInfo *);
 TreeInfo *getValidLevelSeries(TreeInfo *, TreeInfo *);
 TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *);
+TreeInfo *getNextValidTreeInfoEntry(TreeInfo *);
 TreeInfo *getTreeInfoFirstGroupEntry(TreeInfo *);
 int numTreeInfoInGroup(TreeInfo *);
 int getPosFromTreeInfo(TreeInfo *);