internal Consumable(string type, ConsumableEffect effect, int charges, int maxCharges) { Attributes["Type"] = type; m_consumable = effect; Attributes["Charges"] = charges.ToString(); Attributes["MaxCharges"] = maxCharges.ToString(); SetupInvokeAttributes(); SetupEffectAndStrengthAttributes(); }
private void ReadFileCallback(XmlReader reader, object data) { if (reader.LocalName != "Consumables") throw new System.InvalidOperationException("Bad consumables file"); ConsumableEffect currentEffect = null; while (true) { reader.Read(); if (reader.NodeType == XmlNodeType.EndElement && reader.LocalName == "Consumables") break; if (reader.LocalName == "ConsumableEffect" && reader.NodeType == XmlNodeType.Element) { int itemLevel = int.Parse(reader.GetAttribute("ItemLevel")); int casterLevel = 1; if (reader.GetAttribute("CasterLevel") != null) casterLevel = int.Parse(reader.GetAttribute("CasterLevel")); currentEffect = new ConsumableEffect(reader.GetAttribute("Name"), reader.GetAttribute("SpellName"), itemLevel, casterLevel); m_effectMapping.Add(currentEffect.EffectName, currentEffect); } else if (reader.LocalName == "ConsumableInstance" && reader.NodeType == XmlNodeType.Element) { string type = reader.GetAttribute("Type"); string description = reader.GetAttribute("ItemDescription"); string itemName = reader.GetAttribute("Name"); currentEffect.Descriptions.Add(type, description); currentEffect.DisplayNames.Add(type, itemName); currentEffect.Types.Add(type, type); if (m_validEffectsForType.ContainsKey(type)) m_validEffectsForType[type].Add(currentEffect); else m_validEffectsForType[type] = new List<ConsumableEffect>() { currentEffect }; } } }
public override void ReadXml(System.Xml.XmlReader reader) { string effectName = reader.ReadElementContentAsString(); m_consumable = ItemFactory.Instance.ConsumableEffectFactory.GetEffect(Type, effectName); Attributes["Charges"] = reader.ReadElementContentAsString(); Attributes["MaxCharges"] = reader.ReadElementContentAsString(); SetupEffectAndStrengthAttributes(); }