Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.WinForms
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(); |