Beispiel #1
0
 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 };
                }
            }
        }
Beispiel #3
0
        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();
        }