#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 Arthea.Connections.Players;
using Arthea.Environment;
namespace Arthea.Collections
{
/// <summary>
/// Implementation of a social list.
/// </summary>
public class SocialList : List<Social>
{
#region [rgn] Methods (4)
// [rgn] Public Methods (4)
/// <summary>
/// Finds the name.
/// </summary>
/// <param name="name">The name.</param>
/// <returns>a social</returns>
public Social FindName(String name)
{
return Find(delegate(Social social) { return name == social.Name; });
}
/// <summary>
/// Loads this instance.
/// </summary>
/// <returns>a social list</returns>
public static SocialList Load()
{
Log.Info("Loading socials...");
if (!Persistance.XmlFileExists(Paths.SocialFile))
{
SocialList list = new SocialList();
Persistance.Save(Paths.SocialFile, list);
return list;
}
else
{
return Persistance.Load<SocialList>(Paths.SocialFile);
}
}
/// <summary>
/// Parses a player argument for a social.
/// </summary>
/// <param name="player">The player.</param>
/// <param name="arg">The arg.</param>
/// <param name="argument">The argument.</param>
/// <returns></returns>
public bool Parse(Player player, String arg, String argument)
{
if (!arg || Count == 0) return false;
Social social = FindName(arg);
if (social == null) return false;
social.Parse(player, argument);
return true;
}
/// <summary>
/// Saves this instance.
/// </summary>
public void Save()
{
Persistance.Save(Paths.SocialFile, this);
}
#endregion [rgn]
}
}