# HG changeset patch # User IBBoard # Date 1308061634 0 # Node ID e10630f39ec2d708763a5cc11f6e9cb93dbf9cc5 # Parent 2f8b2467ba9977479c71ff5aae2651dd1b7caa85 Re #351: Add extensible requirement handling method * Add handling of different requirements: * Multiple unit types * Unit types with numbers diff -r 2f8b2467ba99 -r e10630f39ec2 API/Factories/Requirement/UnitRequiresAtLeastNUnitsRequirementFactory.cs --- a/API/Factories/Requirement/UnitRequiresAtLeastNUnitsRequirementFactory.cs Tue Jun 14 13:58:16 2011 +0000 +++ b/API/Factories/Requirement/UnitRequiresAtLeastNUnitsRequirementFactory.cs Tue Jun 14 14:27:14 2011 +0000 @@ -14,12 +14,29 @@ //Do nothing special } - public UnitRequiresAtLeastNUnitsRequirement CreateRequirement (UnitType type, string data) + public UnitRequiresAtLeastNUnitsRequirement CreateRequirement(UnitType type, string data) { UnitRequiresAtLeastNUnitsRequirement req = new UnitRequiresAtLeastNUnitsRequirement(type); - req.AddUnitTypeRequirement(type.Race.GetUnitType(data)); + Race race = type.Race; + AddRequirements(req, race, data); return req; } + + private void AddRequirements(UnitRequiresAtLeastNUnitsRequirement req, Race race, string data) + { + foreach (string requirement in data.Split('|')) + { + string[] requirementParts = requirement.Split(':'); + if (requirementParts.Length == 2) + { + req.AddUnitTypeRequirement(race.GetUnitType(requirementParts[0]), Int32.Parse(requirementParts[1])); + } + else + { + req.AddUnitTypeRequirement(race.GetUnitType(requirementParts[0])); + } + } + } } }