diff --git a/NewHorizons/Builder/Props/PropBuildManager.cs b/NewHorizons/Builder/Props/PropBuildManager.cs index 3d44368f..5f488529 100644 --- a/NewHorizons/Builder/Props/PropBuildManager.cs +++ b/NewHorizons/Builder/Props/PropBuildManager.cs @@ -1,7 +1,8 @@ -using NewHorizons.Builder.ShipLog; +using NewHorizons.Builder.ShipLog; using NewHorizons.External.Configs; using OWML.Common; using System; +using System.Collections.Generic; using UnityEngine; using Logger = NewHorizons.Utility.Logger; namespace NewHorizons.Builder.Props @@ -162,6 +163,33 @@ namespace NewHorizons.Builder.Props Logger.LogError($"Couldn't make slide reel for [{go.name}] : {ex.Message}, {ex.StackTrace}"); } } + } + if (config.Props.quantumGroups != null) + { + Dictionary> propsByGroup = new Dictionary>(); + foreach (var detail in config.Props.details) + { + if (detail.quantumGroupID != null) + { + if (!propsByGroup.ContainsKey(detail.quantumGroupID)) propsByGroup[detail.quantumGroupID] = new List(); + propsByGroup[detail.quantumGroupID].Add(DetailBuilder.GetSpawnedGameObjectByDetailInfo(detail)); + } + } + + foreach (var quantumGroup in config.Props.quantumGroups) + { + if (!propsByGroup.ContainsKey(quantumGroup.id)) continue; + var propsInGroup = propsByGroup[quantumGroup.id]; + + try + { + QuantumBuilder.Make(go, sector, config, mod, quantumGroup, propsInGroup.ToArray()); + } + catch (Exception ex) + { + Logger.LogError($"Couldn't make quantum group \"{quantumGroup.id}\" for [{go.name}] : {ex.Message}, {ex.StackTrace}"); + } + } } } }