Added Command[paramName]

This commit is contained in:
RogueException
2015-11-22 20:15:52 -04:00
parent 214377908a
commit 3f9e9040a5

View File

@@ -19,6 +19,7 @@ namespace Discord.Commands
public sealed class CommandParameter public sealed class CommandParameter
{ {
public string Name { get; } public string Name { get; }
public int Id { get; internal set; }
public ParameterType Type { get; } public ParameterType Type { get; }
public CommandParameter(string name, ParameterType type) public CommandParameter(string name, ParameterType type)
@@ -45,6 +46,7 @@ namespace Discord.Commands
private IPermissionChecker[] _checks; private IPermissionChecker[] _checks;
private Func<CommandEventArgs, Task> _runFunc; private Func<CommandEventArgs, Task> _runFunc;
private Dictionary<string, CommandParameter> _parametersByName;
internal Command(string text) internal Command(string text)
{ {
@@ -52,44 +54,25 @@ namespace Discord.Commands
IsHidden = false; IsHidden = false;
_aliases = new string[0]; _aliases = new string[0];
_parameters = new CommandParameter[0]; _parameters = new CommandParameter[0];
_parametersByName = new Dictionary<string, CommandParameter>();
} }
public CommandParameter this[string name] => _parametersByName[name];
internal void SetAliases(string[] aliases) internal void SetAliases(string[] aliases)
{ {
_aliases = aliases; _aliases = aliases;
} }
internal void SetParameters(CommandParameter[] parameters) internal void SetParameters(CommandParameter[] parameters)
{ {
_parameters = parameters; _parametersByName.Clear();
/*if (parameters != null) for (int i = 0; i < parameters.Length; i++)
{ {
if (parameters.Length == 0) parameters[i].Id = i;
{ _parametersByName[parameters[i].Name] = parameters[i];
MinArgs = 0; }
MaxArgs = 0; _parameters = parameters;
} }
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;
}
}*/
}
internal void SetChecks(IPermissionChecker[] checks) internal void SetChecks(IPermissionChecker[] checks)
{ {
_checks = checks; _checks = checks;