Mercurial > repos > snowblizz-super-API-ideas
changeset 288:5c4b3d91795f WarFoundry_v0.1
* Add extra notification required by #308 to make sure that unit name changes when translation changes in GTK# UI
no-open-ticket
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 02 Jan 2011 16:04:49 +0000 |
parents | 3e74bf7b0f72 |
children | 650bbe79b884 |
files | api/Objects/Unit.cs |
diffstat | 1 files changed, 68 insertions(+), 55 deletions(-) [+] |
line wrap: on
line diff
--- a/api/Objects/Unit.cs Sun Jan 02 15:59:13 2011 +0000 +++ b/api/Objects/Unit.cs Sun Jan 02 16:04:49 2011 +0000 @@ -25,33 +25,38 @@ private Dictionary<UnitEquipmentItem, AbstractUnitEquipmentItemSelection> equipment = new Dictionary<UnitEquipmentItem, AbstractUnitEquipmentItemSelection>(); private Dictionary<string, List<AbstractUnitEquipmentItemSelection>> equipmentSlots = new Dictionary<string, List<AbstractUnitEquipmentItemSelection>>(); private List<Unit> containedUnits = new List<Unit>(); + public event DoubleValChangedDelegate PointsValueChanged; public event IntValChangedDelegate UnitSizeChanged; public event DoubleValChangedDelegate UnitEquipmentAmountChanged; - public Unit(UnitType unitType, ArmyCategory parentArmyCat) : this(unitType, unitType.MinSize, parentArmyCat) { } + public Unit(UnitType unitType, ArmyCategory parentArmyCat) : this(unitType, unitType.MinSize, parentArmyCat) + { + //Do nothing extra + } public Unit(UnitType unitType, int startSize, ArmyCategory parentArmyCat) : this("", "", startSize, unitType, parentArmyCat) { - SetInitialEquipment(); + SetInitialEquipment(); UnitSizeChanged += new IntValChangedDelegate(RefreshUnitEquipmentAmounts); } - + public Unit(string id, string name, int startSize, UnitType unitType, ArmyCategory parentArmyCat) : base(id, name) { Category = parentArmyCat; type = unitType; Size = startSize; CalcCost(); - UnitEquipmentAmountChanged+= new DoubleValChangedDelegate(UnitEquipmentAmountChangedHandler); - UnitSizeChanged+= new IntValChangedDelegate(UnitSizeChangedHandler); + UnitEquipmentAmountChanged += new DoubleValChangedDelegate(UnitEquipmentAmountChangedHandler); + UnitSizeChanged += new IntValChangedDelegate(UnitSizeChangedHandler); + Translation.TranslationChanged += HandleTranslationChanged; } - + private void UnitEquipmentAmountChangedHandler(WarFoundryObject obj, double oldVal, double newVal) { CalcCost(); } - + private void UnitSizeChangedHandler(WarFoundryObject obj, int oldVal, int newVal) { CalcCost(); @@ -81,6 +86,14 @@ } } + private void HandleTranslationChanged() + { + if (type != null && HasDefaultName() && size != 1) + { + OnNameChanged(null, DefaultName()); + } + } + private void SetInitialEquipment() { foreach (UnitEquipmentItem unitEquip in UnitType.GetEquipmentItems()) @@ -114,12 +127,12 @@ points += equipSelection.TotalCost; } - if (oldpoints!=points) + if (oldpoints != points) { OnPointsValueChanged(oldpoints, points); } } - + public int AdditionalTroopers { get { return Math.Max(Size - type.BaseSize, 0); } @@ -128,12 +141,12 @@ public int Size { get { return size; } - set + set { - if (value!=size) + if (value != size) { int oldValue = size; - size = (value>0 ? value : 1); + size = (value > 0 ? value : 1); OnUnitSizeChanged(oldValue, size); } } @@ -168,10 +181,10 @@ { get { return Points; } } - + public double Points { - get + get { if (points == 0) { @@ -181,12 +194,12 @@ return points; } } - + public Unit[] ContainedUnits { get { return containedUnits.ToArray(); } } - + public void AddContainedUnit(Unit unit) { if (UnitType.CanContainUnit(unit)) @@ -203,12 +216,12 @@ throw new InvalidContainershipException(this, unit); } } - + public void RemoveContainedUnit(Unit unit) { containedUnits.Remove(unit); } - + public Unit ParentUnit { get { return parentUnit; } @@ -218,7 +231,7 @@ { parentUnit = value; - if (value!=null) + if (value != null) { value.AddContainedUnit(this); } @@ -241,7 +254,7 @@ { List<EquipmentItem> list = new List<EquipmentItem>(); - foreach(UnitEquipmentItem item in GetEquipment()) + foreach (UnitEquipmentItem item in GetEquipment()) { if (item.IsRequired) { @@ -292,10 +305,10 @@ { return ""; } - + public void SetEquipmentAmount(UnitEquipmentItem equip, int amount) { - if (amount <1 && amount != WarFoundryCore.INFINITY) + if (amount < 1 && amount != WarFoundryCore.INFINITY) { amount = 0; } @@ -330,7 +343,7 @@ } } } - + private void AddEquipmentAmount(UnitEquipmentItem equip, int amount) { AbstractUnitEquipmentItemSelection newItem = new UnitEquipmentNumericSelection(this, equip, amount); @@ -345,12 +358,12 @@ selections.Add(newItem); } - + public void SetEquipmentRatio(UnitEquipmentItem equip, double ratio) { if (!equip.IsRatioLimit) { - throw new InvalidOperationException("Equipment with ID "+equip.ID+" for unit of type "+UnitType.ID+" has an absolute limit, not a ratio limit"); + throw new InvalidOperationException("Equipment with ID " + equip.ID + " for unit of type " + UnitType.ID + " has an absolute limit, not a ratio limit"); } if (ratio > 100) @@ -391,10 +404,10 @@ } } } - + private void AddEquipmentRatio(UnitEquipmentItem equip, double ratio) { - UnitEquipmentRatioSelection newItem = new UnitEquipmentRatioSelection (this, equip, ratio); + UnitEquipmentRatioSelection newItem = new UnitEquipmentRatioSelection(this, equip, ratio); equipment[equip] = newItem; List<AbstractUnitEquipmentItemSelection> selections = DictionaryUtils.GetValue(equipmentSlots, equip.SlotName); @@ -406,21 +419,21 @@ selections.Add(newItem); } - + private void RemoveEquipmentItem(UnitEquipmentItem equip) { double oldAmount = UnitEquipmentUtil.GetEquipmentAmount(this, equip); if (oldAmount != 0) { - AbstractUnitEquipmentItemSelection selection = DictionaryUtils.GetValue (equipment, equip); + AbstractUnitEquipmentItemSelection selection = DictionaryUtils.GetValue(equipment, equip); equipment.Remove(equip); - List<AbstractUnitEquipmentItemSelection> slotSelections = DictionaryUtils.GetValue (equipmentSlots, equip.SlotName); + List<AbstractUnitEquipmentItemSelection> slotSelections = DictionaryUtils.GetValue(equipmentSlots, equip.SlotName); slotSelections.Remove(selection); OnUnitEquipmentAmountChanged(equip, oldAmount, 0); } } - + public bool CanEquipWithItem(UnitEquipmentItem item) { string[] mutexes = item.MutexGroups; @@ -451,7 +464,7 @@ private void OnPointsValueChanged(double oldValue, double newValue) { - if (PointsValueChanged!=null) + if (PointsValueChanged != null) { PointsValueChanged(this, oldValue, newValue); } @@ -459,7 +472,7 @@ private void OnUnitSizeChanged(int oldValue, int newValue) { - if (UnitSizeChanged!=null) + if (UnitSizeChanged != null) { UnitSizeChanged(this, oldValue, newValue); } @@ -467,7 +480,7 @@ private void OnUnitEquipmentAmountChanged(UnitEquipmentItem equip, double oldValue, double newValue) { - if (UnitEquipmentAmountChanged!=null) + if (UnitEquipmentAmountChanged != null) { UnitEquipmentAmountChanged(equip, oldValue, newValue); } @@ -478,7 +491,7 @@ { get { return UnitType.UnitStatsArray; } } - + public Stat[][] UnitStatsArrays { get { return UnitType.UnitStatsArrays; } @@ -489,15 +502,15 @@ { get { return UnitType.UnitStatsArrayWithName; } } - + public Stat[][] UnitStatsArraysWithName { get { return UnitType.UnitStatsArraysWithName; } } - + public string[] UnitStatsArrayIDs { - get + get { return UnitType.UnitStatsArrayIDs; } @@ -508,7 +521,7 @@ return UnitType.GetStatValue(statName); } - public int GetEquipmentAmountInSlot (string slotName) + public int GetEquipmentAmountInSlot(string slotName) { int amount = 0; @@ -558,13 +571,13 @@ } } - private int GetSelectionTotal (List<AbstractUnitEquipmentItemSelection> selections) + private int GetSelectionTotal(List<AbstractUnitEquipmentItemSelection> selections) { int amount = 0; foreach (AbstractUnitEquipmentItemSelection selection in selections) { - amount+= selection.NumberTaken; + amount += selection.NumberTaken; } return amount; @@ -578,20 +591,20 @@ get { return UnitType.GetRequiredAbilities(); - } - } - - private void RefreshUnitEquipmentAmounts(WarFoundryObject obj, int oldValue, int newValue) - { - foreach (UnitEquipmentItem item in equipment.Keys) - { - AbstractUnitEquipmentItemSelection selection = equipment[item]; - - if (selection is UnitEquipmentRatioSelection) - { - OnUnitEquipmentAmountChanged(item, selection.AmountTaken, selection.AmountTaken); - } - } + } + } + + private void RefreshUnitEquipmentAmounts(WarFoundryObject obj, int oldValue, int newValue) + { + foreach (UnitEquipmentItem item in equipment.Keys) + { + AbstractUnitEquipmentItemSelection selection = equipment[item]; + + if (selection is UnitEquipmentRatioSelection) + { + OnUnitEquipmentAmountChanged(item, selection.AmountTaken, selection.AmountTaken); + } + } } } }