#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.Collections.Generic;
using System.Text;
using Arthea.Connections.Players;
using Arthea.Creation;
using Arthea.Environment;
using Arthea.Interfaces;
namespace Arthea.Collections
{
/// <summary>
/// Implementation of a help list.
/// </summary>
public class HelpList : List<Help>, CustomEditType
{
#region [rgn] Methods (4)
// [rgn] Public Methods (4)
/// <summary>
/// Finds the keyword.
/// </summary>
/// <param name="keywd">The keywd.</param>
/// <returns>a help</returns>
public Help FindKeyword(String keywd)
{
return Find(delegate(Help h) { return h.Keywords[keywd]; });
}
/// <summary>
/// Loads this instance.
/// </summary>
/// <returns></returns>
public static HelpList Load()
{
Log.Info("Loading help files...");
if (!Persistance.XmlFileExists(Paths.HelpFile))
{
HelpList list = new HelpList();
Persistance.Save(Paths.HelpFile, list);
return list;
}
else
{
return Persistance.Load<HelpList>(Paths.HelpFile);
}
}
/// <summary>
/// Saves this instance.
/// </summary>
public void Save()
{
Persistance.Save(Paths.HelpFile, this);
}
/// <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 (Help help in this)
{
buf.Append(help);
}
return buf.ToString();
}
#endregion [rgn]
#region CustomEditType Members
/// <summary>
/// Sets the value.
/// </summary>
/// <param name="player">The player.</param>
/// <param name="editer">Editer information.</param>
/// <param name="argument">The argument.</param>
public void CustomEdit(Player player, OlcField editer, String argument)
{
Help help = FindKeyword(argument);
if (help == null)
{
player.WriteLine("No such help record.");
return;
}
if (Contains(help))
Remove(help);
else
Add(help);
player.WriteLine("{0} toggled.", editer.Name);
}
#endregion
}
}