コード例 #1
0
        private bool ProcessGroup(string command)
        {
            var commandGroupStrings = Enum.GetNames(typeof(CommandGroup)).ToList().Select(g => g.ToLower());

            if (!commandGroupStrings.Contains(command.ToLower()))
            {
                return(false);
            }

            List <CommandBase> toExecute;
            List <CommandBase> toExclude = new List <CommandBase>();

            foreach (var remainingCommand in Commands)
            {
                if (remainingCommand.StartsWith("-"))
                {
                    var foundCommand = AllCommands.FirstOrDefault(c => c.Command.Equals(remainingCommand.Substring(1), StringComparison.InvariantCultureIgnoreCase));
                    if (foundCommand != null)
                    {
                        toExclude.Add(foundCommand);
                    }
                }
            }

            switch (command.ToLower())
            {
            case "all":
                toExecute = AllCommands.ToList();
                break;

            default:
                CommandGroup commandGroup;
                try
                {
                    var groupName = Enum.GetNames(typeof(CommandGroup)).FirstOrDefault(c => c.ToLower() == command.ToLower());
                    commandGroup = (CommandGroup)Enum.Parse(typeof(CommandGroup), groupName);
                }
                catch (ArgumentException)
                {
                    return(false);
                }

                toExecute = AllCommands.Where(g => g.Group.Contains(commandGroup)).ToList();
                break;
            }

            var commandsFiltered = toExecute.Where(c => !toExclude.Contains(c)).ToList();

            commandsFiltered.ForEach(c =>
            {
                ExecuteCommand(c, new string[] { });
            });

            return(true);
        }
コード例 #2
0
        /// <inheritdoc/>
        protected override bool ExecuteParent(ArraySegment <string> arguments, ICommandSender sender, out string response)
        {
            Player player = Player.Get((sender as PlayerCommandSender).ReferenceHub);

            string message = "\nPlease enter a valid subcommand:\n";

            foreach (var command in AllCommands.ToList())
            {
                if (player.CheckPermission($"sh.{command.Command}"))
                {
                    message += $"- {command.Command} ({command.Aliases[0]})\n";
                }
            }

            response = message;
            return(false);
        }
コード例 #3
0
        private bool ProcessGroup(string command)
        {
            var commandGroupStrings = Enum.GetNames(typeof(CommandGroup)).ToList().Select(g => g.ToLower());

            if (!commandGroupStrings.Contains(command.ToLower()))
            {
                return(false);
            }

            List <CommandBase> toExecute;

            switch (command.ToLower())
            {
            case "all":
                toExecute = AllCommands.ToList();
                break;

            default:
                CommandGroup commandGroup;
                try
                {
                    var groupName = Enum.GetNames(typeof(CommandGroup)).FirstOrDefault(c => c.ToLower() == command.ToLower());
                    commandGroup = (CommandGroup)Enum.Parse(typeof(CommandGroup), groupName);
                }
                catch (ArgumentException)
                {
                    return(false);
                }

                toExecute = AllCommands.Where(g => g.Group.Contains(commandGroup)).ToList();
                break;
            }

            toExecute.ForEach(c =>
            {
                ExecuteCommand(c, new string[] { });
            });

            return(true);
        }