#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.Players; using Arthea.Continents; using Arthea.Continents.Areas; using Arthea.Environment; namespace Arthea.Commands.Admin { /// <summary> /// Implementation of a edit command. /// </summary> public class EditCommand : Command { #region [rgn] Constructors (1) /// <summary> /// Initializes a new instance of the <see cref="EditCommand"/> class. /// </summary> public EditCommand() : base("edit", "Entry point for on-line creation", Levels.Admin) { } #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.Empty()) { Syntax(player, "create <type> [args]", "room [id]", "item <id|name>", "character <id|name>", "area <name>", "continent <name>", "help <keyword>", "social <name>", "script <id>"); return; } String arg = argument.FirstArg(); if (arg == "create") { new CreateCommand().Process(player, argument); return; } if (arg.IsPrefixOf("room")) { uint id; if (uint.TryParse(argument, out id) && Lists.Rooms.ContainsKey(id)) { player.Connection.Edit(Lists.Rooms[id]); } else { player.Connection.Edit(player.Room); } } else if (arg.IsPrefixOf("item")) { uint id; if (uint.TryParse(argument, out id) && Lists.ItemIndexes.ContainsKey(id)) { player.Connection.Edit(Lists.ItemIndexes[id]); } else { player.Connection.Edit(Lists.Items.FindName(argument)); } } else if (arg.IsPrefixOf("character")) { uint id; if (!uint.TryParse(argument, out id) || !Lists.CharIndexes.ContainsKey(id)) { player.Connection.Edit(Lists.Characters.FindName(argument)); } else { player.Connection.Edit(Lists.CharIndexes[id]); } } else if (arg.IsPrefixOf("area")) { Area area = Lists.Areas.FindName(argument); if (area == null) { area = player.Room.Area; } player.Connection.Edit(area); } else if (arg.IsPrefixOf("continent")) { Continent cont = Lists.Continents.FindName(argument); if (cont == null) { cont = player.Room.Area.Continent; } player.Connection.Edit(cont); } else if (arg.IsPrefixOf("help")) { player.Connection.Edit(Lists.Helps.FindKeyword(argument)); } else if (arg.IsPrefixOf("social")) { player.Connection.Edit(Lists.Socials.FindName(argument)); } else if (arg.IsPrefixOf("script")) { uint id; if (uint.TryParse(argument, out id) && Lists.Scripts.ContainsKey(id)) { player.Connection.Edit(Lists.Scripts[id]); } } else { Process(player, string.Empty); return; } if (player.Connection.Editing == null) { player.WriteLine("No such object."); } } #endregion [rgn] } }