Mercurial > repos > snowblizz-super-API-ideas
diff API/Factories/Xml/WarFoundryXmlRaceFactory.cs @ 370:077e9be48438
Re #346: Add requirement schema support
* Pass unit test with a specific case for one requirement - needs extensibility
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Mon, 13 Jun 2011 15:15:04 +0000 |
parents | 3c4a6403a88c |
children | bfdb95906075 |
line wrap: on
line diff
--- 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)