// TODO refactor

        public bool updateAbilitiesElement(string internalName, List <SoldierClassAbility> soldierAbilities)
        {
            foreach (SoldierClassAbility soldierAbility in soldierAbilities)
            {
                if (!soldierAbility.allowUpdate().valid)
                {
                    return(false);
                }
            }

            XElement        documentAbilitiesElement = getClassElement(internalName, Constants.XML_ABILITIES);
            List <XElement> documentAbilityElements  = documentAbilitiesElement.Elements(Constants.XML_ABILITY).ToList();

            foreach (XElement documentAbilityElement in documentAbilityElements)
            {
                int?documentRank = Utils.parseStringToInt(documentAbilityElement.Element(Constants.XML_ABILITY_RANK).Value);
                int?documentSlot = Utils.parseStringToInt(documentAbilityElement.Element(Constants.XML_ABILITY_SLOT).Value);

                SoldierClassAbility soldierAbility = soldierAbilities.Where(x => (int)x.rank == documentRank && x.slot == documentSlot).SingleOrDefault();

                if (soldierAbility == null)
                {
                    documentAbilityElement.Element(Constants.XML_ABILITY_INTERNAL_NAME).Value = "";
                }
                else
                {
                    XElement abilityElement = soldierAbility.getXmlElement();
                    documentAbilityElement.Element(Constants.XML_ABILITY_INTERNAL_NAME).Value = abilityElement.Element(Constants.XML_ABILITY_INTERNAL_NAME).Value;
                }
            }

            document.Save(fullPath);

            return(true);
        }
示例#2
0
        private Ability getAbilityForCombo(SoldierRank rank, int slot)
        {
            ClassOverview owner = Owner as ClassOverview;

            SoldierClassAbility soldierAbility = owner.currentSoldier.soldierAbilities.Where(x => x.rank == rank && x.slot == slot).FirstOrDefault();

            if (soldierAbility != null)
            {
                return(soldierAbility.getAbility());
            }

            return(new Ability());
        }
示例#3
0
        private SoldierClassAbility readAbility(XElement abilityElement)
        {
            SoldierClassAbility soldierClassAbility = null;

            string  internalName = abilityElement.Element("internal_name").Value;
            Ability ability      = allAbilities.Where(x => x.internalName.Equals(internalName)).FirstOrDefault();

            if (ability != null)
            {
                soldierClassAbility      = new SoldierClassAbility(ability);
                soldierClassAbility.rank = (SoldierRank)Utils.parseStringToInt(abilityElement.Element("rank").Value);
                soldierClassAbility.slot = Utils.parseStringToInt(abilityElement.Element("slot").Value);
            }

            return(soldierClassAbility);
        }
示例#4
0
        private SoldierClassAbility buildSoldierAbilityFromCombo(ComboBox combo, SoldierRank rank, int slot)
        {
            SoldierClassAbility soldierAbility = new SoldierClassAbility();
            Ability             comboAbility   = combo.SelectedItem as Ability;

            if (comboAbility != null)
            {
                soldierAbility.internalName = comboAbility.internalName;
                soldierAbility.displayName  = comboAbility.displayName;
                soldierAbility.description  = comboAbility.description;
                soldierAbility.weaponSlot   = comboAbility.weaponSlot;
                soldierAbility.requiredMod  = comboAbility.requiredMod;
                soldierAbility.rank         = rank;
                soldierAbility.slot         = slot;
            }

            return(soldierAbility);
        }
示例#5
0
        private List <SoldierClassAbility> readAbilities(XElement abilitiesElement)
        {
            List <SoldierClassAbility> abilities = new List <SoldierClassAbility>();

            List <XElement> abilityElements = abilitiesElement.Elements("ability").ToList();

            foreach (XElement abilityElement in abilityElements)
            {
                SoldierClassAbility soldierAbility = readAbility(abilityElement);

                if (soldierAbility != null)
                {
                    abilities.Add(soldierAbility);
                }
            }

            return(abilities);
        }
示例#6
0
        public override bool Equals(object obj)
        {
            SoldierClassAbility other = obj as SoldierClassAbility;

            if (other == null)
            {
                return(false);
            }

            if (rank != other.rank)
            {
                return(false);
            }

            if (slot != other.slot)
            {
                return(false);
            }

            return(base.Equals(obj));
        }
示例#7
0
 public SoldierClassAbility(SoldierClassAbility other) : base(other)
 {
     rank = other.rank;
     slot = other.slot;
 }
示例#8
0
        public SoldierClassAbility getSoldierAbility(SoldierRank rank, int slot)
        {
            SoldierClassAbility soldierAbility = soldierAbilities.Where(x => x.rank == rank && x.slot == slot).FirstOrDefault();

            return(soldierAbility);
        }