public override void OnLoad(ConfigNode node) { base.OnLoad(node); var crewNodes = node.GetNodes(CrewMemberInfo.ConfigNodeName); foreach (ConfigNode n in crewNodes) { crew.Add(CrewMemberInfo.Load(n)); } //crew var allCrew = HighLogic.CurrentGame.CrewRoster.Crew; foreach (var c in allCrew) { if (crew.FindIndex(c_ => c_.name == c.name) == -1) { crew.Add(new CrewMemberInfo(c.name, "", Guid.Empty)); } } var allVessels = FlightGlobals.Vessels; this.Log(allVessels.Count.ToString()); foreach (Vessel v in allVessels) { var currentCrew = v.GetVesselCrew(); foreach (ProtoCrewMember pcm in currentCrew) { int idx = crew.FindIndex(c => c.name == pcm.name); if (idx == -1) { this.LogError("not found"); } crew[idx].vesselName = v.GetName(); crew[idx].vesselId = v.id; } } //Loading CuriePlaceEmitters var nodes = node.GetNodes(CuriePlaceEmitter.ConfigNodeName); foreach (var n in nodes) { placeEmitters.Add(CuriePlaceEmitter.Load(n)); this.Log("PlaceEmitter for " + placeEmitters[placeEmitters.Count - 1].bodyName + " loaded from save"); } var defaultNodes = GameDatabase.Instance.GetConfigNode("Curie/CurieSettings").GetNodes(CuriePlaceEmitter.ConfigNodeName); this.Log(defaultNodes.GetLength(0).ToString()); foreach (var n in defaultNodes) { this.Log(n.ToString()); if (placeEmitters.FindIndex(pe => pe.bodyName == n.GetValue("bodyName")) != -1) { continue; } placeEmitters.Add(CuriePlaceEmitter.Load(n)); this.Log("PlaceEmitter for " + placeEmitters[placeEmitters.Count - 1].bodyName + " loaded from config"); } }
public static CuriePlaceEmitter Load(ConfigNode node) { CuriePlaceEmitter cpe = new CuriePlaceEmitter(); cpe.bodyName = Utilities.GetValue(node, "bodyName", "ERROR"); cpe.type = Utilities.GetValue <PlaceEmitterType>(node, "type", PlaceEmitterType.Error); cpe.intensity = Utilities.GetValue(node, "intensity", 1000f); cpe.radius = Mathf.Sqrt(cpe.intensity / MIN_INTENSITY); cpe.body = FlightGlobals.Bodies.Find(b => b.bodyName == cpe.bodyName); return(cpe); }