diff api/Objects/UnitType.cs @ 57:e0ce5578e7c2

Re #61 - Complete structure of WarFoundry API objects * Add methods for adding and getting Notes and contained UnitTypes of a UnitType * Add method to get requirements of a unit * Separate out required abilities from optional abilities * Remove UnitAbility and handle by passing a boolean to the AddAbility method
author IBBoard <dev@ibboard.co.uk>
date Tue, 07 Apr 2009 14:43:04 +0000
parents 9561ef46c6fb
children 3c77722a02b5
line wrap: on
line diff
--- a/api/Objects/UnitType.cs	Sun Apr 05 19:57:32 2009 +0000
+++ b/api/Objects/UnitType.cs	Tue Apr 07 14:43:04 2009 +0000
@@ -26,7 +26,10 @@
 		private Dictionary<string, UnitEquipmentItem> equipment = new Dictionary<string, UnitEquipmentItem>();
 		private Dictionary<string, List<UnitEquipmentItem>> equipmentExclusionGroups = new Dictionary<string, List<UnitEquipmentItem>>();
 		private List<string> equipmentKeyOrder = new List<string>();
-		private Dictionary<string, UnitAbility> abilities = new Dictionary<string, UnitAbility>();
+		private Dictionary<string, Ability> requiredAbilities = new Dictionary<string, Ability>();
+		private Dictionary<string, Ability> optionalAbilities = new Dictionary<string, Ability>();
+		private List<String> notes = new List<string>();
+		private List<UnitType> containedTypes = new List<UnitType>();
 
 
 		public UnitType(string id, string typeName, Race parentRace) : base(id, typeName)
@@ -251,71 +254,59 @@
 		/// </returns>
 		public UnitEquipmentItem[] GetEquipmentItems()
 		{
-			UnitEquipmentItem[] items = new UnitEquipmentItem[equipment.Count];
-			int i = 0;
-
-			foreach (string itemID in equipmentKeyOrder)
-			{
-				items[i++] = equipment[itemID];
-			}
-
-			return items;
+			return DictionaryUtils.ToArray<string, UnitEquipmentItem>(equipment);
 		}
-		
-		public ICollection<Ability> GetAbilities()
+
+		public UnitEquipmentItem[] GetEquipmentItemsByExclusionGroup(string group)
 		{
-			ICollection<Ability> abilitiesList = new List<Ability>();
-			
-			foreach (UnitAbility ability in abilities.Values)
+			List<UnitEquipmentItem> list = null;
+			equipmentExclusionGroups.TryGetValue(group, out list);
+
+			if (list == null)
 			{
-				abilitiesList.Add(ability.Ability);
+				return new UnitEquipmentItem[0];
 			}
-			
-			return abilitiesList;
+			else
+			{
+				return list.ToArray();
+			}
 		}
 		
 		public ICollection<Ability> GetRequiredAbilities()
 		{
-			ICollection<Ability> requiredAbilities = new List<Ability>();
-			
-			foreach (UnitAbility ability in abilities.Values)
-			{
-				if (ability.IsRequired)
-				{
-					requiredAbilities.Add(ability.Ability);
-				}
-			}
-			
-			return requiredAbilities;
+			return requiredAbilities.Values;
 		}
 		
 		public ICollection<Ability> GetOptionalAbilities()
 		{
-			ICollection<Ability> optionalAbilities = new List<Ability>();
-			
-			foreach (UnitAbility ability in abilities.Values)
-			{
-				if (!ability.IsRequired)
-				{
-					optionalAbilities.Add(ability.Ability);
-				}
-			}
-			
-			return optionalAbilities;
+			return optionalAbilities.Values;
 		}
 		
-		public void AddAbility(Ability ability)
-		{			
-			if (!abilities.ContainsKey(ability.ID))
-			{
-				UnitAbility unitAbility = new UnitAbility(ability);
-				abilities[ability.ID] = unitAbility;
+		public void AddAbility(Ability ability, bool isRequired)
+		{
+			string id = ability.ID;
+			
+			if (!requiredAbilities.ContainsKey(id) && !optionalAbilities.ContainsKey(id))
+			{				
+				if (isRequired)
+				{
+					requiredAbilities[id] = ability;
+				}
+				else
+				{
+					optionalAbilities[id] = ability;
+				}
 			}
 		}
 
 		public void AddRequirement(UnitRequirement requirement)
 		{
 			requirements.Add(requirement);
+		}
+		
+		public UnitRequirement[] Requirements
+		{
+			get { return requirements.ToArray(); }
 		}
 		
 		public List<FailedUnitRequirement> CanAddToArmy(Army army)
@@ -356,21 +347,26 @@
 			}
 			
 			return failures;
-		}
-
-		public UnitEquipmentItem[] GetEquipmentItemsByExclusionGroup(string group)
-		{
-			List<UnitEquipmentItem> list = null;
-			equipmentExclusionGroups.TryGetValue(group, out list);
-
-			if (list == null)
-			{
-				return new UnitEquipmentItem[0];
-			}
-			else
-			{
-				return list.ToArray();
-			}
+		}
+		
+		public string[] Notes
+		{
+			get { return notes.ToArray(); }
+		}
+		
+		public void AddNote(string note)
+		{
+			notes.Add(note);
+		}
+		
+		public UnitType[] ContainedUnitTypes
+		{
+			get { return containedTypes.ToArray(); }
+		}
+		
+		public void AddContainedUnitType(UnitType containedType)
+		{
+			containedTypes.Add(containedType);
 		}
 	}
 }