Mercurial > repos > snowblizz-super-API-ideas
changeset 347:44a6539fadf9
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)
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 09 Apr 2011 15:51:39 +0000 |
parents | b0ba1d25f51e |
children | d34ae0057a39 |
files | API/Objects/Race.cs API/Objects/Requirement/IRequirement.cs API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs API/Objects/Requirement/RequiresNoMoreThanNOfUnitTypeRequirement.cs IBBoard.WarFoundry.API.csproj |
diffstat | 5 files changed, 49 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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<IRequirement> GetRequirements () + { + ICollection<IRequirement> reqs = new List<IRequirement>(); + return reqs; + } } }
--- /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 +{ + /// <summary> + /// Base interface for a Requirement that constrains the units/equipment that can be taken in an army + /// </summary> + public interface IRequirement + { + /// <summary> + /// Checks whether the supplied WarFoundryObject can be added to the supplied army. + /// </summary> + /// <returns> + /// A <code>Validation</code> enum to show the result of the validation + /// </returns> + /// <param name='wfObject'> + /// The object that we want to add. This may be involved in the check, or it may not affect the evaluation of the requirement + /// </param> + /// <param name='toArmy'> + /// The army to add the object to. + /// </param> + Validation AllowsAdding(WarFoundryObject wfObject, Army toArmy); + + /// <summary> + /// Checks whether the supplied army is currently valid according to this requirement. + /// </summary> + /// <returns> + /// A <code>Validation</code> enum to show the result of the validation + /// </returns> + /// <param name='toValidate'> + /// The army to validate + /// </param> + Validation ValidatesArmy(Army army); + } +} +
--- 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 @@ /// <summary> /// 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. /// </summary> - public class RequiresAtLeastNUnitsRequirement + public class RequiresAtLeastNUnitsRequirement : IRequirement { private List<UnitCountRequirementData> requiredTypes;
--- 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 @@ /// <summary> /// A requirement where a WarFoundryObject cannot be taken in an army if more than N of a UnitType will be in the army. /// </summary> - public class RequiresNoMoreThanNOfUnitTypeRequirement + public class RequiresNoMoreThanNOfUnitTypeRequirement : IRequirement { private List<UnitCountRequirementData> limitedTypes;
--- 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 @@ <Compile Include="API\Objects\Requirement\UnitRequiresAtLeastNUnitsRequirement.cs" /> <Compile Include="API\Objects\Requirement\Validation.cs" /> <Compile Include="API\Objects\Requirement\UnitRequiresNoMoreThanNOfUnitTypeRequirement.cs" /> + <Compile Include="API\Objects\Requirement\IRequirement.cs" /> </ItemGroup> <ItemGroup> <Reference Include="System.Xml" />