public override void ExecuteCommand(EvtChatCommandArgs e) { List <string> args = e.Command.ArgumentsAsList; //See the console if (args.Count == 0) { BotProgram.MsgHandler.QueueMessage($"The current console is {InputGlobals.CurrentConsoleVal}. To set the console, add one as an argument: {GetValidConsoleStr()}"); return; } string consoleStr = args[0]; if (Enum.TryParse <InputGlobals.InputConsoles>(consoleStr, true, out InputGlobals.InputConsoles console) == false) { BotProgram.MsgHandler.QueueMessage($"Please enter a valid console: {GetValidConsoleStr()}"); return; } if (console == InputGlobals.CurrentConsoleVal) { BotProgram.MsgHandler.QueueMessage($"The current console is already {InputGlobals.CurrentConsoleVal}!"); return; } //First stop all inputs completely while changing consoles - we don't want data from other inputs remaining InputHandler.CancelRunningInputs(); //Wait until no inputs are running while (InputHandler.CurrentRunningInputs > 0) { } //Set console and buttons InputGlobals.SetConsole(console, args); for (int i = 0; i < InputGlobals.ControllerMngr.ControllerCount; i++) { IVirtualController controller = InputGlobals.ControllerMngr.GetController(i); if (controller.IsAcquired == true) { controller.Reset(); } } //Resume inputs InputHandler.ResumeRunningInputs(); BotProgram.MsgHandler.QueueMessage($"Set console to {InputGlobals.CurrentConsoleVal} and reset all running inputs!"); }