public void Handle(bool forwardEvent)
        {
            if (Extractor.State.NetworkMode != NetworkMode.Client)
            {
                var useIncrementByOne = false;
                var incByOneCallback  = KeyFileUtils.FindKeyBinding("SimHsiHdgIncBy1");
                if (incByOneCallback != null && incByOneCallback.Key.ScanCode != (int)ScanCodes.NotAssigned)
                {
                    useIncrementByOne = true;
                }
                KeyFileUtils.SendCallbackToFalcon(useIncrementByOne ? "SimHsiHdgIncBy1" : "SimHsiHeadingInc");
            }
            if (!forwardEvent)
            {
                return;
            }
            switch (Extractor.State.NetworkMode)
            {
            case NetworkMode.Client:
                ExtractorClient.SendMessageToServer(new Message(MessageType.EHSILeftKnobIncrease));
                break;

            case NetworkMode.Server:
                ExtractorServer.SubmitMessageToClientFromServer(new Message(MessageType.EHSILeftKnobIncrease));
                break;
            }
        }
        public void Handle(bool forwardEvent)
        {
            var azimuthIndicator = _instruments[InstrumentType.AzimuthIndicator].Renderer as IAzimuthIndicator;

            if (azimuthIndicator != null)
            {
                var newBrightness = azimuthIndicator.InstrumentState.Brightness + ((int)(azimuthIndicator.InstrumentState.MaxBrightness * (1.0f / 32.0f)));
                if (newBrightness > azimuthIndicator.InstrumentState.MaxBrightness)
                {
                    newBrightness = azimuthIndicator.InstrumentState.MaxBrightness;
                }
                azimuthIndicator.InstrumentState.Brightness = newBrightness;
                Settings.Default.AzimuthIndicatorBrightness = newBrightness;
            }
            if (!forwardEvent)
            {
                return;
            }

            switch (Extractor.State.NetworkMode)
            {
            case NetworkMode.Client:
                ExtractorClient.SendMessageToServer(new Message(MessageType.AzimuthIndicatorBrightnessIncrease));
                break;

            case NetworkMode.Server:
                ExtractorServer.SubmitMessageToClientFromServer(new Message(MessageType.AzimuthIndicatorBrightnessIncrease));
                break;
            }
        }
Пример #3
0
        public void Handle(bool forwardEvent)
        {
            Extractor.State.NightMode = !Extractor.State.NightMode;
            if (!forwardEvent)
            {
                return;
            }
            switch (Extractor.State.NetworkMode)
            {
            case NetworkMode.Client:
                ExtractorClient.SendMessageToServer(new Message(MessageType.ToggleNightMode));
                break;

            case NetworkMode.Server:
                ExtractorServer.SubmitMessageToClientFromServer(new Message(MessageType.ToggleNightMode));
                break;
            }
        }
Пример #4
0
        public void Handle(bool forwardEvent)
        {
            _ehsiStateTracker.RightKnobDepressedTime    = DateTime.UtcNow;
            _ehsiStateTracker.RightKnobReleasedTime     = null;
            _ehsiStateTracker.RightKnobLastActivityTime = DateTime.UtcNow;
            if (!forwardEvent)
            {
                return;
            }
            switch (Extractor.State.NetworkMode)
            {
            case NetworkMode.Client:
                ExtractorClient.SendMessageToServer(new Message(MessageType.EHSIRightKnobDepressed));
                break;

            case NetworkMode.Server:
                ExtractorServer.SubmitMessageToClientFromServer(new Message(MessageType.EHSIRightKnobDepressed));
                break;
            }
        }
        public void Handle(bool forwardEvent)
        {
            _ehsiStateTracker.RightKnobLastActivityTime = DateTime.UtcNow;
            var ehsi = _ehsiStateTracker.EHSI;

            if (ehsi.InstrumentState.ShowBrightnessLabel)
            {
                var newBrightness =
                    (int)Math.Floor((ehsi.InstrumentState.Brightness - (ehsi.InstrumentState.MaxBrightness * (1.0f / 32.0f))));
                ehsi.InstrumentState.Brightness = newBrightness;
                Settings.Default.EHSIBrightness = newBrightness;
            }
            else
            {
                if (Extractor.State.NetworkMode != NetworkMode.Client)
                {
                    var useDecrementByOne = false;
                    var decByOneCallback  = KeyFileUtils.FindKeyBinding("SimHsiCrsDecBy1");
                    if (decByOneCallback != null && decByOneCallback.Key.ScanCode != (int)ScanCodes.NotAssigned)
                    {
                        useDecrementByOne = true;
                    }
                    KeyFileUtils.SendCallbackToFalcon(useDecrementByOne ? "SimHsiCrsDecBy1" : "SimHsiCourseDec");
                }
            }
            if (!forwardEvent)
            {
                return;
            }
            switch (Extractor.State.NetworkMode)
            {
            case NetworkMode.Client:
                ExtractorClient.SendMessageToServer(new Message(MessageType.EHSIRightKnobDecrease));
                break;

            case NetworkMode.Server:
                ExtractorServer.SubmitMessageToClientFromServer(new Message(MessageType.EHSIRightKnobDecrease));
                break;
            }
        }
