public void AddCapability(ItemCapability capability) { if (HasCapability(capability.GetType())) { throw new Exception($"bad duplicate capability of type {capability.GetType().Name} in '{Name}'"); } Capabilities.Add(capability); // TODO: Container initialization? }
public override void HandleExtendedParameters(XElement extendedParameters) { foreach (XElement itemcapability in extendedParameters.Descendants("ItemCapability")) { IEnumerable <XElement> Verbs = itemcapability.Descendants("ItemCapabilityVerb"); IEnumerable <XElement> Parameters = itemcapability.Descendants("ItemCapabilityParameter"); ItemCapability cap = null; switch (itemcapability.Attribute("name").Value) { case "MeleeWeaponCapability": cap = new MeleeWeaponCapability(); break; case "ToolCapability": cap = new ToolCapability(); break; case "GunCapability": cap = new GunCapability(); break; case "MedicalCapability": cap = new MedicalCapability(); break; case "HealthScanCapability": cap = new HealthScanCapability(); break; case "BreatherCapability": cap = new BreatherCapability(); break; } if (cap == null) { return; } foreach (XElement verb in Verbs) { cap.AddVerb(int.Parse(verb.Attribute("priority").Value), (ItemCapabilityVerb) Enum.Parse(typeof(ItemCapabilityVerb), verb.Attribute("name").Value)); } foreach (XElement parameter in Parameters) { string name = parameter.Attribute("name").Value; Type type = EntityTemplate.TranslateType(parameter.Attribute("type").Value); object value = Convert.ChangeType(parameter.Attribute("value").Value, type); var cparam = new ComponentParameter(name, value); cap.SetParameter(cparam); } AddCapability(cap); } }
protected bool HasInternals() { List <ItemCapability> caps = GetEquipmentCapabilities(); ItemCapability cap = caps.FirstOrDefault(c => c.GetType() == typeof(BreatherCapability)); if (cap != null) { return(true); } return(false); }
public void AddCapability(ItemCapability cap) { capabilities.Add(cap.capabilityName, cap); cap.owner = this; }