Skip to content

Commit

Permalink
chore: Clean up repetitive code in CraftTreePatcher.cs (#526)
Browse files Browse the repository at this point in the history
* Clean up CraftTreePatcher.cs handling for fallback nodes

* Fixes to the prior commit
  • Loading branch information
RamuneNeptune authored Jan 7, 2024
1 parent 52678b6 commit 42e3ca7
Showing 1 changed file with 20 additions and 18 deletions.
38 changes: 20 additions & 18 deletions Nautilus/Patchers/CraftTreePatcher.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,15 @@ internal class CraftTreePatcher
internal static Dictionary<CraftTree.Type, List<CraftingNode>> CraftingNodes = new();
internal static Dictionary<CraftTree.Type, List<TabNode>> TabNodes = new();
internal static Dictionary<CraftTree.Type, CraftTree> CachedTrees = new();
internal static Dictionary<CraftTree.Type, TechType> 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";

Expand All @@ -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)
Expand Down

0 comments on commit 42e3ca7

Please sign in to comment.