Mercurial > repos > IBBoard.WarFoundry.API
changeset 376:e50682387d63
Re #353: Handle unloaded units being referenced outside factory
* Remove inheritance prior to creation of more generalised sub-factory inheritance
* Create helper class that contains the only common code from old inheritance to keep duplication down
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 02 Jul 2011 19:58:28 +0000 |
parents | d9bf78a8f517 |
children | c3b0b28bad48 |
files | API/Factories/Requirement/UnitRequiresAtLeastNUnitsRequirementFactory.cs API/Factories/Xml/AbstractStagedLoadedSubFactory.cs API/Factories/Xml/CategoryLoader.cs API/Factories/Xml/WarFoundryXmlGameSystemFactory.cs API/Factories/Xml/WarFoundryXmlRaceFactory.cs IBBoard.WarFoundry.API.csproj |
diffstat | 6 files changed, 41 insertions(+), 45 deletions(-) [+] |
line wrap: on
line diff
--- a/API/Factories/Requirement/UnitRequiresAtLeastNUnitsRequirementFactory.cs Sat Jul 02 15:10:17 2011 +0000 +++ b/API/Factories/Requirement/UnitRequiresAtLeastNUnitsRequirementFactory.cs Sat Jul 02 19:58:28 2011 +0000 @@ -43,7 +43,7 @@ { req.AddUnitTypeRequirement(unitType, Int32.Parse(amount)); } - catch (FormatException ex) + catch (FormatException) { throw new InvalidRequirementException(String.Format("Invalid amount '{0}' for unit type '{1}' for 'Requires at least N units' requirement", amount, unitID)); }
--- a/API/Factories/Xml/AbstractStagedLoadedSubFactory.cs Sat Jul 02 15:10:17 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -// This file (AbstractStagedLoadedSubFactory.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2009 IBBoard -// -// The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. - -using System; -using System.Xml; -using IBBoard.Xml; -using IBBoard.WarFoundry.API.Objects; - -namespace IBBoard.WarFoundry.API.Factories.Xml -{ - public class AbstractStagedLoadedSubFactory - { - protected WarFoundryXmlFactory mainFactory; - - protected AbstractStagedLoadedSubFactory(WarFoundryXmlFactory factory) - { - mainFactory = factory; - } - - protected Category CreateCategoryFromElement(XmlElement elem) - { - string id = elem.GetAttribute("id"); - string name = elem.GetAttribute("name"); - Category cat = new Category(id, name); - cat.MaximumPercentage = XmlTools.GetIntValueFromAttribute(elem, "maxPercentage"); - cat.MinimumPercentage = XmlTools.GetIntValueFromAttribute(elem, "minPercentage"); - cat.MaximumPoints = XmlTools.GetIntValueFromAttribute(elem, "maxPoints"); - cat.MinimumPoints = XmlTools.GetIntValueFromAttribute(elem, "minPoints"); - return cat; - } - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/API/Factories/Xml/CategoryLoader.cs Sat Jul 02 19:58:28 2011 +0000 @@ -0,0 +1,26 @@ +// This file (CategoryLoader.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2011 IBBoard +// +// The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. +using System; +using IBBoard.WarFoundry.API.Objects; +using IBBoard.Xml; +using System.Xml; + +namespace IBBoard.WarFoundry.API.Factories.Xml +{ + public class CategoryLoader + { + public static Category CreateFromElement(XmlElement elem) + { + string id = elem.GetAttribute("id"); + string name = elem.GetAttribute("name"); + Category cat = new Category(id, name); + cat.MaximumPercentage = XmlTools.GetIntValueFromAttribute(elem, "maxPercentage"); + cat.MinimumPercentage = XmlTools.GetIntValueFromAttribute(elem, "minPercentage"); + cat.MaximumPoints = XmlTools.GetIntValueFromAttribute(elem, "maxPoints"); + cat.MinimumPoints = XmlTools.GetIntValueFromAttribute(elem, "minPoints"); + return cat; + } + } +} +
--- a/API/Factories/Xml/WarFoundryXmlGameSystemFactory.cs Sat Jul 02 15:10:17 2011 +0000 +++ b/API/Factories/Xml/WarFoundryXmlGameSystemFactory.cs Sat Jul 02 19:58:28 2011 +0000 @@ -15,12 +15,14 @@ /// <summary> /// A sub-factory specifically for loading GameSystems from WarFoundry XML files /// </summary> - public class WarFoundryXmlGameSystemFactory : AbstractStagedLoadedSubFactory + public class WarFoundryXmlGameSystemFactory { - private Dictionary<GameSystem, XmlDocument> extraData = new Dictionary<GameSystem, XmlDocument>(); + private Dictionary<GameSystem, XmlDocument> extraData = new Dictionary<GameSystem, XmlDocument>(); + private WarFoundryXmlFactory mainFactory; - public WarFoundryXmlGameSystemFactory(WarFoundryXmlFactory factory) : base(factory) - { + public WarFoundryXmlGameSystemFactory(WarFoundryXmlFactory factory) + { + this.mainFactory = factory; } private void StoreExtraData(GameSystem wfObject, XmlElement elem) @@ -74,7 +76,7 @@ { foreach (XmlElement cat in WarFoundryXmlFactoryUtils.SelectNodes(elem, "/system:system/system:categories/cat:cat")) { - system.AddCategory(CreateCategoryFromElement(cat)); + system.AddCategory(CategoryLoader.CreateFromElement(cat)); } }
--- a/API/Factories/Xml/WarFoundryXmlRaceFactory.cs Sat Jul 02 15:10:17 2011 +0000 +++ b/API/Factories/Xml/WarFoundryXmlRaceFactory.cs Sat Jul 02 19:58:28 2011 +0000 @@ -20,14 +20,15 @@ /// <summary> /// A sub-factory for loading WarFoundry Race XML files /// </summary> - public class WarFoundryXmlRaceFactory : AbstractStagedLoadedSubFactory + public class WarFoundryXmlRaceFactory { private Dictionary<Race, XmlDocument> extraData = new Dictionary<Race, XmlDocument>(); - private WarFoundryXmlLimitParser limitParser = new WarFoundryXmlLimitParser(); + private WarFoundryXmlLimitParser limitParser = new WarFoundryXmlLimitParser(); + private WarFoundryXmlFactory mainFactory; - public WarFoundryXmlRaceFactory(WarFoundryXmlFactory factory) : base (factory) + public WarFoundryXmlRaceFactory(WarFoundryXmlFactory factory) { - //Do nothing special + this.mainFactory = factory; } private void StoreExtraData(Race wfObject, XmlElement elem) @@ -102,7 +103,7 @@ private Category CreateCategoryFromElement(XmlElement elem, Race parentRace) { - Category cat = CreateCategoryFromElement(elem); + Category cat = CategoryLoader.CreateFromElement(elem); parentRace.AddCategory(cat); return cat; }
--- a/IBBoard.WarFoundry.API.csproj Sat Jul 02 15:10:17 2011 +0000 +++ b/IBBoard.WarFoundry.API.csproj Sat Jul 02 19:58:28 2011 +0000 @@ -146,7 +146,6 @@ <Compile Include="API\Factories\Xml\WarFoundryXmlRaceFactory.cs" /> <Compile Include="API\Factories\Xml\WarFoundryXmlArmyFactory.cs" /> <Compile Include="API\Factories\Xml\WarFoundryXmlFactoryUtils.cs" /> - <Compile Include="API\Factories\Xml\AbstractStagedLoadedSubFactory.cs" /> <Compile Include="API\Objects\InvalidContainershipException.cs" /> <Compile Include="API\Objects\CompositeEquipmentItem.cs" /> <Compile Include="API\Objects\AbstractUnitEquipmentItemSelection.cs" /> @@ -181,6 +180,7 @@ <Compile Include="API\Objects\Requirement\AbstractRequirement.cs" /> <Compile Include="API\Factories\Requirement\UnitRequiresAtLeastNUnitsRequirementFactory.cs" /> <Compile Include="API\Factories\Requirement\InvalidRequirementException.cs" /> + <Compile Include="API\Factories\Xml\CategoryLoader.cs" /> </ItemGroup> <ItemGroup> <Reference Include="System.Xml" />