view api/Commands/RemoveUnitCommand.cs @ 219:f609bcf7035b

Fixes #222: decimal comma/point not handled correctly (again?) in costMultiplier * Replace two "type.Parse" calls with XmlTools calls All decimals in WarFoundry should use the decimal point (or "period" to Americans) rather than the decimal comma because that's what XML uses in its default type definitions
author IBBoard <dev@ibboard.co.uk>
date Sat, 28 Nov 2009 16:40:27 +0000
parents 391446c9b250
children 650bbe79b884
line wrap: on
line source

// This file (RemoveUnitCommand.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 IBBoard.Commands;
using IBBoard.Lang;
using IBBoard.WarFoundry.API.Objects;

namespace IBBoard.WarFoundry.API.Commands
{
	/// <summary>
	/// Summary description for RemoveUnitCommand.
	/// </summary>
	public class RemoveUnitCommand : Command
	{
		private Unit unit;
		private ArmyCategory cat;
		private string description;
		private string undoDescription;

		public RemoveUnitCommand(Unit toRemove)
		{
			unit = toRemove;
			cat = unit.Category;
		}

		public override bool CanExecute()
		{
			return (unit!=null);
		}

		public override string Description
		{
			get
			{
				if (description == null)
				{
					description = Translation.GetTranslation("removeUnitCommandDescription", "remove {0} from the army", unit.Name);
				}
				
				return description;
			}
		}

		public override string UndoDescription
		{
			get
			{
				if (undoDescription == null)
				{
					undoDescription = Translation.GetTranslation("removeUnitCommandUndoDescription", "re-add {0} to the army", unit.Name);
				}
				
				return undoDescription;
			}
		}

		public override bool Execute()
		{
			this.Redo();
			return true;
		}

		public override void Redo()
		{
			cat.RemoveUnit(unit);
		}

		public override void Undo()
		{
			cat.AddUnit(unit);
		}

		public override string Name
		{
			get { return "Remove unit"; }
		}
	}
}