changeset 413:48098a2d17d0

Re #101: Make army names and sizes modifiable after creation * Add command to edit name/size of army
author IBBoard <dev@ibboard.co.uk>
date Mon, 29 Aug 2011 16:47:54 +0100
parents 20274b5b0fd6
children 3f297a60db1e
files API/Commands/EditArmyCommand.cs IBBoard.WarFoundry.API.csproj
diffstat 2 files changed, 98 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/API/Commands/EditArmyCommand.cs	Mon Aug 29 16:47:54 2011 +0100
@@ -0,0 +1,96 @@
+// This file (EditArmyCommand.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2011 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.Lang;
+
+namespace IBBoard.WarFoundry.API.Commands
+{
+	public class EditArmyCommand : Command
+	{
+		private Army army;
+		private string oldName;
+		private int oldSize;
+
+		public EditArmyCommand(Army toEdit)
+		{
+			army = toEdit;
+		}
+
+		public override bool CanExecute()
+		{
+			return army != null && (NewName != null || NewSize > 0);
+		}
+
+		public override bool Execute()
+		{
+			if (!army.HasDefaultName())
+			{
+				oldName = army.Name;
+			}
+
+			oldSize = army.MaxPoints;
+			Redo();
+			return true;
+		}
+
+		public override void Undo()
+		{
+			SetName(oldName);
+			SetSize(oldSize);
+		}
+
+		public override void Redo()
+		{
+			SetName(NewName);
+			SetSize(NewSize);
+		}
+
+		void SetName (string name)
+		{
+			if (NewName != null)
+			{
+				army.Name = name;
+			}
+		}
+
+		void SetSize (int size)
+		{
+			if (NewSize > 0)
+			{
+				army.MaxPoints = size;
+			}
+		}
+
+		public override string Name
+		{
+			get
+			{
+				return "Edit army";
+			}
+		}
+
+		public override string Description
+		{
+			get
+			{
+				return Translation.GetTranslation("editArmyCommandDescription", "edit army name and/or size");
+			}
+		}
+
+		public override string UndoDescription
+		{
+			get
+			{
+				return Translation.GetTranslation("editArmyCommandDescription", "revert army nnd/or size");
+			}
+		}
+
+		public string NewName { get; set; }
+
+		public int NewSize { get; set; }
+	}
+}
+
--- a/IBBoard.WarFoundry.API.csproj	Fri Aug 26 20:04:52 2011 +0100
+++ b/IBBoard.WarFoundry.API.csproj	Mon Aug 29 16:47:54 2011 +0100
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
   <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -182,6 +182,7 @@
     <Compile Include="API\Factories\Xml\CategoryLoader.cs" />
     <Compile Include="API\Factories\IRaceFactory.cs" />
     <Compile Include="API\Factories\Requirement\IRequirementFactory.cs" />
+    <Compile Include="API\Commands\EditArmyCommand.cs" />
   </ItemGroup>
   <ItemGroup>
     <Reference Include="System.Xml" />