public Boolean isChannelOpen() { ButtonAssignment ba = buttonAssignments[buttonAssignmentIndexes[CHANNEL_OPEN_FUNCTION]]; if (ba != null && ba.buttonIndex != -1) { if (ba.joystick != null) { try { return(ba.joystick.GetCurrentState().Buttons[ba.buttonIndex]); } catch (Exception) { // ignore this exception } } else if (ba.controller.guid == UDP_NETWORK_CONTROLLER_GUID && CrewChief.gameDefinition.gameEnum == GameEnum.PCARS_NETWORK) { return(PCarsUDPreader.getButtonState(ba.buttonIndex)); } else if (ba.controller.guid == UDP_NETWORK_CONTROLLER_GUID && CrewChief.gameDefinition.gameEnum == GameEnum.PCARS2_NETWORK) { return(PCars2UDPreader.getButtonState(ba.buttonIndex)); } } return(false); }
private void pollForButtonClicks(ButtonAssignment ba) { if (ba != null && ba.buttonIndex != -1) { if (ba.joystick != null) { try { if (ba.joystick != null) { JoystickState state = ba.joystick.GetCurrentState(); if (state != null) { Boolean click = state.Buttons[ba.buttonIndex]; if (click) { ba.hasUnprocessedClick = true; } } } } catch (Exception) { } } else if (ba.controller.guid == UDP_NETWORK_CONTROLLER_GUID) { if (CrewChief.gameDefinition.gameEnum == GameEnum.PCARS_NETWORK) { if (PCarsUDPreader.getButtonState(ba.buttonIndex)) { ba.hasUnprocessedClick = true; } } else if (CrewChief.gameDefinition.gameEnum == GameEnum.PCARS2_NETWORK) { if (PCars2UDPreader.getButtonState(ba.buttonIndex)) { ba.hasUnprocessedClick = true; } } } } }
public GameDataReader getGameStateReader(GameDefinition gameDefinition) { lock (this) { switch (gameDefinition.gameEnum) { case GameEnum.PCARS_NETWORK: if (pcarsUDPreader == null) { pcarsUDPreader = new PCarsUDPreader(); } return(pcarsUDPreader); case GameEnum.PCARS2_NETWORK: if (pcars2UDPreader == null) { pcars2UDPreader = new PCars2UDPreader(); } return(pcars2UDPreader); case GameEnum.PCARS_32BIT: case GameEnum.PCARS_64BIT: if (pcarsSharedMemoryReader == null) { pcarsSharedMemoryReader = new PCarsSharedMemoryReader(); } return(pcarsSharedMemoryReader); case GameEnum.PCARS2: if (pcars2SharedMemoryReader == null) { pcars2SharedMemoryReader = new PCars2SharedMemoryReader(); } return(pcars2SharedMemoryReader); case GameEnum.RACE_ROOM: if (r3eSharedMemoryReader == null) { r3eSharedMemoryReader = new R3ESharedMemoryReader(); } return(r3eSharedMemoryReader); case GameEnum.RF1: if (rf1SharedMemoryReader == null) { rf1SharedMemoryReader = new RF1SharedMemoryReader(); } return(rf1SharedMemoryReader); case GameEnum.ASSETTO_64BIT: case GameEnum.ASSETTO_32BIT: if (ascSharedMemoryReader == null) { ascSharedMemoryReader = new ACSSharedMemoryReader(); } return(ascSharedMemoryReader); case GameEnum.RF2_64BIT: if (rf2SharedMemoryReader == null) { rf2SharedMemoryReader = new RF2SharedMemoryReader(); } return(rf2SharedMemoryReader); case GameEnum.IRACING: if (iracingSharedMemoryReader == null) { iracingSharedMemoryReader = new iRacingSharedMemoryReader(); } return(iracingSharedMemoryReader); case GameEnum.F1_2018: if (f12018UDPReader == null) { f12018UDPReader = new F12018UDPreader(); } return(f12018UDPReader); } } return(null); }
private Boolean getFirstPressedButton(System.Windows.Forms.Form parent, ControllerData controllerData, ButtonAssignment buttonAssignment) { Boolean gotAssignment = false; if (controllerData.guid == UDP_NETWORK_CONTROLLER_GUID) { int assignedButton; if (CrewChief.gameDefinition.gameEnum == GameEnum.PCARS_NETWORK) { PCarsUDPreader gameDataReader = (PCarsUDPreader)GameStateReaderFactory.getInstance().getGameStateReader(GameDefinition.pCarsNetwork); assignedButton = gameDataReader.getButtonIndexForAssignment(); } else { PCars2UDPreader gameDataReader = (PCars2UDPreader)GameStateReaderFactory.getInstance().getGameStateReader(GameDefinition.pCars2Network); assignedButton = gameDataReader.getButtonIndexForAssignment(); } if (assignedButton != -1) { removeAssignmentsForControllerAndButton(controllerData.guid, assignedButton); buttonAssignment.controller = controllerData; buttonAssignment.buttonIndex = assignedButton; listenForAssignment = false; gotAssignment = true; } } else { listenForAssignment = true; // Instantiate the joystick try { var joystick = new Joystick(directInput, controllerData.guid); // Acquire the joystick joystick.SetCooperativeLevel(parent, (CooperativeLevel.NonExclusive | CooperativeLevel.Background)); joystick.Properties.BufferSize = 128; joystick.Acquire(); while (listenForAssignment) { Boolean[] buttons = joystick.GetCurrentState().Buttons; for (int i = 0; i < buttons.Count(); i++) { if (buttons[i]) { Console.WriteLine("Got button at index " + i); removeAssignmentsForControllerAndButton(controllerData.guid, i); buttonAssignment.controller = controllerData; buttonAssignment.joystick = joystick; buttonAssignment.buttonIndex = i; listenForAssignment = false; gotAssignment = true; } } if (!gotAssignment) { Thread.Sleep(20); } } if (!gotAssignment) { joystick.Unacquire(); } } catch (Exception e) { Console.WriteLine("Unable to acquire device " + controllerData.deviceName + " error: " + e.Message); listenForAssignment = false; gotAssignment = false; } } return(gotAssignment); }