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 (PCarsUDPreader.getButtonState(ba.buttonIndex))
             {
                 ba.hasUnprocessedClick = true;
             }
         }
     }
 }
예제 #2
0
        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);
        }
예제 #3
0
        public GameDataReader getGameStateReader(GameDefinition gameDefinition)
        {
            lock (this)
            {
                switch (gameDefinition.gameEnum)
                {
                case GameEnum.PCARS_NETWORK:
                    if (pcarsUDPreader == null)
                    {
                        pcarsUDPreader = new PCarsUDPreader();
                    }
                    return(pcarsUDPreader);

                case GameEnum.PCARS_32BIT:
                case GameEnum.PCARS_64BIT:
                    if (pcarsSharedMemoryReader == null)
                    {
                        pcarsSharedMemoryReader = new PCarsSharedMemoryReader();
                    }
                    return(pcarsSharedMemoryReader);

                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);
                }
            }
            return(null);
        }
        private Boolean getFirstPressedButton(System.Windows.Forms.Form parent, ControllerData controllerData, ButtonAssignment buttonAssignment)
        {
            Boolean gotAssignment = false;

            if (controllerData.guid == UDP_NETWORK_CONTROLLER_GUID)
            {
                PCarsUDPreader gameDataReader = (PCarsUDPreader)GameStateReaderFactory.getInstance().getGameStateReader(GameDefinition.pCarsNetwork);
                int            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
                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)
                {
                    joystick.Unacquire();
                }
            }
            return(gotAssignment);
        }
        private void InitialiseCapture()
        {
            if (pcarsUDPreader == null)
            {
                WriteToConsole("Initialising UDP Reader");
                pcarsUDPreader = new PCarsAPI.PCarsUDPreader();
            }
            if (evHubSender == null)
            {
                WriteToConsole("Initialising Event Hub");
                evHubSender = new EventHubSender();
                evHubSender.Initialise(evHubConnString, evHubName);
                WriteToConsole("Event Hub initialised");
            }

            StartListening();
        }