view api/Objects/UnitEquipmentItemObj.cs @ 38:548cfc776f54

Fixes #34 - Remove "Choices" and "Base/Increment" from Category * Remove Choices and Base/Increment from code Re #47: Remove magic numbers * Replace "-1" magic number with WarFoundryCore.INFINITY * Use INFINITY instead of -1 in code * Use INF in schemas instead of -1 * Handle and parse INF as a special value in XML Factory
author IBBoard <dev@ibboard.co.uk>
date Thu, 19 Mar 2009 20:11:07 +0000
parents 306558904c2a
children
line wrap: on
line source

// This file (UnitEquipmentItemObj.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2009 IBBoard.
//
// The file and the library/program it is in are licensed under the GNU LGPL license, either version 3 of the License or (at your option) any later version. Please see COPYING.LGPL for more information and the full license.

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 == WarFoundryCore.INFINITY)
				{
					return "all";
				}
				else
				{
					return amount.ToString();
				}
			}
		}
	}
}