comparison UIControl/AddEquipmentUIControl.cs @ 61:e7ad676a7344

Re #60: Add UI to add/remove/edit weapons in GTK * Add events to track equipment amount and amount changing * Select most appropriate equipment type by default * Add methods an implementation for enabling/disabling Okay button
author IBBoard <dev@ibboard.co.uk>
date Sun, 29 Aug 2010 15:09:34 +0000
parents 293d204e40db
children f733073967a2
comparison
equal deleted inserted replaced
60:04c0f6a7625c 61:e7ad676a7344
26 { 26 {
27 CreateEquipmentUI(); 27 CreateEquipmentUI();
28 ui.SetUnitEquipmentLimitsEnabled(false); 28 ui.SetUnitEquipmentLimitsEnabled(false);
29 UnitEquipmentItem[] items = Arrays.Subtract(UnitEquipmentUtil.GetAllowedEquipmentItems(unit), unit.GetEquipment()); 29 UnitEquipmentItem[] items = Arrays.Subtract(UnitEquipmentUtil.GetAllowedEquipmentItems(unit), unit.GetEquipment());
30 ui.SetUnitEquipmentItems(items); 30 ui.SetUnitEquipmentItems(items);
31 ui.SetOkayEnabledState(false);
31 ui.UnitEquipmentItemChoiceChanged += HandleUiUnitEquipmentItemChoiceChanged; 32 ui.UnitEquipmentItemChoiceChanged += HandleUiUnitEquipmentItemChoiceChanged;
33 ui.UnitEquipmentAmountChanged += HandleUnitEquipmentAmountChanged;
34 ui.UnitEquipmentAmountTypeChanged += HandleUnitEquipmentAmountChanged;
35 }
36
37 private void HandleUnitEquipmentAmountChanged ()
38 {
39 ui.SetOkayEnabledState(ui.SelectedUnitEquipmentItem != null && HasNonZeroEquipmentAmount());
32 } 40 }
33 41
34 //TODO Make abstract 42 //TODO Make abstract
35 protected void CreateEquipmentUI() 43 protected void CreateEquipmentUI()
36 { 44 {
51 int minNumber = UnitEquipmentUtil.GetMinEquipmentCount(unit, equip); 59 int minNumber = UnitEquipmentUtil.GetMinEquipmentCount(unit, equip);
52 minNumber = Math.Max(0, minNumber); 60 minNumber = Math.Max(0, minNumber);
53 61
54 ui.SetUnitEquipmentLimits(equipIsRatioLimit, minPercent, maxPercent, minNumber, maxNumber); 62 ui.SetUnitEquipmentLimits(equipIsRatioLimit, minPercent, maxPercent, minNumber, maxNumber);
55 ui.SetUnitEquipmentLimitsEnabled(true); 63 ui.SetUnitEquipmentLimitsEnabled(true);
64 ui.SetOkayEnabledState(HasNonZeroEquipmentAmount());
56 } 65 }
57 else 66 else
58 { 67 {
59 ui.SetUnitEquipmentLimits(true, 0, 0, 0, 0); 68 ui.SetUnitEquipmentLimits(true, 0, 0, 0, 0);
60 ui.SetUnitEquipmentLimitsEnabled(false); 69 ui.SetUnitEquipmentLimitsEnabled(false);
70 ui.SetOkayEnabledState(false);
61 } 71 }
62 } 72 }
63 73
74 private bool HasNonZeroEquipmentAmount()
75 {
76 bool nonZero;
77
78 if (ui.IsRatioEquipmentAmount)
79 {
80 nonZero = (ui.EquipmentPercentageAmount > 0);
81 }
82
83 else
84 {
85 nonZero = (ui.EquipmentNumericAmount > 0);
86 }
87
88 return nonZero;
89 }
90
64 private double RoundPercentage(double percent) 91 private double RoundPercentage(double percent)
65 { 92 {
66 return Math.Round(percent, 1); 93 return Math.Round(percent, 1);
67 } 94 }
68 95