#region Arthea License /*********************************************************************** * Arthea MUD by R. Jennings (2007) http://arthea.googlecode.com/ * * By using this code you comply with the Artistic and GPLv2 Licenses. * ***********************************************************************/ #endregion using System; using System.Collections.Generic; using System.Text; namespace Arthea.Classes { /// <summary> /// Implementation of a class list. /// </summary> public class ClassList : List<Class> { #region [rgn] Constructors (1) /// <summary> /// Initializes a new instance of the <see cref="ClassList"/> class. /// </summary> public ClassList() { Log.Info("Initializing classes..."); Add(new MagicianClass()); Add(new ClericClass()); Add(new WarriorClass()); Add(new ThiefClass()); for (int i = 0; i < Count; i++) { this[i].Index = i; } } #endregion [rgn] #region [rgn] Methods (3) // [rgn] Public Methods (3) /// <summary> /// Finds the name. /// </summary> /// <param name="name">The name.</param> /// <returns></returns> public Class FindName(String name) { if (!name) return null; return Find(delegate(Class @class) { return name == @class.Name; }); } /// <summary> /// Finds the type of class. /// </summary> /// <param name="type">The type.</param> /// <returns>a class object</returns> public Class FindType(Type type) { return Find(delegate(Class @class) { return @class.GetType() == type; }); } /// <summary> /// Returns a <see cref="T:System.String"></see> that represents the current <see cref="T:System.Object"></see>. /// </summary> /// <returns> /// A <see cref="T:System.String"></see> that represents the current <see cref="T:System.Object"></see>. /// </returns> public override string ToString() { StringBuilder buf = new StringBuilder(); foreach (Class @class in this) { buf.Append(@class.Name); buf.Append(": "); buf.AppendLine(@class.Description); } return buf.ToString(); } #endregion [rgn] } }