public override IPositionable CreateUnit(XElement traderData) { if (traderData == null) { throw new ArgumentNullException(nameof(traderData)); } XElement traderItemsData = traderData.Element("items"); var traderItems = new List <IInventoryItem>(); if (traderItemsData != null) { traderItems = traderItemsData.Elements("item") .Select(itemElement => { String type = itemElement.Attribute("type")?.Value; var itemType = (EItemTypes)Enum.Parse(typeof(EItemTypes), type, true); CItemFactoryMethod itemFactory = CItemFactoryMethod.GetFactory(itemType); return(itemFactory.Create(itemElement)); }) .ToList(); } var trader = new CTrader(traderItems); return(trader); }
public override IPositionable CreateUnit(XElement traderData) { if (traderData == null) { throw new ArgumentNullException(nameof(traderData)); } XElement itemsData = traderData.Element("items"); var traderItems = new List <IInventoryItem>(); if (itemsData != null) { traderItems = itemsData.Elements("item") .Select(itemElement => { String type = itemElement.Attribute("type")?.Value; var itemType = (EItemTypes)Enum.Parse(typeof(EItemTypes), type, true); CItemFactoryMethod itemFactory = CItemFactoryMethod.GetFactory(itemType); return(itemFactory.Create(itemElement)); }) .ToList(); } var maxHpData = traderData.Element("MaxHp")?.Value ?? throw new Exception("Element 'MaxHp' must by on Monster"); var maxHp = Int32.Parse(maxHpData); var damageData = traderData.Element("Damage")?.Value ?? throw new Exception("Element 'Damage' must by on Monster"); var damage = Int32.Parse(damageData); var trader = new CMonster(maxHp, damage); return(trader); }