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