/// <summary>Executes the trigger in Context</summary> public void ExecuteInContext(CmdTrigger <RealmServerCmdArgs> trigger, Action <CmdTrigger <RealmServerCmdArgs> > doneCallback, Action <CmdTrigger <RealmServerCmdArgs> > failCalback) { BaseCommand <RealmServerCmdArgs> cmd = this.GetCommand(trigger); if (cmd == null) { return; } if (cmd.GetRequiresContext()) { if (trigger.Args.Context == null) { RealmCommandHandler.OnInvalidArguments(trigger, (RealmServerCommand)cmd.RootCmd); } else { trigger.Args.Context.ExecuteInContext((Action)(() => this.Execute(trigger, cmd, doneCallback, failCalback))); } } else { this.Execute(trigger, cmd, doneCallback, failCalback); } }
public static void Initialize() { if (RealmCommandHandler.Instance.TriggerValidator != null) { return; } char ch; if (RealmCommandHandler.CommandPrefixes.Contains <char>(ch = RealmCommandHandler.ExecCommandPrefix) || RealmCommandHandler.CommandPrefixes.Contains <char>(ch = RealmCommandHandler.SelectCommandPrefix)) { throw new ArgumentException("Invalid Command-prefix may not be used as Command-prefix: " + (object)ch); } RealmCommandHandler.Instance.TriggerValidator = (CommandMgr <RealmServerCmdArgs> .TriggerValidationHandler)((trigger, cmd, silent) => { Command <RealmServerCmdArgs> rootCmd = cmd.RootCmd; if (rootCmd is CommandMgr <RealmServerCmdArgs> .HelpCommand) { return(true); } if (!trigger.Args.Role.MayUse(rootCmd)) { if (!silent) { trigger.Reply(RealmLangKey.MustNotUseCommand, (object)cmd.Name); } return(false); } if (rootCmd is RealmServerCommand && !trigger.Args.CheckArgs(rootCmd)) { if (!silent) { RealmCommandHandler.OnInvalidArguments(trigger, (RealmServerCommand)rootCmd); } return(false); } if (!(trigger.Args.Target is Character) || !(((Character)trigger.Args.Target).Account.Role > trigger.Args.Role)) { return(true); } if (!silent) { trigger.Reply("Insufficient privileges."); } return(false); }); RealmCommandHandler.Instance.AddCmdsOfAsm(typeof(RealmCommandHandler).Assembly); RealmCommandHandler.Instance.UnknownCommand += (CommandMgr <RealmServerCmdArgs> .UnknownCommandHandler)(trigger => trigger.Reply("Unknown Command \"" + trigger.Alias + "\" - Type ? for help.")); }