Mercurial > repos > IBBoard.WarFoundry.API
view api/Objects/UnitEquipmentItem.cs @ 150:b36cc4af435b
Re #176: Bug when saving recently edited army
* Try to make sure that we clear up more of our open streams
Bug seems to be state related in some way since I can only trigger it when loading the file as the first action, but doesn't seem to be related to file loading of other data files since a diagnostic hard-coded "LoadFiles()" call in the FrmMain constructor doesn't change the behaviour
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 26 Sep 2009 10:43:28 +0000 |
parents | c11c0da01bbc |
children | 0c0e14f03785 |
line wrap: on
line source
// This file (UnitEquipmentItem.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2007, 2008, 2009 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 System.Xml; using IBBoard.Lang; namespace IBBoard.WarFoundry.API.Objects { /// <summary> /// Summary description for UnitEquipmentItem. /// </summary> public class UnitEquipmentItem : WarFoundryObject { private EquipmentItem item; private bool required; private bool roundUp; private int minNum; private int maxNum; private double minPercentage; private double maxPercentage; private double costMultiplier; private RoundType roundType; private string mutexGroup; private UnitType unitType; public UnitEquipmentItem(EquipmentItem equipmentItem, UnitType equipmentFor) : this(equipmentItem, equipmentFor, "") { //Do nothing extra } public UnitEquipmentItem(EquipmentItem equipmentItem, UnitType equipmentFor, string mutexGroup) { item = equipmentItem; unitType = equipmentFor; this.mutexGroup = mutexGroup; unitType.AddEquipmentItem(this); } public override string Name { get { return item.Name; } set { base.Name = value; } } public override string ID { get { return (EquipmentForUnit == null ? base.ID : EquipmentForUnit.ID) + EquipmentItemID; } set { base.ID = value; } } public string EquipmentItemID { get { return item.ID; } } public double Cost { get { return IBBMath.Round(EquipmentItem.Cost * CostMultiplier, CostRoundType); } } public double CostMultiplier { get { return costMultiplier; } set { costMultiplier = value; } } public RoundType CostRoundType { get { return roundType; } set { roundType = value; } } public bool IsRequired { get { return required; } set { required = value; } } public bool RoundNumberUp { get { return roundUp; } set { roundUp = value; } } public string MutexGroup { get { return mutexGroup; } } public UnitType EquipmentForUnit { get { return unitType; } } public bool IsRatioLimit { get { return minPercentage!=100 || maxPercentage!=100; } } public int MinNumber { get { return minNum; } set { if (value >=0 || value == WarFoundryCore.INFINITY) { minNum = value; } //TODO: Check Min<Max } } public int MaxNumber { get { return maxNum; } set { if (value >=0 || value == WarFoundryCore.INFINITY) { maxNum = value; } //TODO: Check Min<Max } } public double MinPercentage { get { return minPercentage; } set { if (value >=0 && value <= 100) { minPercentage = value; } //TODO: Check Min<Max } } public double MaxPercentage { get { return maxPercentage; } set { if (value >=0 && value <= 100) { maxPercentage = value; } //TODO: Check Min<Max } } public EquipmentItem EquipmentItem { get { return item; } } public override string ToString() { return EquipmentItem.Name+ " ("+EquipmentItem.Cost+"pts each)"; } public bool HasAlternatives() { if (MutexGroup=="") { return false; } else if (EquipmentForUnit == null) { return false; } else { //If the number of items in the MutEx group is greater than one then it must be this item plus another return EquipmentForUnit.GetEquipmentItemsByExclusionGroup(MutexGroup).Length > 1; } } public ArmourType ItemArmourType { get { return EquipmentItem.ItemArmourType; } } public string Description { get { return EquipmentItem.Description; } } public Race EquipmentForRace { get { return EquipmentItem.EquipmentForRace; } } public bool CanBeUsedWithItem(EquipmentItem item) { return EquipmentItem.CanBeUsedWithItem(item); } public bool CanBeUsedWithArmourType(ArmourType otherItemType) { return EquipmentItem.CanBeUsedWithArmourType(otherItemType); } } }