Mercurial > repos > IBDev-IBBoard.WarFoundry.API
changeset 92:729d9e54162c
Re #111: "Replace" button doesn't always enable
* Implement better fix:
* Make UnitEquipmentItem ID based on unit type ID and equipment item ID
* Make UnitEquipmentItem require UnitType at construction again
* Remove setter from EquipmentItemForUnit
* Make AddEquipmentItem method internal so that the UnitEquipmentItem and not the factory is responsible for setting up the reverse link
no-open-ticket
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Fri, 07 Aug 2009 19:49:21 +0000 |
parents | 571d8ddc7d9a |
children | 789dfab13449 |
files | api/Factories/Xml/WarFoundryXmlRaceFactory.cs api/Objects/UnitEquipmentItem.cs api/Objects/UnitType.cs |
diffstat | 3 files changed, 24 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/api/Factories/Xml/WarFoundryXmlRaceFactory.cs Fri Aug 07 19:22:08 2009 +0000 +++ b/api/Factories/Xml/WarFoundryXmlRaceFactory.cs Fri Aug 07 19:49:21 2009 +0000 @@ -156,7 +156,7 @@ if (equipItem!=null) { - UnitEquipmentItem unitEquipItem = new UnitEquipmentItem(equipItem); + UnitEquipmentItem unitEquipItem = new UnitEquipmentItem(equipItem, type); unitEquipItem.MutexGroup = equip.GetAttribute("exclusivityGroup"); unitEquipItem.RoundNumberUp = equip.GetAttribute("roundDirection").Equals("up"); @@ -223,8 +223,6 @@ { throw new InvalidFileException("Attribute 'costRounding' of unit equipment item " + id + " for " + type.Name + " was not a valid rounding type", e); } - - type.AddEquipmentItem(unitEquipItem); } else {
--- a/api/Objects/UnitEquipmentItem.cs Fri Aug 07 19:22:08 2009 +0000 +++ b/api/Objects/UnitEquipmentItem.cs Fri Aug 07 19:49:21 2009 +0000 @@ -25,20 +25,36 @@ private string mutexGroup; private UnitType unitType; - public UnitEquipmentItem(EquipmentItem equipmentItem) + public UnitEquipmentItem(EquipmentItem equipmentItem, UnitType equipmentFor) { item = equipmentItem; + unitType = equipmentFor; + unitType.AddEquipmentItem(this); } public override string Name { - get { + get + { return item.Name; } - set { + set + { base.Name = value; } } + + public override string ID { + get + { + return (EquipmentForUnit == null ? base.ID : EquipmentForUnit.ID) + EquipmentItemID; + } + set + { + base.ID = value; + } + } + public string EquipmentItemID { @@ -92,14 +108,6 @@ public UnitType EquipmentForUnit { get { return unitType; } - set - { - if (value != null) - { - unitType = value; - unitType.AddEquipmentItem(this); - } - } } public bool IsRatioLimit @@ -221,7 +229,7 @@ { if (amount == WarFoundryCore.INFINITY) { - return "all"; + return "all"; //TODO: Translate } else {
--- a/api/Objects/UnitType.cs Fri Aug 07 19:22:08 2009 +0000 +++ b/api/Objects/UnitType.cs Fri Aug 07 19:49:21 2009 +0000 @@ -227,14 +227,14 @@ return stats.GetStatValue(statName); } - public void AddEquipmentItem(UnitEquipmentItem item) - { + internal void AddEquipmentItem(UnitEquipmentItem item) + { + Console.WriteLine("Add " + item.ID + " to " + Name); if (!equipment.ContainsKey(item.ID)) { equipment.Add(item.ID, item); equipmentKeyOrder.Add(item.ID); AddToMutexGroup(item); - item.EquipmentForUnit = this; } }