Пример #6
0
        public void Handle(bool forwardEvent)
        {
            if (Extractor.State.NetworkMode != NetworkMode.Client)
            {
                KeyFileUtils.SendCallbackToFalcon("SimStepHSIMode");
            }
            if (!forwardEvent)
            {
                return;
            }

            switch (Extractor.State.NetworkMode)
            {
            case NetworkMode.Client:
                ExtractorClient.SendMessageToServer(new Message(MessageType.EHSIMenuButtonDepressed));
                break;

            case NetworkMode.Server:
                ExtractorServer.SubmitMessageToClientFromServer(new Message(MessageType.EHSIMenuButtonDepressed));
                break;
            }
        }
        public void Handle(bool forwardEvent)
        {
            var isis = _instruments[InstrumentType.ISIS].Renderer as IISIS;

            if (isis != null)
            {
                isis.InstrumentState.Brightness = (int)Math.Floor((isis.InstrumentState.MaxBrightness) * 0.5f);
            }
            if (!forwardEvent)
            {
                return;
            }
            switch (Extractor.State.NetworkMode)
            {
            case NetworkMode.Client:
                ExtractorClient.SendMessageToServer(new Message(MessageType.ISISStandardButtonDepressed));
                break;

            case NetworkMode.Server:
                ExtractorServer.SubmitMessageToClientFromServer(new Message(MessageType.ISISStandardButtonDepressed));
                break;
            }
        }
            public void Adapt(IInstrument instrument, F4TexSharedMem.IReader texSharedMemReader, Rectangle sourceRectangle, InstrumentType instrumentType)
            {
                if (instrument == null || instrument.Renderer as IMfdRenderer == null)
                {
                    return;
                }

                var mfd = instrument.Renderer as IMfdRenderer;

                try
                {
                    mfd.InstrumentState.TestMode = Extractor.State.OptionsFormIsShowing;
                    if ((NetworkMode)Settings.Default.NetworkingMode == NetworkMode.Client && instrument.Form != null && instrument.Form.Visible)
                    {
                        mfd.InstrumentState.SourceImage = ExtractorClient.GetInstrumentImage(instrumentType);
                    }
                    else if (!mfd.InstrumentState.TestMode)
                    {
                        mfd.InstrumentState.SourceImage = sourceRectangle.IsEmpty
                            ? null
                            : texSharedMemReader != null?texSharedMemReader.GetImage(sourceRectangle) : null;
                    }
                    mfd.InstrumentState.SourceRectangle = mfd.InstrumentState.SourceImage != null ? new Rectangle(0, 0, mfd.InstrumentState.SourceImage.Width, mfd.InstrumentState.SourceImage.Height) : Rectangle.Empty;
                    mfd.InstrumentState.Blank           = !Extractor.State.SimRunning;
                    if (!Extractor.State.Running || !Extractor.State.KeepRunning)
                    {
                        mfd.InstrumentState.SourceImage = null;
                    }
                    if ((NetworkMode)Settings.Default.NetworkingMode == NetworkMode.Server)
                    {
                        ExtractorServer.SetInstrumentImage(mfd.InstrumentState.SourceImage, instrumentType);
                    }
                }
                catch (InvalidOperationException) { }
                catch (AccessViolationException) { }
            }
        public void Handle(bool forwardEvent)
        {
            var airspeedIndicator = (_instruments[InstrumentType.ASI].Renderer as IAirspeedIndicator);

            if (airspeedIndicator != null)
            {
                airspeedIndicator.InstrumentState.AirspeedIndexKnots += 2.5F;
            }
            if (!forwardEvent)
            {
                return;
            }

            switch (Extractor.State.NetworkMode)
            {
            case NetworkMode.Client:
                ExtractorClient.SendMessageToServer(new Message(MessageType.AirspeedIndexIncrease));
                break;

            case NetworkMode.Server:
                ExtractorServer.SubmitMessageToClientFromServer(new Message(MessageType.AirspeedIndexIncrease));
                break;
            }
        }
        public void Handle(bool forwardEvent)
        {
            var accelerometer = _instruments[InstrumentType.Accelerometer].Renderer as IAccelerometer;

            if (accelerometer != null)
            {
                accelerometer.InstrumentState.ResetMinAndMaxGs();
            }
            if (!forwardEvent)
            {
                return;
            }

            switch (Extractor.State.NetworkMode)
            {
            case NetworkMode.Client:
                ExtractorClient.SendMessageToServer(new Message(MessageType.AccelerometerIsReset));
                break;

            case NetworkMode.Server:
                ExtractorServer.SubmitMessageToClientFromServer(new Message(MessageType.AccelerometerIsReset));
                break;
            }
        }
        public FlightData GetFlightData()
        {
            FlightData toReturn = null;

            if ((Extractor.State.OptionsFormIsShowing && !Extractor.State.SimRunning) || (!Extractor.State.SimRunning && Extractor.State.NetworkMode != NetworkMode.Client))
            {
                return(EmptyFlightData);
            }
            switch (Extractor.State.NetworkMode)
            {
            case NetworkMode.Standalone:
            case NetworkMode.Server:
            {
                var sharedMemReader = _sharedmemReaderFactory.Create();
                toReturn = sharedMemReader.GetCurrentData();
            }
            break;

            case NetworkMode.Client:
                toReturn = ExtractorClient.GetFlightData() ?? EmptyFlightData;
                break;
            }
            return(toReturn ?? EmptyFlightData);
        }