fCraft.CommandManager.RegisterCommand C# (CSharp) Method

RegisterCommand() static private method

static private RegisterCommand ( [ descriptor ) : void
descriptor [
return void
        internal static void RegisterCommand( [NotNull] CommandDescriptor descriptor )
        {
            if ( descriptor == null )
                throw new ArgumentNullException( "descriptor" );

            #if DEBUG
            if( descriptor.Category == CommandCategory.None && !descriptor.IsCustom ) {
                throw new CommandRegistrationException( "Standard commands must have a category set." );
            }
            #endif

            if ( !IsValidCommandName( descriptor.Name ) ) {
                throw new CommandRegistrationException( "All commands need a name, between 1 and 16 alphanumeric characters long." );
            }

            string normalizedName = descriptor.Name.ToLower();

            if ( Commands.ContainsKey( normalizedName ) ) {
                throw new CommandRegistrationException( "A command with the name \"{0}\" is already registered.", descriptor.Name );
            }

            if ( ReservedCommandNames.Contains( normalizedName ) ) {
                throw new CommandRegistrationException( "The command name is reserved." );
            }

            if ( descriptor.Handler == null ) {
                throw new CommandRegistrationException( "All command descriptors are required to provide a handler callback." );
            }

            if ( descriptor.Aliases != null ) {
                if ( descriptor.Aliases.Any( alias => Commands.ContainsKey( alias ) ) ) {
                    throw new CommandRegistrationException( "One of the aliases for \"{0}\" is using the name of an already-defined command." );
                }
            }

            if ( !Char.IsUpper( descriptor.Name[0] ) ) {
                descriptor.Name = descriptor.Name.UppercaseFirst();
            }

            if ( descriptor.Usage == null ) {
                descriptor.Usage = "/" + descriptor.Name;
            }

            if ( RaiseCommandRegisteringEvent( descriptor ) )
                return;

            if ( Aliases.ContainsKey( normalizedName ) ) {
                Logger.Log( LogType.Warning,
                            "CommandManager.RegisterCommand: \"{0}\" was defined as an alias for \"{1}\", " +
                            "but has now been replaced by a different command of the same name.",
                            descriptor.Name, Aliases[descriptor.Name] );
                Aliases.Remove( normalizedName );
            }

            if ( descriptor.Aliases != null ) {
                foreach ( string alias in descriptor.Aliases ) {
                    string normalizedAlias = alias.ToLower();
                    if ( ReservedCommandNames.Contains( normalizedAlias ) ) {
                        Logger.Log( LogType.Warning,
                                    "CommandManager.RegisterCommand: Alias \"{0}\" for \"{1}\" ignored (reserved name).",
                                    alias, descriptor.Name );
                    } else if ( Aliases.ContainsKey( normalizedAlias ) ) {
                        Logger.Log( LogType.Warning,
                                    "CommandManager.RegisterCommand: \"{0}\" was defined as an alias for \"{1}\", " +
                                    "but has been overridden to resolve to \"{2}\" instead.",
                                    alias, Aliases[normalizedAlias], descriptor.Name );
                    } else {
                        Aliases.Add( normalizedAlias, normalizedName );
                    }
                }
            }

            Commands.Add( normalizedName, descriptor );

            RaiseCommandRegisteredEvent( descriptor );
        }

Usage Example

Example #1
0
 public static void Init()
 {
     CommandManager.RegisterCommand(CdFunc);
     CommandManager.RegisterCommand(CdFuncSurf);
     CommandManager.RegisterCommand(CdFuncFill);
     CommandManager.RegisterCommand(CdIneq);
     CommandManager.RegisterCommand(CdEq);
     CommandManager.RegisterCommand(CdSetCoord);
     CommandManager.RegisterCommand(CdSetParam);
     CommandManager.RegisterCommand(CdStartParam);
     CommandManager.RegisterCommand(CdClearParam);
     CommandManager.RegisterCommand(CdSpring);
     CommandManager.RegisterCommand(CdPolarRose);
 }
All Usage Examples Of fCraft.CommandManager::RegisterCommand