Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.GTK
diff UIControl/AddEquipmentUIControl.cs @ 51:dafbd432ca23
Re #60: Add UI to add/remove/edit weapons in GTK
* Start to implement Add functionality using a new abstraction concept that keeps the UI dumb and keeps the logic in a cross-toolkit controller
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 21 Aug 2010 20:00:03 +0000 |
parents | |
children | 28b242612ad7 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/UIControl/AddEquipmentUIControl.cs Sat Aug 21 20:00:03 2010 +0000 @@ -0,0 +1,64 @@ +// This file (AddEquipmentUI.cs) is a part of the IBBoard.WarFoundry.GUI.GTK project and is copyright 2010 IBBoard +// +// // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. +using System; +using IBBoard.Commands; +using IBBoard.WarFoundry.API.Objects; +using IBBoard.WarFoundry.API.Util; +using IBBoard.WarFoundry.GUI.GTK.UIControl.Interfaces; +namespace IBBoard.WarFoundry.GUI.GTK.UIControl +{ + public class AddEquipmentUIControl + { + private Unit unit; + private CommandStack commandStack; + private IAddEquipmentUI ui; + + public AddEquipmentUIControl(Unit unit, CommandStack commandStack) + { + this.unit = unit; + this.commandStack = commandStack; + SetupUI(); + } + + private void SetupUI() + { + CreateEquipmentUI(); + UnitEquipmentItem[] items = Arrays.Subtract(UnitEquipmentUtil.GetAllowedEquipmentItems(unit), unit.GetEquipment()); + ui.SetUnitEquipmentItems(items); + ui.UnitEquipmentItemChoiceChanged += HandleUiUnitEquipmentItemChoiceChanged; + } + + //TODO Make abstract + protected void CreateEquipmentUI() + { + ui = new FrmAddEquipment(); + } + + private void HandleUiUnitEquipmentItemChoiceChanged(UnitEquipmentItem equip) + { + bool equipIsRatioLimit = UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip); + double maxPercent = RoundPercentage(UnitEquipmentUtil.GetMaxEquipmentPercentage(unit, equip)); + maxPercent = Math.Max(0, maxPercent); + double minPercent = RoundPercentage(UnitEquipmentUtil.GetMinEquipmentPercentage(unit, equip)); + minPercent = Math.Max(0, minPercent); + int maxNumber = UnitEquipmentUtil.GetMaxEquipmentCount(unit, equip); + maxNumber = Math.Max(0, maxNumber); + int minNumber = UnitEquipmentUtil.GetMinEquipmentCount(unit, equip); + minNumber = Math.Max(0, minNumber); + + } + + private double RoundPercentage(double percent) + { + return Math.Round(percent, 1); + } + + //TODO Make abstract + public void Show() + { + ((FrmAddEquipment)ui).ShowNow(); + } + } +} +