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()); }
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)))); }
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); }
public void IncreaseHenchmenInGroup(IHenchMen warrior) { if (NumberOffWarriorsOfThisTypeInRoster(warrior) < warrior.MaximumAllowedInWarBand) { warrior.IncreaseGroupByOne(); InvokeEvent(WarBandChanged); } }
public void DecreaseHenchmenInGroup(IHenchMen warrior) { warrior.DecreaseGroupByOne(); if (warrior.AmountInGroup <= 0) { RemoveWarrior(warrior); } else { InvokeEvent(WarBandChanged); } }
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); }
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); }
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); }