X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;fp=src%2Flibgame%2Fsetup.c;h=ed3497437c1ccd91acbe5f3265c5618248d8cdae;hp=581aac21420c1ce6cb6a12f1a660ca31b52f68c9;hb=483d088f2bd4dd2ee267aff416503b2c667a69d3;hpb=f44158a4e1de9725bdd1d751b4a4005d29b51271 diff --git a/src/libgame/setup.c b/src/libgame/setup.c index 581aac21..ed349743 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -1154,7 +1154,21 @@ int numTreeInfo(TreeInfo *node) boolean validLevelSeries(TreeInfo *node) { - return (node != NULL && !node->node_group && !node->parent_link); + // in a number of cases, tree node is no valid level set + if (node == NULL || node->node_group || node->parent_link || node->is_copy) + return FALSE; + + return TRUE; +} + +TreeInfo *getValidLevelSeries(TreeInfo *node, TreeInfo *default_node) +{ + if (validLevelSeries(node)) + return node; + else if (node->is_copy) + return getTreeInfoFromIdentifier(leveldir_first, node->identifier); + else + return getFirstValidTreeInfoEntry(default_node); } TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *node) @@ -1244,7 +1258,7 @@ static TreeInfo *getTreeInfoFromIdentifierExt(TreeInfo *node, char *identifier, if (node_group) return node_group; } - else if (!node->parent_link) + else if (!node->parent_link && !node->is_copy) { if (strEqual(identifier, node->identifier)) return node;