/// <summary> /// Checks that the given type of PartModule is valid. /// </summary> /// <param name="name">name of the PartModule type</param> /// <returns>True if valid, exeption otherwise</returns> public static bool ValidatePartModuleType(string name) { if (ContractDefs.GetModules(name).Count == 0) { throw new ArgumentException("No PartModules found for type '" + name + "'."); } return(true); }
private bool PartHasModuleType(Part p, string partModuleType) { List <string> modules = ContractDefs.GetModules(partModuleType); foreach (PartModule pm in p.Modules) { if (modules.Contains(pm.moduleName)) { return(true); } } return(false); }
/// <summary> /// Checks that the given type of PartModule is valid. /// </summary> /// <param name="name">name of the PartModule type</param> /// <returns>True if valid, exception otherwise</returns> public static bool ValidatePartModuleType(string name) { // Check if we need to force-initalize the contract definitions if (ContractDefs.config == null) { new ContractDefs(); } if (ContractDefs.GetModules(name).Count == 0) { throw new ArgumentException("No PartModules found for type '" + name + "'."); } return(true); }
public override bool RequirementMet(ConfiguredContract contract) { foreach (string tech in techs) { ProtoTechNode techNode = ResearchAndDevelopment.Instance.GetTechState(tech); if (techNode == null || techNode.state != RDTech.State.Available) { return(false); } } foreach (string partModule in partModules) { bool hasModule = false; foreach (AvailablePart part in PartLoader.LoadedPartsList) { if (part.partPrefab == null || part.partPrefab.Modules == null) { continue; } if (ResearchAndDevelopment.PartTechAvailable(part)) { hasModule = true; break; } } if (!hasModule) { return(false); } } foreach (string partModuleType in partModuleTypes) { List <string> modules = ContractDefs.GetModules(partModuleType); bool hasType = false; foreach (string module in modules) { foreach (AvailablePart part in PartLoader.LoadedPartsList) { if (part.partPrefab == null || part.partPrefab.Modules == null) { continue; } if (ResearchAndDevelopment.PartTechAvailable(part)) { hasType = true; break; } } if (hasType) { break; } } if (!hasType) { return(false); } } return(true); }