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" />