Fix funny NRE

This commit is contained in:
Nick 2022-07-21 22:12:27 -04:00
parent 5ab573b907
commit e9bc02b54d
3 changed files with 23 additions and 19 deletions

View File

@ -188,14 +188,14 @@ namespace NewHorizons.Builder.Body
public static void PairExit(string exitName, OuterFogWarpVolume warpController) public static void PairExit(string exitName, OuterFogWarpVolume warpController)
{ {
if (!BrambleNodeBuilder.NamedNodes.ContainsKey(exitName)) if (!BrambleNodeBuilder.namedNodes.ContainsKey(exitName))
{ {
if (!_unpairedDimensions.ContainsKey(exitName)) _unpairedDimensions[exitName] = new(); if (!_unpairedDimensions.ContainsKey(exitName)) _unpairedDimensions[exitName] = new();
_unpairedDimensions[exitName].Add(warpController); _unpairedDimensions[exitName].Add(warpController);
return; return;
} }
warpController._linkedInnerWarpVolume = BrambleNodeBuilder.NamedNodes[exitName]; warpController._linkedInnerWarpVolume = BrambleNodeBuilder.namedNodes[exitName];
} }
public static void FinishPairingDimensionsForExitNode(string nodeName) public static void FinishPairingDimensionsForExitNode(string nodeName)

View File

@ -21,21 +21,21 @@ namespace NewHorizons.Builder.Props
// keys are all dimension names that have been referenced by at least one node but do not (yet) exist // keys are all dimension names that have been referenced by at least one node but do not (yet) exist
// values are all nodes' warp controllers that link to a given dimension // values are all nodes' warp controllers that link to a given dimension
// unpairedNodes[name of dimension that doesn't exist yet] => List{warp controller for node that links to that dimension, ...} // unpairedNodes[name of dimension that doesn't exist yet] => List{warp controller for node that links to that dimension, ...}
private static Dictionary<string, List<InnerFogWarpVolume>> _unpairedNodes = new(); private static readonly Dictionary<string, List<InnerFogWarpVolume>> _unpairedNodes = new();
private static Dictionary<string, List<SignalInfo>> _propagatedSignals = null; private static readonly Dictionary<string, List<SignalInfo>> _propagatedSignals = new();
public static Dictionary<string, InnerFogWarpVolume> NamedNodes { get; private set; } public static readonly Dictionary<string, InnerFogWarpVolume> namedNodes = new();
public static Dictionary<BrambleNodeInfo, GameObject> BuiltBrambleNodes { get; private set; } public static readonly Dictionary<BrambleNodeInfo, GameObject> builtBrambleNodes = new();
private static string _brambleSeedPrefabPath = "DB_PioneerDimension_Body/Sector_PioneerDimension/Interactables_PioneerDimension/SeedWarp_ToPioneer (1)"; private static string _brambleSeedPrefabPath = "DB_PioneerDimension_Body/Sector_PioneerDimension/Interactables_PioneerDimension/SeedWarp_ToPioneer (1)";
private static string _brambleNodePrefabPath = "DB_HubDimension_Body/Sector_HubDimension/Interactables_HubDimension/InnerWarp_ToCluster"; private static string _brambleNodePrefabPath = "DB_HubDimension_Body/Sector_HubDimension/Interactables_HubDimension/InnerWarp_ToCluster";
public static void Init() public static void Init()
{ {
_unpairedNodes = new(); _unpairedNodes.Clear();
_propagatedSignals = null; _propagatedSignals.Clear();
NamedNodes = new(); namedNodes.Clear();
BuiltBrambleNodes = new(); builtBrambleNodes.Clear();
PropagateSignals(); PropagateSignals();
} }
@ -117,7 +117,6 @@ namespace NewHorizons.Builder.Props
// This dictionary lists all the signals a given node should have, depending on the dimension it links to // This dictionary lists all the signals a given node should have, depending on the dimension it links to
// ie, if a node links to "dimension1", then that node should spawn all of the signals in the list propagatedSignals["dimension1"] // ie, if a node links to "dimension1", then that node should spawn all of the signals in the list propagatedSignals["dimension1"]
_propagatedSignals = new Dictionary<string, List<SignalInfo>>();
foreach (var dimension in allDimensions) foreach (var dimension in allDimensions)
{ {
_propagatedSignals[dimension.name] = new(); _propagatedSignals[dimension.name] = new();
@ -274,18 +273,21 @@ namespace NewHorizons.Builder.Props
// Cleanup for dimension exits // Cleanup for dimension exits
if (config.name != null) if (config.name != null)
{ {
NamedNodes[config.name] = innerFogWarpVolume; namedNodes[config.name] = innerFogWarpVolume;
BrambleDimensionBuilder.FinishPairingDimensionsForExitNode(config.name); BrambleDimensionBuilder.FinishPairingDimensionsForExitNode(config.name);
} }
// Make signals // Make signals
foreach (var signalConfig in _propagatedSignals[config.linksTo]) if (_propagatedSignals.TryGetValue(config.linksTo, out var connectedSignals))
{ {
var signalGO = SignalBuilder.Make(go, sector, signalConfig, mod); foreach (var signalConfig in connectedSignals)
signalGO.GetComponent<AudioSignal>()._identificationDistance = 0; {
signalGO.GetComponent<AudioSignal>()._sourceRadius = 1; var signalGO = SignalBuilder.Make(go, sector, signalConfig, mod);
signalGO.transform.position = brambleNode.transform.position; signalGO.GetComponent<AudioSignal>()._identificationDistance = 0;
signalGO.transform.parent = brambleNode.transform; signalGO.GetComponent<AudioSignal>()._sourceRadius = 1;
signalGO.transform.position = brambleNode.transform.position;
signalGO.transform.parent = brambleNode.transform;
}
} }
// Done! // Done!

View File

@ -270,13 +270,15 @@ namespace NewHorizons
NewHorizonsData.Load(); NewHorizonsData.Load();
SignalBuilder.Init(); SignalBuilder.Init();
BrambleDimensionBuilder.Init(); BrambleDimensionBuilder.Init();
BrambleNodeBuilder.Init();
AstroObjectLocator.Init(); AstroObjectLocator.Init();
StreamingHandler.Init(); StreamingHandler.Init();
AudioTypeHandler.Init(); AudioTypeHandler.Init();
PlanetCreationHandler.Init(BodyDict[CurrentStarSystem]); PlanetCreationHandler.Init(BodyDict[CurrentStarSystem]);
// Relies on the list of bodies from PlanetCreationHandler so it must run after
BrambleNodeBuilder.Init();
VesselWarpHandler.LoadVessel(); VesselWarpHandler.LoadVessel();
SystemCreationHandler.LoadSystem(SystemDict[CurrentStarSystem]); SystemCreationHandler.LoadSystem(SystemDict[CurrentStarSystem]);
LoadTranslations(ModHelper.Manifest.ModFolderPath + "Assets/", this); LoadTranslations(ModHelper.Manifest.ModFolderPath + "Assets/", this);