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"))