# HG changeset patch # User IBBoard # Date 1302364299 0 # Node ID 44a6539fadf9256ffb8d7f4a0beadf34b39b2cfc # Parent b0ba1d25f51e187a83995171370049a261b575a7 Re #27: Unit requirements * Add base interface for all requirements and extend it in existing requirements * Add stub method for getting requirements of race (UnitTypes need to be able to add them first before testing goes further) diff -r b0ba1d25f51e -r 44a6539fadf9 API/Objects/Race.cs --- a/API/Objects/Race.cs Sat Apr 09 15:14:16 2011 +0000 +++ b/API/Objects/Race.cs Sat Apr 09 15:51:39 2011 +0000 @@ -8,6 +8,7 @@ using System.Xml; using IBBoard.IO; using IBBoard.WarFoundry.API.Factories; +using IBBoard.WarFoundry.API.Objects.Requirement; namespace IBBoard.WarFoundry.API.Objects { @@ -304,5 +305,11 @@ return DictionaryUtils.ToArray(memberTypes); } } + + public ICollection GetRequirements () + { + ICollection reqs = new List(); + return reqs; + } } } diff -r b0ba1d25f51e -r 44a6539fadf9 API/Objects/Requirement/IRequirement.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/API/Objects/Requirement/IRequirement.cs Sat Apr 09 15:51:39 2011 +0000 @@ -0,0 +1,39 @@ +// This file (Requirement.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; + +namespace IBBoard.WarFoundry.API.Objects.Requirement +{ + /// + /// Base interface for a Requirement that constrains the units/equipment that can be taken in an army + /// + public interface IRequirement + { + /// + /// Checks whether the supplied WarFoundryObject can be added to the supplied army. + /// + /// + /// A Validation enum to show the result of the validation + /// + /// + /// The object that we want to add. This may be involved in the check, or it may not affect the evaluation of the requirement + /// + /// + /// The army to add the object to. + /// + Validation AllowsAdding(WarFoundryObject wfObject, Army toArmy); + + /// + /// Checks whether the supplied army is currently valid according to this requirement. + /// + /// + /// A Validation enum to show the result of the validation + /// + /// + /// The army to validate + /// + Validation ValidatesArmy(Army army); + } +} + diff -r b0ba1d25f51e -r 44a6539fadf9 API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs --- a/API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs Sat Apr 09 15:14:16 2011 +0000 +++ b/API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs Sat Apr 09 15:51:39 2011 +0000 @@ -10,7 +10,7 @@ /// /// A requirement where a WarFoundryObject requires at least N units of one or more unit types before any number of that object can be taken in an army. /// - public class RequiresAtLeastNUnitsRequirement + public class RequiresAtLeastNUnitsRequirement : IRequirement { private List requiredTypes; diff -r b0ba1d25f51e -r 44a6539fadf9 API/Objects/Requirement/RequiresNoMoreThanNOfUnitTypeRequirement.cs --- a/API/Objects/Requirement/RequiresNoMoreThanNOfUnitTypeRequirement.cs Sat Apr 09 15:14:16 2011 +0000 +++ b/API/Objects/Requirement/RequiresNoMoreThanNOfUnitTypeRequirement.cs Sat Apr 09 15:51:39 2011 +0000 @@ -10,7 +10,7 @@ /// /// A requirement where a WarFoundryObject cannot be taken in an army if more than N of a UnitType will be in the army. /// - public class RequiresNoMoreThanNOfUnitTypeRequirement + public class RequiresNoMoreThanNOfUnitTypeRequirement : IRequirement { private List limitedTypes; diff -r b0ba1d25f51e -r 44a6539fadf9 IBBoard.WarFoundry.API.csproj --- a/IBBoard.WarFoundry.API.csproj Sat Apr 09 15:14:16 2011 +0000 +++ b/IBBoard.WarFoundry.API.csproj Sat Apr 09 15:51:39 2011 +0000 @@ -191,6 +191,7 @@ +