public override void ExecuteCommand(EvtChatCommandArgs args) { //Console.WriteLine("Executed"); List <string> arguments = args.Command.ArgumentsAsList; if (arguments.Count > 1) { QueueMessage(UsageMessage); return; } int controllerIndex = 0; //Default to the user's controller port User user = DataHelper.GetUser(args.Command.ChatMessage.DisplayName); if (user != null) { controllerIndex = (int)user.ControllerPort; } //Parse the controller port if we have another argument if (arguments.Count == 1) { //Console.WriteLine("Found arg"); string arg = arguments[0]; //Couldn't parse if (int.TryParse(arg, out int value) == false) { QueueMessage(UsageMessage); return; } //Subtract 1 for consistency (Ex. player 1 is controller index 0) controllerIndex = value - 1; //Console.WriteLine($"Arg val set to {controllerIndex}"); } else { //Console.WriteLine("No arg found"); } //Console.WriteLine("CONTROLLER INDEX: " + controllerIndex); //Check if the controller port is out of range if (controllerIndex < 0 || controllerIndex >= DataContainer.ControllerMngr.ControllerCount) { QueueMessage($"Controller port is out of the 1 to {DataContainer.ControllerMngr.ControllerCount} range."); return; } //Get the controller IVirtualController controller = DataContainer.ControllerMngr.GetController(controllerIndex); if (controller.IsAcquired == false) { QueueMessage($"Controller at index {controllerIndex} is not acquired."); return; } StringBuilder stringBuilder = new StringBuilder(500); string startString = $"Pressed inputs for controller {controllerIndex + 1}: "; stringBuilder.Append(startString); //Get the console long lastConsoleID = DataHelper.GetSettingInt(SettingsConstants.LAST_CONSOLE, 1L); using (BotDBContext context = DatabaseManager.OpenContext()) { GameConsole lastConsole = context.Consoles.FirstOrDefault(c => c.ID == lastConsoleID); if (lastConsole == null) { QueueMessage("The current console is invalid!? No data is available."); return; } //Check which inputs are pressed List <InputData> validInputs = lastConsole.InputList; for (int i = 0; i < validInputs.Count; i++) { string inputName = validInputs[i].Name; ButtonStates btnState = controller.GetInputState(inputName); if (btnState == ButtonStates.Pressed) { stringBuilder.Append(inputName).Append(',').Append(' '); } } } //If the controller doesn't have any pressed inputs, mention it if (stringBuilder.Length == startString.Length) { stringBuilder.Append("None!"); } else { stringBuilder.Remove(stringBuilder.Length - 2, 2); } string finalStr = stringBuilder.ToString(); int maxCharLength = (int)DataHelper.GetSettingInt(SettingsConstants.BOT_MSG_CHAR_LIMIT, 500L); QueueMessageSplit(finalStr, maxCharLength, ", "); }
public override void ExecuteCommand(EvtChatCommandArgs e) { //Console.WriteLine("Executed"); List <string> args = e.Command.ArgumentsAsList; if (args.Count > 1) { BotProgram.MsgHandler.QueueMessage("Usage: \"controller number\""); return; } int controllerIndex = 0; //Default to the user's controller port User user = BotProgram.GetUser(e.Command.ChatMessage.DisplayName, false); if (user != null) { controllerIndex = user.Team; } //Parse the controller port if we have another argument if (args.Count == 1) { //Console.WriteLine("Found arg"); string arg = args[0]; //Couldn't parse if (int.TryParse(arg, out int value) == false) { BotProgram.MsgHandler.QueueMessage("Usage: \"controller number\""); return; } //Subtract 1 for consistency (Ex. player 1 is controller index 0) controllerIndex = value - 1; //Console.WriteLine($"Arg val set to {controllerIndex}"); } else { //Console.WriteLine("No arg found"); } //Console.WriteLine("CONTROLLER INDEX: " + controllerIndex); //Check if the controller port is out of range if (controllerIndex < 0 || controllerIndex >= InputGlobals.ControllerMngr.ControllerCount) { BotProgram.MsgHandler.QueueMessage($"controller port is out of the 1 to {InputGlobals.ControllerMngr.ControllerCount} range."); return; } //Get the controller IVirtualController controller = InputGlobals.ControllerMngr.GetController(controllerIndex); if (controller.IsAcquired == false) { BotProgram.MsgHandler.QueueMessage($"Controller at index {controllerIndex} is not acquired."); return; } //Console.WriteLine("Found controller and acquired"); StringBuilder stringBuilder = new StringBuilder(500); string startString = $"Pressed inputs for controller {controllerIndex + 1}: "; stringBuilder.Append(startString); //Check which inputs are pressed string[] validInputs = InputGlobals.ValidInputs; for (int i = 0; i < validInputs.Length; i++) { string inputName = validInputs[i]; ButtonStates btnState = controller.GetInputState(inputName); if (btnState == ButtonStates.Pressed) { stringBuilder.Append(inputName).Append(',').Append(' '); } } //If the controller doesn't have any pressed inputs, mention it if (stringBuilder.Length == startString.Length) { stringBuilder.Append("None!"); } else { stringBuilder.Remove(stringBuilder.Length - 2, 2); } string finalStr = stringBuilder.ToString(); BotProgram.MsgHandler.QueueMessage(finalStr); }