diff --git a/Nautilus/Patchers/CraftTreePatcher.cs b/Nautilus/Patchers/CraftTreePatcher.cs index b7f5dc24..0adae30e 100644 --- a/Nautilus/Patchers/CraftTreePatcher.cs +++ b/Nautilus/Patchers/CraftTreePatcher.cs @@ -19,6 +19,15 @@ internal class CraftTreePatcher internal static Dictionary> CraftingNodes = new(); internal static Dictionary> TabNodes = new(); internal static Dictionary CachedTrees = new(); + internal static Dictionary Fallbacks = new() + { + { CraftTree.Type.Workbench, TechType.Workbench }, + { CraftTree.Type.Fabricator, TechType.Fabricator }, + { CraftTree.Type.Constructor, TechType.Constructor }, + { CraftTree.Type.SeamothUpgrades, TechType.BaseUpgradeConsole }, + { CraftTree.Type.MapRoom, TechType.BaseMapRoom }, + { CraftTree.Type.Workbench, TechType.Workbench }, + }; private const string FallbackTabNode = "Modded"; private const string VanillaRoot = "Vanilla"; @@ -35,30 +44,23 @@ internal static void Patch(Harmony harmony) private static void CreateFallbackNodes() { - // Workbench CreateVanillaTabNode(CraftTree.Type.Workbench, "Modification Station", TechType.Workbench, CraftTree.WorkbenchScheme().root); - CraftTreeHandler.AddTabNode(CraftTree.Type.Workbench, FallbackTabNode + CraftTree.Type.Workbench, "Mod Items", SpriteManager.Get(TechType.Workbench)); - - // Fabricator - CraftTreeHandler.AddTabNode(CraftTree.Type.Fabricator, FallbackTabNode + CraftTree.Type.Fabricator, "Mod Items", SpriteManager.Get(TechType.Fabricator)); - - // Constructor - CraftTreeHandler.AddTabNode(CraftTree.Type.Constructor, FallbackTabNode + CraftTree.Type.Constructor, "Mod Items", SpriteManager.Get(TechType.Constructor)); - - // Seamoth Upgrades - CraftTreeHandler.AddTabNode(CraftTree.Type.SeamothUpgrades, FallbackTabNode + CraftTree.Type.SeamothUpgrades, "Mod Items", SpriteManager.Get(TechType.BaseUpgradeConsole)); - - // Map Room CreateVanillaTabNode(CraftTree.Type.MapRoom, "Scanner Upgrades", TechType.BaseMapRoom, CraftTree.MapRoomSheme().root); - CraftTreeHandler.AddTabNode(CraftTree.Type.MapRoom, FallbackTabNode + CraftTree.Type.MapRoom, "Mod Items", SpriteManager.Get(TechType.BaseMapRoom)); + #if SUBNAUTICA - // Cyclops Fabricator CreateVanillaTabNode(CraftTree.Type.CyclopsFabricator, "Cyclops Fabricator", TechType.Cyclops, CraftTree.CyclopsFabricatorScheme().root); - CraftTreeHandler.AddTabNode(CraftTree.Type.CyclopsFabricator, FallbackTabNode + CraftTree.Type.CyclopsFabricator, "Mod Items", SpriteManager.Get(TechType.Cyclops)); + Fallbacks.Add(CraftTree.Type.CyclopsFabricator, TechType.Cyclops); #elif BELOWZERO - // SeaTruck Fabricator - CraftTreeHandler.AddTabNode(CraftTree.Type.SeaTruckFabricator, FallbackTabNode+CraftTree.Type.SeaTruckFabricator, "Mod Items", SpriteManager.Get(TechType.SeaTruckFabricator)); + Fallbacks.Add(CraftTree.Type.SeaTruckFabricator, TechType.SeaTruckFabricator); #endif + + foreach (var pair in Fallbacks) + CreateFallbackNode(pair.Key, pair.Value); + } + + private static void CreateFallbackNode(CraftTree.Type craftTreeType, TechType techTypeForSprite) + { + CraftTreeHandler.AddTabNode(craftTreeType, FallbackTabNode + craftTreeType, "Mod Items", SpriteManager.Get(techTypeForSprite)); } private static void CreateVanillaTabNode(CraftTree.Type treeType, string DisplayName, TechType spriteTechType, TreeNode root)