#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]
}
}