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