view api/Factories/Xml/WarFoundryXmlElementName.cs @ 50:bb6b993b98bf

Re #10 - Refactor for readability * Re-order methods so that they are in the correct order to read the code from top to bottom * Reduce visibility of methods where possible * Make use of XMLTools class * Refactor "can complete loading" checks in to single method
author IBBoard <dev@ibboard.co.uk>
date Sat, 28 Mar 2009 20:51:06 +0000
parents 306558904c2a
children 2f3cafb69799
line wrap: on
line source

// This file (WarFoundryXmlElementName.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.Generic;
using IBBoard.Xml;

namespace IBBoard.WarFoundry.API.Factories.Xml
{
	/// <summary>
	/// An enumeration class for valid WarFoundry XML elements, designed to imitate Java's extensible complex object enumerations. 
	/// </summary>
	public class WarFoundryXmlElementName : IXmlElementName, IExtendedEnum<string>
	{
		public static WarFoundryXmlElementName SYSTEM_ELEMENT = new WarFoundryXmlElementName("SYSTEM_ELEMENT", "system");
		public static WarFoundryXmlElementName ARMY_ELEMENT = new WarFoundryXmlElementName("ARMY_ELEMENT", "army");
		public static WarFoundryXmlElementName RACE_ELEMENT = new WarFoundryXmlElementName("RACE_ELEMENT", "race");
		public static WarFoundryXmlElementName CATEGORIES_ELEMENT = new WarFoundryXmlElementName("CATEGORIES_ELEMENT", "categories");
		public static WarFoundryXmlElementName CATEGORY_ELEMENT = new WarFoundryXmlElementName("CATEGORY_ELEMENT", "cat");
		public static WarFoundryXmlElementName UNITTYPES_ELEMENT = new WarFoundryXmlElementName("UNITTYPES_ELEMENT", "units");
		public static WarFoundryXmlElementName UNITTYPE_ELEMENT = new WarFoundryXmlElementName("UNITTYPE_ELEMENT", "unit");
		public static WarFoundryXmlElementName RACE_EQUIPMENT_ITEMS_ELEMENT = new WarFoundryXmlElementName("RACE_EQUIPMENT_ITEMS_ELEMENT", "equipment");
		public static WarFoundryXmlElementName RACE_EQUIPMENT_ITEM_ELEMENT = new WarFoundryXmlElementName("RACE_EQUIPMENT_ITEMS_ELEMENT", "equipmentItem");
		
		private static ICollection<WarFoundryXmlElementName> enumValues;
		private string name;
		private string val;
		
		private WarFoundryXmlElementName(string elemName, string elemVal)
		{
			name = elemName;
			val = elemVal;
		}
		
		public string Name
		{
			get {
				return name;
			}
		}
		
		public string Value
		{
			get {
				return val;
			}
		}
		
		/// <summary>
		/// Gets an ICollection of the values so that they can be looped over like a standard enumeration.
		/// </summary>
		/// <returns>
		/// A <see cref="ICollection`1"/> of all of the static 'enumeration' values of the class.
		/// </returns>
		public static ICollection<WarFoundryXmlElementName> GetEnumValues()
		{
			if (enumValues == null)
			{
				enumValues = new WarFoundryXmlElementName[]{SYSTEM_ELEMENT, ARMY_ELEMENT, RACE_ELEMENT, CATEGORIES_ELEMENT, CATEGORY_ELEMENT, UNITTYPES_ELEMENT, UNITTYPE_ELEMENT};
			}
			
			return enumValues;
		}
	}
}