add support for single-argument commands
This commit is contained in:
parent
0440abd027
commit
bdee3e57bf
1 changed files with 19 additions and 6 deletions
|
@ -39,7 +39,8 @@ public class CollabVMClient {
|
|||
private TurnUpdateEventArgs _currentturn;
|
||||
private VoteUpdateEventArgs _currentvote;
|
||||
private WebProxy? _proxy;
|
||||
private Dictionary<string, Action<string, string[]>> commands;
|
||||
private Dictionary<string, Action<string, string[]>> commandsSeparatedArgs;
|
||||
private Dictionary<string, Action<string, string>> commandsOneArg;
|
||||
// Tasks and related
|
||||
private TaskCompletionSource<Node[]> GotNodeList;
|
||||
private TaskCompletionSource<bool> GotConnectionToNode;
|
||||
|
@ -92,7 +93,8 @@ public class CollabVMClient {
|
|||
}
|
||||
this.username = username;
|
||||
this.node = node;
|
||||
this.commands = new();
|
||||
this.commandsSeparatedArgs = new();
|
||||
this.commandsOneArg = new();
|
||||
this._rank = Rank.Unregistered;
|
||||
this._perms = Permissions.None;
|
||||
this._connected = false;
|
||||
|
@ -830,9 +832,18 @@ public class CollabVMClient {
|
|||
/// Register a command for users on the VM to run
|
||||
/// </summary>
|
||||
/// <param name="cmd">The command which triggers the callback. For example, "!ban" would match "!ban guest12345"</param>
|
||||
/// <param name="callback">Function to be called when a user executes the command. The first parameter is a username and the last is an array of arguments</param>
|
||||
/// <param name="callback">Function to be called when a user executes the command. The first parameter is a username and the last is an array of arguments supplied by the user</param>
|
||||
public void RegisterCommand(string cmd, Action<string, string[]> callback) {
|
||||
this.commands.Add(cmd, callback);
|
||||
this.commandsSeparatedArgs.Add(cmd, callback);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Register a command for users on the VM to run
|
||||
/// </summary>
|
||||
/// <param name="cmd">The command which triggers the callback. For example, "!ban" would match "!ban guest12345"</param>
|
||||
/// <param name="callback">Function to be called when a user executes the command. The first parameter is a username and the last is a string containing the argument supplied by the user.</param>
|
||||
public void RegisterCommand(string cmd, Action<string, string> callback) {
|
||||
this.commandsOneArg.Add(cmd, callback);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -855,8 +866,10 @@ public class CollabVMClient {
|
|||
catch {
|
||||
return;
|
||||
}
|
||||
if (commands.ContainsKey(args[0]))
|
||||
commands[args[0]](username, args.Skip(1).ToArray());
|
||||
if (commandsSeparatedArgs.ContainsKey(args[0]))
|
||||
commandsSeparatedArgs[args[0]](username, args.Skip(1).ToArray());
|
||||
else if (commandsOneArg.ContainsKey(args[0]))
|
||||
commandsOneArg[args[0]](username, cmd.Substring(cmd.IndexOf(" ") + 1));
|
||||
}
|
||||
|
||||
public Image GetFramebuffer() => framebuffer.CloneAs<Rgba32>();
|
||||
|
|
Loading…
Reference in a new issue