Skip to content

Commit fb4b64a

Browse files
authored
fix: Existing Node checks. (#532)
1 parent 60cff24 commit fb4b64a

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

Nautilus/Patchers/CraftTreePatcher.cs

+16-10
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ private static void GetTreePreFix(CraftTree.Type treeType, ref CraftTree __resul
120120

121121
private static void PatchCraftTree(ref CraftTree __result, CraftTree.Type type)
122122
{
123-
List<Node> removals = NodesToRemove.TryGetValue(type, out removals)? removals: new List<Node>();
123+
List<Node> removals = NodesToRemove.TryGetValue(type, out removals) ? removals : new List<Node>();
124124
RemoveNodes(ref __result, ref removals);
125125

126126
AddCustomTabs(ref __result, type);
@@ -135,7 +135,7 @@ private static void AddCustomTabs(ref CraftTree tree, CraftTree.Type type)
135135
List<TabNode> customTabs = TabNodes.TryGetValue(type, out customTabs) ? customTabs : new List<TabNode>();
136136
foreach (TabNode customNode in customTabs)
137137
{
138-
if(!TraverseTree(tree.nodes, customNode.Path, out var currentNode))
138+
if (!TraverseTree(tree.nodes, customNode.Path, out var currentNode))
139139
{
140140
InternalLogger.Error($"Cannot add tab: {customNode.Name} to {customNode.Scheme} at {string.Join("/", customNode.Path)} as the parent node could not be found.");
141141
continue;
@@ -147,11 +147,14 @@ private static void AddCustomTabs(ref CraftTree tree, CraftTree.Type type)
147147
continue;
148148
}
149149

150-
// Add the new tab node.
151-
currentNode.AddNode(new TreeNode[]
150+
if (TraverseTree(currentNode, new[] { customNode.Name }, out _))
152151
{
153-
new CraftNode(customNode.Name, TreeAction.Expand, TechType.None)
154-
});
152+
// This node already exists, skip it.
153+
continue;
154+
}
155+
156+
// Add the new tab node.
157+
currentNode.AddNode(new CraftNode(customNode.Name, TreeAction.Expand, TechType.None));
155158
InternalLogger.Debug($"Added tab: {customNode.Name} to {customNode.Scheme} at {string.Join("/", customNode.Path)}");
156159
}
157160
}
@@ -184,11 +187,14 @@ private static void PatchNodes(ref CraftTree tree, CraftTree.Type type)
184187
}
185188
}
186189

187-
// Add the node.
188-
currentNode.AddNode(new TreeNode[]
190+
if (TraverseTree(currentNode, new[] { customNode.TechType.AsString(false) }, out _))
189191
{
190-
new CraftNode(customNode.TechType.AsString(false), TreeAction.Craft, customNode.TechType)
191-
});
192+
// This node already exists, skip it.
193+
continue;
194+
}
195+
196+
// Add the node.
197+
currentNode.AddNode(new CraftNode(customNode.TechType.AsString(false), TreeAction.Craft, customNode.TechType));
192198
InternalLogger.Debug($"Added Crafting node: {customNode.TechType.AsString()} to {customNode.Scheme} at {string.Join("/", customNode.Path)}");
193199
}
194200
}

0 commit comments

Comments
 (0)