예제 #1
0
 public override void KeyReleased(KeyPayload payload)
 {
     AsyncHelper.RunSync(HandleDisplay);
 }
예제 #2
0
 public void HandleEliteEvents(object sender, JournalEventArgs e)
 {
     AsyncHelper.RunSync(HandleDisplay);
 }
예제 #3
0
        public override void KeyPressed(KeyPayload payload)
        {
            if (InputRunning || Program.Bindings == null)
            {
                ForceStop = true;
                return;
            }

            ForceStop = false;

            var isDisabled = (EliteData.StatusData.Docked ||
                              EliteData.StatusData.Landed ||
                              EliteData.StatusData.LandingGearDown ||
                              EliteData.StatusData.Supercruise ||
                              EliteData.StatusData.FsdJump //||

                                                           //EliteData.StatusData.CargoScoopDeployed ||
                                                           //EliteData.StatusData.SilentRunning ||
                                                           //EliteData.StatusData.ScoopingFuel ||
                                                           //EliteData.StatusData.IsInDanger ||
                                                           //EliteData.StatusData.BeingInterdicted ||
                                                           //EliteData.StatusData.HudInAnalysisMode ||
                                                           //EliteData.StatusData.FsdMassLocked ||
                                                           //EliteData.StatusData.FsdCharging ||
                                                           //EliteData.StatusData.FsdCooldown ||

                                                           //EliteData.StatusData.HardpointsDeployed
                              );



            if (!isDisabled && EliteData.LimpetCount > 0 && !string.IsNullOrEmpty(settings.Firegroup) && !string.IsNullOrEmpty(settings.Fire))
            {
                var cycle = Convert.ToInt32(settings.Firegroup) - EliteData.StatusData.Firegroup;

                if (cycle < 0)
                {
                    for (var f = 0; f < -cycle; f++)
                    {
                        SendKeypress(Program.Bindings.CycleFireGroupPrevious);
                        Thread.Sleep(30);
                    }
                }
                else if (cycle > 0)
                {
                    for (var f = 0; f < cycle; f++)
                    {
                        SendKeypress(Program.Bindings.CycleFireGroupNext);
                        Thread.Sleep(30);
                    }
                }

                Thread.Sleep(100);

                SendKeypress(settings.Fire == "PRIMARY"
                    ? Program.Bindings.PrimaryFire
                    : Program.Bindings.SecondaryFire);

                Thread.Sleep(100);

                if (cycle < 0)
                {
                    for (var f = 0; f < -cycle; f++)
                    {
                        Thread.Sleep(30);
                        SendKeypress(Program.Bindings.CycleFireGroupNext);
                    }
                }
                else if (cycle > 0)
                {
                    for (var f = 0; f < cycle; f++)
                    {
                        Thread.Sleep(30);
                        SendKeypress(Program.Bindings.CycleFireGroupPrevious);
                    }
                }

                if (_clickSound != null)
                {
                    try
                    {
                        AudioPlaybackEngine.Instance.PlaySound(_clickSound);
                    }
                    catch (Exception ex)
                    {
                        Logger.Instance.LogMessage(TracingLevel.FATAL, $"PlaySound: {ex}");
                    }
                }
            }
            else
            {
                if (_errorSound != null)
                {
                    try
                    {
                        AudioPlaybackEngine.Instance.PlaySound(_errorSound);
                    }
                    catch (Exception ex)
                    {
                        Logger.Instance.LogMessage(TracingLevel.FATAL, $"PlaySound: {ex}");
                    }
                }
            }

            AsyncHelper.RunSync(HandleDisplay);
        }
예제 #4
0
        public override void KeyPressed(KeyPayload payload)
        {
            if (InputRunning || Program.Binding == null)
            {
                ForceStop = true;
                return;
            }

            ForceStop = false;

            var isDisabled = (EliteData.StatusData.OnFoot ||
                              EliteData.StatusData.InSRV ||
                              EliteData.StatusData.Docked ||
                              EliteData.StatusData.Landed ||
                              EliteData.StatusData.LandingGearDown ||
                              EliteData.StatusData.CargoScoopDeployed ||

                              //EliteData.StatusData.SilentRunning ||
                              //EliteData.StatusData.ScoopingFuel ||
                              //EliteData.StatusData.IsInDanger ||
                              //EliteData.StatusData.BeingInterdicted ||
                              //EliteData.StatusData.HudInAnalysisMode ||

                              EliteData.StatusData.FsdMassLocked ||
                              //EliteData.StatusData.FsdCharging ||
                              EliteData.StatusData.FsdCooldown ||

                              //EliteData.StatusData.Supercruise ||
                              //EliteData.StatusData.FsdJump ||
                              EliteData.StatusData.HardpointsDeployed);

            if (!isDisabled)
            {
                switch (settings.Function)
                {
                case "HYPERSUPERCOMBINATION"
                    :     // context dependent, i.e. jump if another system is targeted, supercruise if not.
                    SendKeypress(Program.Binding[BindingType.Ship].HyperSuperCombination);
                    break;

                case "SUPERCRUISE":     // supercruise even if another system targeted
                    SendKeypress(Program.Binding[BindingType.Ship].Supercruise);
                    break;

                case "HYPERSPACE":     // jump
                    SendKeypress(Program.Binding[BindingType.Ship].Hyperspace);
                    break;
                }

                if (_clickSound != null)
                {
                    try
                    {
                        AudioPlaybackEngine.Instance.PlaySound(_clickSound);
                    }
                    catch (Exception ex)
                    {
                        Logger.Instance.LogMessage(TracingLevel.FATAL, $"PlaySound: {ex}");
                    }
                }
            }
            else
            {
                if (_errorSound != null)
                {
                    try
                    {
                        AudioPlaybackEngine.Instance.PlaySound(_errorSound);
                    }
                    catch (Exception ex)
                    {
                        Logger.Instance.LogMessage(TracingLevel.FATAL, $"PlaySound: {ex}");
                    }
                }
            }

            AsyncHelper.RunSync(HandleDisplay);
        }