comparison UI/EquipmentAmountControl.cs @ 78:431cc3ace26c

Fixes #187: Error when adding equipment with minNum > unit size * Separate out methods to ensure that the percentages and numbers are kept correct and that they're not messed up when editing percentage equipment items
author IBBoard <dev@ibboard.co.uk>
date Tue, 06 Oct 2009 13:39:50 +0000
parents 712915de47fd
children c243b043aa62
comparison
equal deleted inserted replaced
77:712915de47fd 78:431cc3ace26c
51 { 51 {
52 double minPercent = equip.MinPercentage; 52 double minPercent = equip.MinPercentage;
53 double maxPercent = equip.MaxPercentage; 53 double maxPercent = equip.MaxPercentage;
54 int minNumber = (int) CalculateNumericValueFromPercentage(minPercent); 54 int minNumber = (int) CalculateNumericValueFromPercentage(minPercent);
55 int maxNumber = (int) CalculateNumericValueFromPercentage(maxPercent); 55 int maxNumber = (int) CalculateNumericValueFromPercentage(maxPercent);
56
57 rbEquipAll.Enabled = maxPercent == 100;
56 SetUpDownControlMinMaxes(minPercent, maxPercent, minNumber, maxNumber); 58 SetUpDownControlMinMaxes(minPercent, maxPercent, minNumber, maxNumber);
57 percentage.Value = (decimal) minPercent; 59 SetEquipmentAmountsFromPercentage(minPercent);
58 rbEquipAll.Enabled = maxPercent == 100;
59 60
60 if (minPercent == 100) 61 if (minPercent == 100)
61 { 62 {
62 rbEquipAll.Checked = true; 63 rbEquipAll.Checked = true;
63 percentage.Enabled = false; 64 percentage.Enabled = false;
74 rbNumeric.Enabled = true; 75 rbNumeric.Enabled = true;
75 } 76 }
76 } 77 }
77 else 78 else
78 { 79 {
79 percentage.Enabled = false;
80 rbPercentage.Enabled = false;
81 int minNumber = equip.MinNumber; 80 int minNumber = equip.MinNumber;
82 int maxNumber = equip.MaxNumber; 81 int maxNumber = equip.MaxNumber;
83 double minPercent = (double) CalcualtePercentageValueFromNumber(minNumber); 82 double minPercent = (double) CalcualtePercentageValueFromNumber(minNumber);
84 double maxPercent = (double) CalcualtePercentageValueFromNumber(maxNumber); 83 double maxPercent = (double) CalcualtePercentageValueFromNumber(maxNumber);
84
85 percentage.Enabled = false;
86 rbPercentage.Enabled = false;
87 rbEquipAll.Enabled = maxNumber == WarFoundryCore.INFINITY;
88
85 SetUpDownControlMinMaxes(minPercent, maxPercent, minNumber, maxNumber); 89 SetUpDownControlMinMaxes(minPercent, maxPercent, minNumber, maxNumber);
86 numeric.Value = (minNumber == WarFoundryCore.INFINITY ? unit.Size : minNumber); 90 SetEquipmentAmountsFromNumber(minNumber);
87 rbEquipAll.Enabled = maxNumber == WarFoundryCore.INFINITY;
88 91
89 if (minNumber == WarFoundryCore.INFINITY) 92 if (minNumber == WarFoundryCore.INFINITY)
90 { 93 {
91 rbEquipAll.Checked = true;
92 numeric.Enabled = false; 94 numeric.Enabled = false;
93 rbNumeric.Enabled = false; 95 rbNumeric.Enabled = false;
94 } 96 }
95 else 97 else
96 { 98 {
231 { 233 {
232 bool isRatio = unit.GetEquipmentAmountIsRatio(equip); 234 bool isRatio = unit.GetEquipmentAmountIsRatio(equip);
233 235
234 if (isRatio) 236 if (isRatio)
235 { 237 {
236 percentage.Value = (decimal) equipAmountNum; 238 SetEquipmentAmountsFromPercentage(equipAmountNum);
237 } 239 }
238 else if (equipAmountNum == WarFoundryCore.INFINITY) 240 else if (equipAmountNum == WarFoundryCore.INFINITY)
239 { 241 {
240 rbEquipAll.Checked = true; 242 rbEquipAll.Checked = true;
241 } 243 }
242 else 244 else
243 { 245 {
244 numeric.Value = (int) equipAmountNum; 246 int equipAmount = (int) equipAmountNum;
245 } 247 SetEquipmentAmountsFromNumber(equipAmount);
246 } 248 }
249 }
250 }
251
252 private void SetEquipmentAmountsFromPercentage(double equipAmountNum)
253 {
254 numeric.Value = CalculateNumericValueFromPercentage(equipAmountNum);
255 percentage.Value = (decimal) equipAmountNum;
256 }
257
258 private void SetEquipmentAmountsFromNumber(int equipAmount)
259 {
260 rbEquipAll.Checked = (equipAmount == WarFoundryCore.INFINITY);
261 equipAmount = (equipAmount == WarFoundryCore.INFINITY ? unit.Size : equipAmount);
262 percentage.Value = CalcualtePercentageValueFromNumber(equipAmount);
263 numeric.Value = equipAmount;
247 } 264 }
248 265
249 private void radioCheckedChanged(object sender, EventArgs e) 266 private void radioCheckedChanged(object sender, EventArgs e)
250 { 267 {
251 OnValueChanged(); 268 OnValueChanged();