Mercurial > repos > IBBoard.WarFoundry.API
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")) |