diff api/Objects/Unit.cs @ 158:eb9a6d91a6db

Fixes #190: Mutex groups aren't honoured when adding equipment * Make "get additional equipment" method check mutex groups Also: * Line ending cleanup
author IBBoard <dev@ibboard.co.uk>
date Tue, 29 Sep 2009 19:50:46 +0000
parents 4a02c07278e7
children 81abc04b3dbe
line wrap: on
line diff
--- a/api/Objects/Unit.cs	Tue Sep 29 19:33:03 2009 +0000
+++ b/api/Objects/Unit.cs	Tue Sep 29 19:50:46 2009 +0000
@@ -220,13 +220,33 @@
 			}
 		}
 
-		public UnitEquipmentItem[] GetAllowedOptionalEquipment()
+		public UnitEquipmentItem[] GetAllowedAdditionalEquipment()
 		{
 			List<UnitEquipmentItem> list = new List<UnitEquipmentItem>();
+			List<string> existingMutexGroups = new List<string>();
+			
+			foreach (UnitEquipmentItem item in GetEquipment())
+			{
+				foreach (string mutex in item.MutexGroups)
+				{
+					existingMutexGroups.Add(mutex);
+				}
+			}
 
 			foreach (UnitEquipmentItem item in UnitType.GetEquipmentItems())
 			{
-				if (!item.IsRequired)
+				bool mutexMatch = false;
+
+				foreach (string mutex in item.MutexGroups)
+				{
+					if (existingMutexGroups.Contains(mutex))
+					{
+						mutexMatch = true;
+						break;
+					}
+				}
+
+				if (!mutexMatch)
 				{
 					list.Add(item);
 				}