comparison API/Factories/Xml/WarFoundryXmlRaceFactory.cs @ 380:7036bf04e955

Re #351: Add extensible requirement handling method * Move to using registered requirement factories
author IBBoard <dev@ibboard.co.uk>
date Sat, 23 Jul 2011 20:01:26 +0000
parents 04f4c2fea356
children 8811737baebf
comparison
equal deleted inserted replaced
379:04f4c2fea356 380:7036bf04e955
395 private void LoadRequirementsForUnitType(XmlElement elem, UnitType type) 395 private void LoadRequirementsForUnitType(XmlElement elem, UnitType type)
396 { 396 {
397 foreach (XmlElement extraData in WarFoundryXmlFactoryUtils.SelectNodes(elem, "race:requirements/race:requirement")) 397 foreach (XmlElement extraData in WarFoundryXmlFactoryUtils.SelectNodes(elem, "race:requirements/race:requirement"))
398 { 398 {
399 string name = extraData.GetAttribute("requirementName"); 399 string name = extraData.GetAttribute("requirementName");
400 UnitRequiresAtLeastNUnitsRequirementFactory reqFactory = GetRequirementFactory(name); 400 IRequirementFactory reqFactory = WarFoundryLoader.GetRequirementFactory(name);
401 401
402 if (reqFactory != null) { 402 if (reqFactory != null) {
403 string data = WarFoundryXmlFactoryUtils.SelectSingleElement(extraData, "race:data").InnerText; 403 string data = WarFoundryXmlFactoryUtils.SelectSingleElement(extraData, "race:data").InnerText;
404 IRequirement req = reqFactory.CreateRequirement(type, data, this); 404 IRequirement req = reqFactory.CreateRequirement(type, data, this);
405 type.AddRequirement(req); 405 type.AddRequirement(req);
406 } 406 }
407 } 407 }
408 }
409
410 private UnitRequiresAtLeastNUnitsRequirementFactory GetRequirementFactory (string name)
411 {
412
413 UnitRequiresAtLeastNUnitsRequirementFactory factory = null;
414
415 if ("RequiresAtLeastNUnits".Equals(name))
416 {
417 factory = new UnitRequiresAtLeastNUnitsRequirementFactory();
418 }
419
420 return factory;
421 } 408 }
422 409
423 private void LoadExtraDataForUnitType(XmlElement elem, UnitType type) 410 private void LoadExtraDataForUnitType(XmlElement elem, UnitType type)
424 { 411 {
425 foreach (XmlElement extraData in WarFoundryXmlFactoryUtils.SelectNodes(elem, "race:extraData/race:data")) 412 foreach (XmlElement extraData in WarFoundryXmlFactoryUtils.SelectNodes(elem, "race:extraData/race:data"))