#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;
using Arthea.Connections.Players;
using Arthea.Continents;
using Arthea.Continents.Areas;
using Arthea.Continents.Areas.Characters;
using Arthea.Continents.Areas.Items;
using Arthea.Continents.Areas.Rooms;
using Arthea.Creation;
using Arthea.Environment;
namespace Arthea.Commands.Admin
{
/// <summary>
/// Implementation of a create command.
/// </summary>
public class CreateCommand : Command
{
#region [rgn] Fields (1)
private static readonly Type[] creatables = {
typeof (Room), typeof (ItemIndex),
typeof (CharIndex), typeof (Area), typeof (Continent),
typeof (Help), typeof (Social)
};
#endregion [rgn]
#region [rgn] Constructors (1)
/// <summary>
/// Initializes a new instance of the <see cref="CreateCommand"/> class.
/// </summary>
public CreateCommand() : base("create", "creates a new object", Levels.Admin)
{
}
#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)
{
String arg = argument.FirstArg();
Olc.Create(player, GetCreateType(arg), argument);
}
// [rgn] Private Methods (1)
/// <summary>
/// Gets the type of object specified by an argument.
/// </summary>
/// <param name="arg">The arg.</param>
/// <returns>a type of object that can be created.</returns>
private static Type GetCreateType(String arg)
{
foreach (Type type in creatables)
{
if (arg.IsPrefixOf(type.Name))
return type;
}
return null;
}
#endregion [rgn]
}
}