Mercurial > repos > IBDev-IBBoard.WarFoundry.API
diff api/Objects/UnitType.cs @ 152:0c0e14f03785
Re #180: Add multiple mutex groups
* Add multiple mutex groups to UnitEquipmentItem
* Add new attribute to Race schema
* Make everywhere handle multiple groups instead of assuming one
* Make factory load new attribute then fall back to old (deprecated) attribute
* Add method to Unit to get the blocking items (useful for future UI work to say "replace X and Y with Z")
* Add IsMutuallyExclusive method to UnitEquipmentItem to determine whether mutex groups overlap
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 26 Sep 2009 19:51:11 +0000 |
parents | 5145b7c61ae0 |
children | 4a02c07278e7 |
line wrap: on
line diff
--- a/api/Objects/UnitType.cs Sat Sep 26 18:48:36 2009 +0000 +++ b/api/Objects/UnitType.cs Sat Sep 26 19:51:11 2009 +0000 @@ -233,15 +233,15 @@ { equipment.Add(item.ID, item); equipmentKeyOrder.Add(item.ID); - AddToMutexGroup(item); + AddToMutexGroups(item); } } - private void AddToMutexGroup(UnitEquipmentItem item) + private void AddToMutexGroups(UnitEquipmentItem item) { - string mutexGroup = item.MutexGroup; + string[] mutexGroups = item.MutexGroups; - if (mutexGroup!="" && mutexGroup!=null) + foreach (string mutexGroup in mutexGroups) { List<UnitEquipmentItem> items = DictionaryUtils.GetValue(equipmentExclusionGroups, mutexGroup); @@ -295,17 +295,25 @@ } public UnitEquipmentItem[] GetEquipmentItemsByExclusionGroup(string group) - { - List<UnitEquipmentItem> list = DictionaryUtils.GetValue(equipmentExclusionGroups, group); + { + return GetEquipmentItemsByExclusionGroups(new string[] { group }); + } - if (list == null) - { - return new UnitEquipmentItem[0]; - } - else - { - return list.ToArray(); - } + public UnitEquipmentItem[] GetEquipmentItemsByExclusionGroups(string[] groups) + { + List<UnitEquipmentItem> list = new List<UnitEquipmentItem>(); + + foreach (string group in groups) + { + List<UnitEquipmentItem> groupList = DictionaryUtils.GetValue(equipmentExclusionGroups, group); + + if (groupList != null) + { + list.AddRange(groupList); + } + } + + return list.ToArray(); } public bool IsRatioLimitedEquipmentItem(EquipmentItem item)