# HG changeset patch # User IBBoard # Date 1274299627 0 # Node ID 35dc0603035551e93a3d62da1275bed9f4a64c9e # Parent 3b395ab8784db808af86d06586c1a0dd3d4aebbe Re #270: Add multiple categories to API * Add "category" attribute to army schema * Add method to define category when adding unit to army * Make army loading check new attribute and assign to correct category or main category TODO: Write out category of unit to army file diff -r 3b395ab8784d -r 35dc06030355 api/Factories/Xml/WarFoundryXmlArmyParser.cs --- a/api/Factories/Xml/WarFoundryXmlArmyParser.cs Wed May 19 19:23:29 2010 +0000 +++ b/api/Factories/Xml/WarFoundryXmlArmyParser.cs Wed May 19 20:07:07 2010 +0000 @@ -79,9 +79,17 @@ string name = unitElem.GetAttribute("unitName"); int size = XmlTools.GetIntValueFromAttribute(unitElem, "size"); + + string catID = unitElem.GetAttribute("category"); + Category cat = army.Race.GetCategory(catID); + + if (cat == null) + { + cat = unitType.MainCategory; + } - Unit unit = new Unit(id, name, size, unitType, army.GetCategory(unitType.MainCategory)); - army.AddUnit(unit); + Unit unit = new Unit(id, name, size, unitType, army.GetCategory(cat)); + army.AddUnit(unit, cat); units.Add(id, unit); LoadUnitEquipment(unitElem, unit); diff -r 3b395ab8784d -r 35dc06030355 api/Objects/Army.cs --- a/api/Objects/Army.cs Wed May 19 19:23:29 2010 +0000 +++ b/api/Objects/Army.cs Wed May 19 20:07:07 2010 +0000 @@ -169,7 +169,13 @@ public void AddUnit(Unit unit) { - ArmyCategory armyCat = GetCategory(unit.UnitType.MainCategory); + Category category = unit.UnitType.MainCategory; + AddUnit(unit, category); + } + + public void AddUnit(Unit unit, Category category) + { + ArmyCategory armyCat = GetCategory(category); armyCat.AddUnit(unit); } diff -r 3b395ab8784d -r 35dc06030355 schemas/army.xsd --- a/schemas/army.xsd Wed May 19 19:23:29 2010 +0000 +++ b/schemas/army.xsd Wed May 19 20:07:07 2010 +0000 @@ -92,6 +92,7 @@ +