コード例 #1
0
        private void MyManager_DataRxEvent(RequestsEnum request, SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE data)
        {
            try
            {
                if (request == RequestsEnum.RefreshDataRequest)
                {
                    RefreshDataStruct receivedData = (RefreshDataStruct)data.dwData[0];
                    tugHeading = receivedData.trueHeading;

                    if (parkingBrakeSet != receivedData.parkingBrakeState)
                    {
                        parkingBrakeSet = receivedData.parkingBrakeState;
                        SetTugVelocity(tugVelocitySet);
                    }

                    if (receivedData.pushbackState == 3)
                    {
                        Status = TugStatus.Disabled;
                    }
                    else if (receivedData.pushbackState == 0 && !TugActive)
                    {
                        Status = TugStatus.Waiting;
                        StartTugMode();
                    }
                }
                else if (request == RequestsEnum.StartTugMode)
                {
                    RefreshDataStruct receivedData = (RefreshDataStruct)data.dwData[0];
                    Status = TugStatus.Waiting;
                }
            }
            catch (Exception) { }
        }
コード例 #2
0
 public void RequestData(RequestsEnum request, DefinitionsEnum definition)
 {
     if (!Connected)
     {
         return;
     }
     simClient.RequestDataOnSimObjectType(request, definition, 0, SIMCONNECT_SIMOBJECT_TYPE.USER);
 }
コード例 #3
0
        private void MyManager_DataRxEvent(RequestsEnum request, Microsoft.FlightSimulator.SimConnect.SIMCONNECT_RECV_SIMOBJECT_DATA data)
        {
            try
            {
                if (request == RequestsEnum.RefreshDataRequest)
                {
                    RefreshDataStruct receivedData = (RefreshDataStruct)data.dwData[0];

                    if (ParkingBrakeOn != receivedData.parkingBrakeState)
                    {
                        ParkingBrakeOn = receivedData.parkingBrakeState;
                    }
                }
            }
            catch (Exception) { }
        }
コード例 #4
0
        private void MyManager_DataRxEvent(RequestsEnum request, SIMCONNECT_RECV_SIMOBJECT_DATA data)
        {
            try
            {
                if (request == RequestsEnum.RefreshDataRequest)
                {
                    RefreshDataStruct receivedData = (RefreshDataStruct)data.dwData[0];
                    tugHeading = receivedData.trueHeading;

                    if (parkingBrakeSet != receivedData.parkingBrakeState)
                    {
                        parkingBrakeSet = receivedData.parkingBrakeState;
                        switch (Status)
                        {
                        case TugStatus.Forward:
                            SetTugSpeed(SpeedFactor);
                            break;

                        case TugStatus.Reverse:
                            SetTugSpeed(-SpeedFactor);
                            break;
                        }
                    }

                    if (receivedData.pushbackState == 3)
                    {
                        Status = TugStatus.Disabled;
                    }
                    else if (receivedData.pushbackState == 0 && !TugActive)
                    {
                        Status = TugStatus.Waiting;
                        StartTugMode();
                    }
                }
                else if (request == RequestsEnum.StartTugMode)
                {
                    RefreshDataStruct receivedData = (RefreshDataStruct)data.dwData[0];
                    Status = TugStatus.Waiting;
                }
            }
            catch (Exception) { }
        }
コード例 #5
0
        private void MyManager_DataRxEvent(RequestsEnum request, SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE data)
        {
            try
            {
                if (request == RequestsEnum.ExitTypeRequest)
                {
                    uint           i        = 0;
                    ExitDataStruct exitData = (ExitDataStruct)data.dwData[0];
                    foreach (var field in (exitData.GetType().GetFields()))
                    {
                        exitTypeArray[i] = (double)field.GetValue(exitData);
                        i++;
                    }

                    /*
                     * The exit data types returned from SimConnect do not match what is expected. This method below attempts to map each aircraft to known working values per plane type
                     * Exit type 0 = Main
                     * Exit type 1 = Cargo
                     * Exit type 2 = Emergency
                     * Exit type 99 = Unused
                     */
                    if (exitTypeArray[3] == 0)   //Type A320
                    {
                        mainExitIndex      = 0;
                        emergencyExitIndex = 3;
                        cargoExitIndex     = 5;
                    }
                    else if (exitTypeArray[13] == 1)   //Type 747
                    {
                        mainExitIndex      = 10;
                        emergencyExitIndex = 1;
                        cargoExitIndex     = 12;
                    }
                    else if (exitTypeArray[10] == 1)   //Type 787
                    {
                        mainExitIndex      = 0;
                        emergencyExitIndex = 7;
                        cargoExitIndex     = 8;
                    }
                    else
                    {
                        mainExitIndex      = 0;
                        emergencyExitIndex = 1;
                        cargoExitIndex     = 2;
                    }
                }
                else if (request == RequestsEnum.ExitOpenRequest)
                {
                    uint           i        = 0;
                    ExitDataStruct exitData = (ExitDataStruct)data.dwData[0];
                    foreach (var field in (exitData.GetType().GetFields()))
                    {
                        exitOpenArray[i] = (double)field.GetValue(exitData);
                        i++;
                    }

                    MainExit      = exitOpenArray[mainExitIndex] > .5;
                    CargoExit     = exitOpenArray[cargoExitIndex] > .5;
                    EmergencyExit = exitOpenArray[emergencyExitIndex] > .5;
                }
            }
            catch (Exception) { }
        }