# HG changeset patch # User IBBoard # Date 1307978104 0 # Node ID 077e9be484387ae267545ff6df2d0b32fd3218dc # Parent c2bc207a1571edbf6e0cb2a20fa09f01825d8d28 Re #346: Add requirement schema support * Pass unit test with a specific case for one requirement - needs extensibility diff -r c2bc207a1571 -r 077e9be48438 API/Factories/Xml/WarFoundryXmlRaceFactory.cs --- a/API/Factories/Xml/WarFoundryXmlRaceFactory.cs Sat May 28 16:02:36 2011 +0000 +++ b/API/Factories/Xml/WarFoundryXmlRaceFactory.cs Mon Jun 13 15:15:04 2011 +0000 @@ -11,7 +11,8 @@ using IBBoard.Limits; using IBBoard.CustomMath; using ICSharpCode.SharpZipLib.Zip; -using IBBoard.WarFoundry.API.Objects; +using IBBoard.WarFoundry.API.Objects; +using IBBoard.WarFoundry.API.Objects.Requirement; namespace IBBoard.WarFoundry.API.Factories.Xml { @@ -373,7 +374,17 @@ private void LoadRequirementsForUnitType(XmlElement elem, UnitType type) { - //TODO: Load requirements + //TODO: Handle requirements more extensibly + foreach (XmlElement extraData in WarFoundryXmlFactoryUtils.SelectNodes(elem, "race:requirements/race:requirement")) + { + string name = extraData.GetAttribute("requirementName"); + if (name == "RequiresAtLeastNUnits") { + string data = WarFoundryXmlFactoryUtils.SelectSingleElement(extraData, "race:data").InnerText; + UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(type); + req.AddUnitTypeRequirement(GetUnitTypeFromDocument(elem.OwnerDocument, data, type.Race)); + type.AddRequirement(req); + } + } } private void LoadExtraDataForUnitType(XmlElement elem, UnitType type)