Mercurial > repos > IBBoard.WarFoundry.API
diff api/Factories/Xml/WarFoundryXmlRaceFactory.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 | c11c0da01bbc |
children | 4a02c07278e7 |
line wrap: on
line diff
--- a/api/Factories/Xml/WarFoundryXmlRaceFactory.cs Sat Sep 26 18:48:36 2009 +0000 +++ b/api/Factories/Xml/WarFoundryXmlRaceFactory.cs Sat Sep 26 19:51:11 2009 +0000 @@ -154,8 +154,32 @@ if (equipItem!=null) { - string mutexGroup = equip.GetAttribute("exclusivityGroup"); - UnitEquipmentItem unitEquipItem = new UnitEquipmentItem(equipItem, type, mutexGroup); + string mutexGroupString = equip.GetAttribute("exclusivityGroups"); + string[] mutexGroups; + + if (mutexGroupString == "") + { + mutexGroupString = equip.GetAttribute("exclusivityGroup"); + } + + if (mutexGroupString != "") + { + string[] groups = mutexGroupString.Split(','); + int groupCount = groups.Length; + + for (int i = 0; i < groupCount; i++) + { + groups[i] = groups[i].Trim(); + } + + mutexGroups = groups; + } + else + { + mutexGroups = new string[0]; + } + + UnitEquipmentItem unitEquipItem = new UnitEquipmentItem(equipItem, type, mutexGroups); unitEquipItem.RoundNumberUp = equip.GetAttribute("roundDirection").Equals("up");