示例#1
0
        public void Setup()
        {
            _WarbandRoster      = new WarBandRoster(new WitchHuntersWarband());
            _WarbandRoster.Name = "MordheimDalTests";

            //Logic requires to add a new warrior
            _WitchHunterCaptain = _WarbandRoster.AddWarrior(new WitchHunterCaptain()) as IHero;

            _WitchHunterCaptain.AddEquipment(new Sword().Name);
            _WitchHunterCaptain.AddEquipment(new CrossBow().Name);
            _WitchHunterCaptain.AddEquipment(new Shield().Name);
            _WitchHunterCaptain.AddEquipment(new LightArmour().Name);

            _WitchHunterCaptain.AddSkill(new MightyBlow());
            _WitchHunterCaptain.AddSkill(new PitFighter());

            _ZealotGroup1 = _WarbandRoster.AddWarrior(new Zealot()) as IHenchMen;
            _ZealotGroup1.AddEquipment(new Sword());
            _ZealotGroup1.AddEquipment(new Sword());
            _ZealotGroup1.IncreaseGroupByOne();
            _ZealotGroup1.IncreaseGroupByOne();

            _ZealotGroup2 = _WarbandRoster.AddWarrior(new Zealot()) as IHenchMen;
            _ZealotGroup2.AddEquipment(new Bow());
            _ZealotGroup2.IncreaseGroupByOne();
            _ZealotGroup2.IncreaseGroupByOne();
            _ZealotGroup2.IncreaseGroupByOne();

            _WarriorPriest = _WarbandRoster.AddWarrior(new WarriorPriest()) as WarriorPriest;
            _WarriorPriest.AddSpell(new HeartsOfSteel());
            _WarriorPriest.AddSpell(new TheHammerOfSigmar());
        }
示例#2
0
        public void SaveAndLoad()
        {
            _WarbandRoster.Name = $"{warbandName}{"SaveAndLoad"}";
            DalProvider.Instance.Save(_WarbandRoster);
            IWarbandRoster roster = new XmlDal().LoadWarband(Path.Combine(XmlDal.STORAGE_PATH, $"{_WarbandRoster.Name}.xml"));

            Assert.IsNotNull(roster);

            IHero loadedHero = roster.Warriors.First() as IHero;

            Assert.AreEqual(_WitchHunterCaptain.Equipment.Count, loadedHero.Equipment.Count);
            Assert.AreEqual(_WitchHunterCaptain.Skills.Count, loadedHero.Skills.Count);

            IHenchMen loadedHenchMen1 = roster.Warriors.ElementAt(1) as IHenchMen;

            Assert.AreEqual(_ZealotGroup1.AmountInGroup, loadedHenchMen1.AmountInGroup);
            Assert.AreEqual(_ZealotGroup1.Equipment.Count, loadedHenchMen1.Equipment.Count);

            IHenchMen loadedHenchMen2 = roster.Warriors.ElementAt(2) as IHenchMen;

            Assert.AreEqual(_ZealotGroup2.AmountInGroup, loadedHenchMen2.AmountInGroup);
            Assert.AreEqual(_ZealotGroup2.Equipment.Count, loadedHenchMen2.Equipment.Count);

            IWizard loadedWizard = roster.Warriors.ElementAt(3) as IWizard;

            Assert.IsTrue(loadedWizard.DrawnSpells.Any(x => x.SpellName.Equals(nameof(TheHammerOfSigmar))));
        }
示例#3
0
        public static XmlWarrior ToXml(this IWarrior warrior)
        {
            XmlWarrior xmlWarrior = new XmlWarrior()
            {
                TypeOfWarrior = warrior.TypeName,
                Name          = warrior.Name
            };

            xmlWarrior.EquipmentList.AddRange(warrior.Equipment.Select(x => x.Name).ToList());

            if (warrior is IHenchMen)
            {
                IHenchMen henchMan = warrior as IHenchMen;
                xmlWarrior.AmountInGroup = henchMan.AmountInGroup;
            }
            else if (warrior is IHero)
            {
                IHero hero = warrior as IHero;
                xmlWarrior.SkillList.AddRange(hero.Skills.Select(x => x.SkillName).ToList());
            }
            if (warrior is IWizard)
            {
                IWizard wizard = warrior as IWizard;
                xmlWarrior.SpellList.AddRange(wizard.DrawnSpells.Select(x => x.SpellName).ToList());
            }

            return(xmlWarrior);
        }
示例#4
0
 public void IncreaseHenchmenInGroup(IHenchMen warrior)
 {
     if (NumberOffWarriorsOfThisTypeInRoster(warrior) < warrior.MaximumAllowedInWarBand)
     {
         warrior.IncreaseGroupByOne();
         InvokeEvent(WarBandChanged);
     }
 }
示例#5
0
 public void DecreaseHenchmenInGroup(IHenchMen warrior)
 {
     warrior.DecreaseGroupByOne();
     if (warrior.AmountInGroup <= 0)
     {
         RemoveWarrior(warrior);
     }
     else
     {
         InvokeEvent(WarBandChanged);
     }
 }
示例#6
0
        public int AmountOfThisType(IWarrior warrior)
        {
            if (this.TypeName.Equals(warrior.TypeName))
            {
                IHenchMen henchMan = this as IHenchMen;

                if (henchMan != null)
                {
                    return(henchMan.AmountInGroup);
                }
                return(1);
            }
            return(0);
        }
示例#7
0
        public IWarrior AddWarrior(IWarrior warrior)
        {
            IWarrior newWarrior = warrior.GetAnInstance();

            Warriors.Add(newWarrior);

            newWarrior.PropertiesChanged += NewWarrior_PropertiesChanged;

            if (newWarrior is IHenchMen)
            {
                IHenchMen henchMan = newWarrior as IHenchMen;
                henchMan.IncreaseGroupByOne();
            }

            InvokeEvent(WarBandChanged);
            InvokeEvent(WarBandWariorListChanged);

            return(newWarrior);
        }
示例#8
0
        public static IWarrior FromXml(this IWarbandRoster warbandRoster, XmlWarrior xmlWarrior)
        {
            IWarrior warrior = warbandRoster.WarBand.GetWarrior(xmlWarrior.TypeOfWarrior);

            warrior = warbandRoster.AddWarrior(warrior);
            foreach (string item in xmlWarrior.EquipmentList)
            {
                warrior.AddEquipment(item);
            }
            if (warrior is IHenchMen)
            {
                IHenchMen henchMan = warrior as IHenchMen;

                for (int i = 1; i < xmlWarrior.AmountInGroup; i++)
                {
                    henchMan.IncreaseGroupByOne();
                }
            }
            else if (warrior is IHero)
            {
                IHero hero = warrior as IHero;

                foreach (string skill in xmlWarrior.SkillList)
                {
                    hero.AddSkill(skill);
                }
            }
            if (warrior is IWizard)
            {
                IWizard wizard = warrior as IWizard;

                foreach (string item in xmlWarrior.SpellList)
                {
                    wizard.AddSpell(item);
                }
            }

            return(warrior);
        }