#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 Arthea.Connections.Colors;
using Arthea.Connections.Players;
namespace Arthea.Commands.PlayerCommands
{
/// <summary>
/// Implementation of a color command.
/// </summary>
public class ColorCommand : Command
{
#region [rgn] Constructors (1)
/// <summary>
/// Initializes a new instance of the <see cref="ColorCommand"/> class.
/// </summary>
public ColorCommand() : base("color", "Turns color on or sets a custom color")
{
}
#endregion [rgn]
#region [rgn] Methods (1)
// [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)
{
if (!argument)
{
player.Config.Toggle(PlayerConfig.Color);
player.WriteLine("Color {0}abled.", player.Config.Has(PlayerConfig.Color)
?
"en"
: "dis");
return;
}
String arg = argument.FirstArg();
CustomColor ccolor = CustomColor.Parse(arg);
if (ccolor == null)
{
player.WriteLine("Valid custom colors are:");
foreach (string color in CustomColor.GetNames())
{
player.WriteLine(color);
}
Syntax(player, string.Format("<type> <[{0}{1}]code>", Color.CODE, Color.CODE));
return;
}
if (argument[0] == Color.CODE)
player.Colors[ccolor].Set(argument[1]);
else
player.Colors[ccolor].Set(argument[0]);
player.WriteLine(ccolor + "{0} color set.~X", CustomColor.GetName(ccolor));
}
#endregion [rgn]
}
}