public static void InitAndClearTechList() { if (TechList != null) { TechList.Clear(); } else { TechList = new KCTObservableList <TechItem>(); } TechList.Updated += KerbalConstructionTime.Instance.UpdateTechlistIconColor; }
public KSCItem FromConfigNode(ConfigNode node) { VABUpgrades.Clear(); SPHUpgrades.Clear(); RDUpgrades.Clear(); VABList.Clear(); VABWarehouse.Clear(); SPHList.Clear(); SPHWarehouse.Clear(); VABPlans.Clear(); SPHPlans.Clear(); KSCTech.Clear(); Recon_Rollout.Clear(); AirlaunchPrep.Clear(); VABRates.Clear(); SPHRates.Clear(); KSCName = node.GetValue("KSCName"); if (!int.TryParse(node.GetValue("ActiveLPID"), out ActiveLaunchPadID)) { ActiveLaunchPadID = 0; } ConfigNode vabUp = node.GetNode("VABUpgrades"); foreach (string upgrade in vabUp.GetValues("Upgrade")) { VABUpgrades.Add(int.Parse(upgrade)); } ConfigNode sphUp = node.GetNode("SPHUpgrades"); foreach (string upgrade in sphUp.GetValues("Upgrade")) { SPHUpgrades.Add(int.Parse(upgrade)); } ConfigNode rdUp = node.GetNode("RDUpgrades"); foreach (string upgrade in rdUp.GetValues("Upgrade")) { RDUpgrades.Add(int.Parse(upgrade)); } ConfigNode tmp = node.GetNode("VABList"); foreach (ConfigNode cn in tmp.GetNodes("KCTVessel")) { var listItem = new BuildListStorageItem(); ConfigNode.LoadObjectFromConfig(listItem, cn); BuildListVessel blv = listItem.ToBuildListVessel(); blv.ShipNode = cn.GetNode("ShipNode"); blv.KSC = this; VABList.Add(blv); } tmp = node.GetNode("SPHList"); foreach (ConfigNode cn in tmp.GetNodes("KCTVessel")) { var listItem = new BuildListStorageItem(); ConfigNode.LoadObjectFromConfig(listItem, cn); BuildListVessel blv = listItem.ToBuildListVessel(); blv.ShipNode = cn.GetNode("ShipNode"); blv.KSC = this; SPHList.Add(blv); } BuildList.Sort((a, b) => a.BuildListIndex.CompareTo(b.BuildListIndex)); tmp = node.GetNode("VABWarehouse"); foreach (ConfigNode cn in tmp.GetNodes("KCTVessel")) { var listItem = new BuildListStorageItem(); ConfigNode.LoadObjectFromConfig(listItem, cn); BuildListVessel blv = listItem.ToBuildListVessel(); blv.ShipNode = cn.GetNode("ShipNode"); blv.KSC = this; VABWarehouse.Add(blv); } tmp = node.GetNode("SPHWarehouse"); foreach (ConfigNode cn in tmp.GetNodes("KCTVessel")) { var listItem = new BuildListStorageItem(); ConfigNode.LoadObjectFromConfig(listItem, cn); BuildListVessel blv = listItem.ToBuildListVessel(); blv.ShipNode = cn.GetNode("ShipNode"); blv.KSC = this; SPHWarehouse.Add(blv); } if (node.TryGetNode("VABPlans", ref tmp)) { if (tmp.HasNode("KCTVessel")) { foreach (ConfigNode cn in tmp.GetNodes("KCTVessel")) { var listItem = new BuildListStorageItem(); ConfigNode.LoadObjectFromConfig(listItem, cn); BuildListVessel blv = listItem.ToBuildListVessel(); blv.ShipNode = cn.GetNode("ShipNode"); blv.KSC = this; if (VABPlans.ContainsKey(blv.ShipName)) { VABPlans.Remove(blv.ShipName); } VABPlans.Add(blv.ShipName, blv); } } } if (node.TryGetNode("SPHPlans", ref tmp)) { if (tmp.HasNode("KCTVessel")) { foreach (ConfigNode cn in tmp.GetNodes("KCTVessel")) { var listItem = new BuildListStorageItem(); ConfigNode.LoadObjectFromConfig(listItem, cn); BuildListVessel blv = listItem.ToBuildListVessel(); blv.ShipNode = cn.GetNode("ShipNode"); blv.KSC = this; if (SPHPlans.ContainsKey(blv.ShipName)) { SPHPlans.Remove(blv.ShipName); } SPHPlans.Add(blv.ShipName, blv); } } } tmp = node.GetNode("Recon_Rollout"); foreach (ConfigNode RRCN in tmp.GetNodes("Recon_Rollout_Item")) { var tempRR = new ReconRolloutStorageItem(); ConfigNode.LoadObjectFromConfig(tempRR, RRCN); Recon_Rollout.Add(tempRR.ToReconRollout()); } if (node.TryGetNode("Airlaunch_Prep", ref tmp)) { foreach (ConfigNode cn in tmp.GetNodes("Airlaunch_Prep_Item")) { var storageItem = new AirlaunchPrepStorageItem(); ConfigNode.LoadObjectFromConfig(storageItem, cn); AirlaunchPrep.Add(storageItem.ToAirlaunchPrep()); } } if (node.HasNode("KSCTech")) { tmp = node.GetNode("KSCTech"); foreach (ConfigNode cn in tmp.GetNodes("UpgradingBuilding")) { var storageItem = new FacilityUpgradeStorageItem(); ConfigNode.LoadObjectFromConfig(storageItem, cn); KSCTech.Add(storageItem.ToFacilityUpgrade()); } } if (node.HasNode("LaunchPads")) { LaunchPads.Clear(); tmp = node.GetNode("LaunchPads"); foreach (ConfigNode cn in tmp.GetNodes("KCT_LaunchPad")) { var tempLP = new KCT_LaunchPad("LP0"); ConfigNode.LoadObjectFromConfig(tempLP, cn); tempLP.DestructionNode = cn.GetNode("DestructionState"); LaunchPads.Add(tempLP); } } if (node.HasNode("VABRateCache")) { foreach (string rate in node.GetNode("VABRateCache").GetValues("rate")) { if (double.TryParse(rate, out double r)) { VABRates.Add(r); } } } if (node.HasNode("SPHRateCache")) { foreach (string rate in node.GetNode("SPHRateCache").GetValues("rate")) { if (double.TryParse(rate, out double r)) { SPHRates.Add(r); } } } return(this); }