view api/Objects/UnitEquipmentItemObj.cs @ 0:520818033bb6

Initial commit of WarFoundry code
author IBBoard <dev@ibboard.co.uk>
date Fri, 19 Dec 2008 15:57:51 +0000
parents
children 306558904c2a
line wrap: on
line source

using System;
using System.Collections;

namespace IBBoard.WarFoundry.API.Objects
{
	/// <summary>
	/// Summary description for UnitEquipmentItemObj.
	/// </summary>
	public class UnitEquipmentItemObj
	{
		private Unit unit;
		private UnitEquipmentItem item;
		private EquipmentItem equip;

		private static Hashtable equipObjs = new Hashtable();

		private UnitEquipmentItemObj(Unit unit, UnitEquipmentItem unitItem)
		{
			this.unit = unit;
			item = unitItem;
			equip = item.EquipmentItem;
		}

		public static UnitEquipmentItemObj GetEquipObj(Unit unit, UnitEquipmentItem unitItem)
		{
			if (!equipObjs.ContainsKey(unitItem))
			{
				equipObjs[unitItem] = new UnitEquipmentItemObj(unit, unitItem);
			}
			
			return (UnitEquipmentItemObj)equipObjs[unitItem];
		}

		public override string ToString()
		{
			return String.Format("{0} (For {1} at {2}pts each)", equip.Name, FormatEquipmentAmount(unit, equip), equip.Cost);
		}

		public UnitEquipmentItem Item
		{
			get { return item; }
		}

		public static string FormatEquipmentAmount(Unit unit, EquipmentItem equip)
		{
			return FormatEquipmentAmount(equip, unit.GetEquipmentAmount(equip.ID));
		}

		public static string FormatEquipmentAmount(EquipmentItem equip, float amount)
		{
			if (equip.IsRatioLimit)
			{
				return Math.Round(amount * 100) + "%";
			}
			else
			{
				if (amount == -1)
				{
					return "all";
				}
				else
				{
					return amount.ToString();
				}
			}
		}
	}
}