#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.Continents;
using Arthea.Continents.Areas;
using Arthea.Environment;
namespace Arthea.Commands.Information
{
/// <summary>
/// Implementation of a areas command.
/// </summary>
public class AreasCommand : Command
{
#region [rgn] Constructors (1)
/// <summary>
/// Initializes a new instance of the <see cref="AreasCommand"/> class.
/// </summary>
public AreasCommand() : base("areas", "Displays a list of areas.")
{
}
#endregion [rgn]
#region [rgn] Methods (2)
// [rgn] Public Methods (1)
/// <summary>
/// Processes the command for a player.
/// </summary>
/// <param name="player">The player.</param>
/// <param name="argument">The argument.</param>
public override void Process(Player player, String argument)
{
List<string> areas = new List<string>();
foreach (Continent cont in Lists.Continents)
{
player.WriteLine("In {0}:", cont.Name);
foreach (Area area in cont.Areas)
{
AddAreaToList(areas, area);
}
Columns.Show(player, 3, 12, areas.ToArray());
}
areas.Clear();
foreach (Area area in Lists.Areas)
{
if (area.Continent != null)
continue;
AddAreaToList(areas, area);
}
if (areas.Count > 0)
{
player.WriteLine("Other areas:");
Columns.Show(player, 3, 12, areas.ToArray());
}
}
// [rgn] Private Methods (1)
private static void AddAreaToList(ICollection<string> areas, Area area)
{
if (!string.IsNullOrEmpty(area.Description))
areas.Add(string.Format("{0}: {1}", area.Name, area.Description));
else
areas.Add(area.Name);
}
#endregion [rgn]
}
}