Merge pull request #461 from Scavenger3/InfPermissions
Commands can have more than one permission.
This commit is contained in:
commit
88a9c05220
2 changed files with 19 additions and 6 deletions
|
|
@ -66,20 +66,26 @@ namespace TShockAPI
|
||||||
public List<string> Names { get; protected set; }
|
public List<string> Names { get; protected set; }
|
||||||
public bool AllowServer { get; set; }
|
public bool AllowServer { get; set; }
|
||||||
public bool DoLog { get; set; }
|
public bool DoLog { get; set; }
|
||||||
public string Permission { get; protected set; }
|
public List<string> Permissions { get; protected set; }
|
||||||
private CommandDelegate command;
|
private CommandDelegate command;
|
||||||
|
|
||||||
|
public Command(List<string> permissionsneeded, CommandDelegate cmd, params string[] names)
|
||||||
|
: this(cmd, names)
|
||||||
|
{
|
||||||
|
Permissions = permissionsneeded;
|
||||||
|
}
|
||||||
|
|
||||||
public Command(string permissionneeded, CommandDelegate cmd, params string[] names)
|
public Command(string permissionneeded, CommandDelegate cmd, params string[] names)
|
||||||
: this(cmd, names)
|
: this(cmd, names)
|
||||||
{
|
{
|
||||||
Permission = permissionneeded;
|
Permissions = new List<string> { permissionneeded };
|
||||||
}
|
}
|
||||||
|
|
||||||
public Command(CommandDelegate cmd, params string[] names)
|
public Command(CommandDelegate cmd, params string[] names)
|
||||||
{
|
{
|
||||||
if (names == null || names.Length < 1)
|
if (names == null || names.Length < 1)
|
||||||
throw new NotSupportedException();
|
throw new NotSupportedException();
|
||||||
Permission = null;
|
Permissions = null;
|
||||||
Names = new List<string>(names);
|
Names = new List<string>(names);
|
||||||
command = cmd;
|
command = cmd;
|
||||||
AllowServer = true;
|
AllowServer = true;
|
||||||
|
|
@ -88,7 +94,7 @@ namespace TShockAPI
|
||||||
|
|
||||||
public bool Run(string msg, TSPlayer ply, List<string> parms)
|
public bool Run(string msg, TSPlayer ply, List<string> parms)
|
||||||
{
|
{
|
||||||
if (!ply.Group.HasPermission(Permission))
|
if (!CanRun(ply))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|
@ -111,7 +117,14 @@ namespace TShockAPI
|
||||||
|
|
||||||
public bool CanRun(TSPlayer ply)
|
public bool CanRun(TSPlayer ply)
|
||||||
{
|
{
|
||||||
return ply.Group.HasPermission(Permission);
|
if (Permissions == null)
|
||||||
|
return true;
|
||||||
|
foreach (var Permission in Permissions)
|
||||||
|
{
|
||||||
|
if (ply.Group.HasPermission(Permission))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -191,7 +191,7 @@ namespace TShockAPI
|
||||||
{
|
{
|
||||||
if (Commands.ChatCommands.Count < 1)
|
if (Commands.ChatCommands.Count < 1)
|
||||||
Commands.InitCommands();
|
Commands.InitCommands();
|
||||||
return Commands.ChatCommands.Where(c => c.Permission == perm).ToList();
|
return Commands.ChatCommands.Where(c => c.Permissions.Contains(perm)).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue