Mercurial > repos > IBDev-IBBoard.WarFoundry.API
comparison 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 |
comparison
equal
deleted
inserted
replaced
369:c2bc207a1571 | 370:077e9be48438 |
---|---|
10 using IBBoard.IO; | 10 using IBBoard.IO; |
11 using IBBoard.Limits; | 11 using IBBoard.Limits; |
12 using IBBoard.CustomMath; | 12 using IBBoard.CustomMath; |
13 using ICSharpCode.SharpZipLib.Zip; | 13 using ICSharpCode.SharpZipLib.Zip; |
14 using IBBoard.WarFoundry.API.Objects; | 14 using IBBoard.WarFoundry.API.Objects; |
15 using IBBoard.WarFoundry.API.Objects.Requirement; | |
15 | 16 |
16 namespace IBBoard.WarFoundry.API.Factories.Xml | 17 namespace IBBoard.WarFoundry.API.Factories.Xml |
17 { | 18 { |
18 /// <summary> | 19 /// <summary> |
19 /// A sub-factory for loading WarFoundry Race XML files | 20 /// A sub-factory for loading WarFoundry Race XML files |
371 } | 372 } |
372 } | 373 } |
373 | 374 |
374 private void LoadRequirementsForUnitType(XmlElement elem, UnitType type) | 375 private void LoadRequirementsForUnitType(XmlElement elem, UnitType type) |
375 { | 376 { |
376 //TODO: Load requirements | 377 //TODO: Handle requirements more extensibly |
378 foreach (XmlElement extraData in WarFoundryXmlFactoryUtils.SelectNodes(elem, "race:requirements/race:requirement")) | |
379 { | |
380 string name = extraData.GetAttribute("requirementName"); | |
381 if (name == "RequiresAtLeastNUnits") { | |
382 string data = WarFoundryXmlFactoryUtils.SelectSingleElement(extraData, "race:data").InnerText; | |
383 UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(type); | |
384 req.AddUnitTypeRequirement(GetUnitTypeFromDocument(elem.OwnerDocument, data, type.Race)); | |
385 type.AddRequirement(req); | |
386 } | |
387 } | |
377 } | 388 } |
378 | 389 |
379 private void LoadExtraDataForUnitType(XmlElement elem, UnitType type) | 390 private void LoadExtraDataForUnitType(XmlElement elem, UnitType type) |
380 { | 391 { |
381 foreach (XmlElement extraData in WarFoundryXmlFactoryUtils.SelectNodes(elem, "race:extraData/race:data")) | 392 foreach (XmlElement extraData in WarFoundryXmlFactoryUtils.SelectNodes(elem, "race:extraData/race:data")) |