Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.WinForms
diff UI/EquipmentAmountControl.cs @ 82:9dc22147c2db
Re #204: Use new limits in WinForms UI
* Convert equipment amount control over to new limits
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Thu, 29 Oct 2009 20:49:44 +0000 |
parents | e749b748e7ea |
children | 6d5cb8c7b6ed |
line wrap: on
line diff
--- a/UI/EquipmentAmountControl.cs Mon Oct 26 20:56:09 2009 +0000 +++ b/UI/EquipmentAmountControl.cs Thu Oct 29 20:49:44 2009 +0000 @@ -9,6 +9,7 @@ using IBBoard.Limits; using IBBoard.WarFoundry.API; using IBBoard.WarFoundry.API.Objects; +using IBBoard.WarFoundry.API.Util; namespace IBBoard.WarFoundry.GUI.WinForms.UI { @@ -16,6 +17,7 @@ { private Unit unit; private UnitEquipmentItem equip; + public event EventHandler ValueChanged; public EquipmentAmountControl() { @@ -34,8 +36,6 @@ SetUnitEquipmentItemAmount(); } - public event EventHandler ValueChanged; - private void OnValueChanged() { if (ValueChanged != null) @@ -48,62 +48,23 @@ { if (equip != null) { - AbstractLimit limit = unit.UnitType.GetEquipmentSlotLimit(equip.SlotName); + bool equipIsRatioLimit = UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip); + double maxPercent = UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip); + double minPercent = UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip); + int maxNumber = UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip); + int minNumber = UnitEquipmentUtil.GetMinEquipmentCount(unit, equip); - if (equip.IsRatioLimit && limit is IPercentageLimit) - { - double minPercent = ((IPercentageLimit)equip.MinLimit).Percentage; - double maxPercent = ((IPercentageLimit)equip.MaxLimit).Percentage; - int minNumber = (int) CalculateNumericValueFromPercentage(minPercent); - int maxNumber = (int) CalculateNumericValueFromPercentage(maxPercent); - - rbEquipAll.Enabled = maxPercent == 100; - SetUpDownControlMinMaxes(minPercent, maxPercent, minNumber, maxNumber); - SetEquipmentAmountsFromPercentage(minPercent); + SetUpDownControlMinMaxes(minPercent, maxPercent, minNumber, maxNumber); + SetEquipmentAmountsFromPercentage(equipIsRatioLimit ? minPercent : minNumber); - if (minPercent == 100) - { - rbEquipAll.Checked = true; - percentage.Enabled = false; - rbPercentage.Enabled = false; - numeric.Enabled = false; - rbNumeric.Enabled = false; - } - else - { - rbPercentage.Checked = true; - percentage.Enabled = true; - rbPercentage.Enabled = true; - numeric.Enabled = true; - rbNumeric.Enabled = true; - } - } - else - { - int minNumber = equip.MinLimit.GetLimit(unit.Size); - int maxNumber = GetMaxNumber(limit); - double minPercent = (double) CalcualtePercentageValueFromNumber(minNumber); - double maxPercent = (double) CalcualtePercentageValueFromNumber(maxNumber); - - percentage.Enabled = false; - rbPercentage.Enabled = false; - rbEquipAll.Enabled = maxNumber == WarFoundryCore.INFINITY; - - SetUpDownControlMinMaxes(minPercent, maxPercent, minNumber, maxNumber); - SetEquipmentAmountsFromNumber(minNumber); - - if (minNumber == WarFoundryCore.INFINITY) - { - numeric.Enabled = false; - rbNumeric.Enabled = false; - } - else - { - rbNumeric.Checked = true; - numeric.Enabled = true; - rbNumeric.Enabled = true; - } - } + rbEquipAll.Enabled = equipIsRatioLimit && maxPercent == 100; + rbEquipAll.Checked = equipIsRatioLimit && minPercent == 100; + percentage.Enabled = equipIsRatioLimit; + rbPercentage.Enabled = percentage.Enabled; + rbPercentage.Checked = equipIsRatioLimit && !rbEquipAll.Checked; + numeric.Enabled = !equipIsRatioLimit || minPercent != 100; + rbNumeric.Enabled = numeric.Enabled; + rbNumeric.Checked = !equipIsRatioLimit; } else { @@ -111,19 +72,6 @@ } } - private int GetMaxNumber(AbstractLimit limit) - { - int maxNumber = equip.MaxLimit.GetLimit(unit.Size); - - if (!(limit is UnlimitedLimit)) - { - int slotMax = limit.GetLimit(unit.Size) - unit.GetEquipmentAmountInSlot(equip.SlotName); - maxNumber = Math.Min(slotMax, maxNumber); - } - - return maxNumber; - } - private void SetUpDownControlMinMaxes(double minPercent, double maxPercent, int minNumber, int maxNumber) { percentage.ValueChanged -= percentage_ValueChanged; @@ -141,8 +89,8 @@ private void SetUpDownControlMinMax(NumericUpDown upDownControl, decimal min, decimal max) { - upDownControl.Minimum = (min == WarFoundryCore.INFINITY ? unit.Size : min); - upDownControl.Maximum = (max == WarFoundryCore.INFINITY ? unit.Size : max); + upDownControl.Minimum = min; + upDownControl.Maximum = max; } private void rbEquipAll_CheckedChanged(object sender, EventArgs e) @@ -192,18 +140,7 @@ private decimal CalcualtePercentageValueFromNumber(int number) { - decimal percent = 0; - - if (number > 0) - { - percent = (decimal) Math.Round((number / (unit.Size * 1.0)) * 100, 1); - } - else if (number == WarFoundryCore.INFINITY) - { - percent = 100; - } - - return percent; + return (decimal) Math.Round((number / (unit.Size * 1.0)) * 100, 1); } public double EquipmentAmount @@ -222,7 +159,7 @@ } else if (rbEquipAll.Checked) { - val = WarFoundryCore.INFINITY; + val = 100; } else { @@ -237,7 +174,7 @@ { get { - return rbPercentage.Checked; + return !rbNumeric.Checked; } }