From 3f9e9040a5db541006602745f71824fc7bb3b306 Mon Sep 17 00:00:00 2001 From: RogueException Date: Sun, 22 Nov 2015 20:15:52 -0400 Subject: [PATCH] Added Command[paramName] --- src/Discord.Net.Commands/Command.cs | 41 +++++++++-------------------- 1 file changed, 12 insertions(+), 29 deletions(-) diff --git a/src/Discord.Net.Commands/Command.cs b/src/Discord.Net.Commands/Command.cs index 81bce6a47..cef697e92 100644 --- a/src/Discord.Net.Commands/Command.cs +++ b/src/Discord.Net.Commands/Command.cs @@ -19,6 +19,7 @@ namespace Discord.Commands public sealed class CommandParameter { public string Name { get; } + public int Id { get; internal set; } public ParameterType Type { get; } public CommandParameter(string name, ParameterType type) @@ -45,6 +46,7 @@ namespace Discord.Commands private IPermissionChecker[] _checks; private Func _runFunc; + private Dictionary _parametersByName; internal Command(string text) { @@ -52,44 +54,25 @@ namespace Discord.Commands IsHidden = false; _aliases = new string[0]; _parameters = new CommandParameter[0]; + _parametersByName = new Dictionary(); } + public CommandParameter this[string name] => _parametersByName[name]; + internal void SetAliases(string[] aliases) { _aliases = aliases; } internal void SetParameters(CommandParameter[] parameters) { - _parameters = parameters; - /*if (parameters != null) + _parametersByName.Clear(); + for (int i = 0; i < parameters.Length; i++) { - if (parameters.Length == 0) - { - MinArgs = 0; - MaxArgs = 0; - } - else - { - if (parameters[parameters.Length - 1].Type == ParameterType.Multiple) - MaxArgs = null; - else - MaxArgs = parameters.Length; - - int? optionalStart = null; - for (int i = parameters.Length - 1; i >= 0; i--) - { - if (parameters[i].Type == ParameterType.Optional) - optionalStart = i; - else - break; - } - if (optionalStart == null) - MinArgs = MaxArgs; - else - MinArgs = optionalStart.Value; - } - }*/ - } + parameters[i].Id = i; + _parametersByName[parameters[i].Name] = parameters[i]; + } + _parameters = parameters; + } internal void SetChecks(IPermissionChecker[] checks) { _checks = checks;