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); }
/// <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); }
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); }