Esempio n. 1
0
        public RadioOverlayWindow()
        {
            //load opacity before the intialising as the slider changed
            //method fires after initialisation
            InitializeComponent();

            this.WindowStartupLocation = WindowStartupLocation.Manual;

            _aspectRatio = MinWidth / MinHeight;

            AllowsTransparency        = true;
            Opacity                   = _settings.GetPositionSetting(SettingsKeys.RadioOpacity).DoubleValue;
            WindowOpacitySlider.Value = Opacity;

            radioControlGroup[0] = Radio1;
            radioControlGroup[1] = Radio2;
            radioControlGroup[2] = Radio3;

            //allows click and drag anywhere on the window
            ContainerPanel.MouseLeftButtonDown += WrapPanel_MouseLeftButtonDown;

            Left = _settings.GetPositionSetting(SettingsKeys.RadioX).DoubleValue;
            Top  = _settings.GetPositionSetting(SettingsKeys.RadioY).DoubleValue;

            Width  = _settings.GetPositionSetting(SettingsKeys.RadioWidth).DoubleValue;
            Height = _settings.GetPositionSetting(SettingsKeys.RadioHeight).DoubleValue;

            //  Window_Loaded(null, null);
            CalculateScale();

            LocationChanged += Location_Changed;

            RadioRefresh(null, null);

            //init radio refresh
            _updateTimer = new DispatcherTimer {
                Interval = TimeSpan.FromMilliseconds(80)
            };
            _updateTimer.Tick += RadioRefresh;
            _updateTimer.Start();
        }
Esempio n. 2
0
        public MainWindow()
        {
            GCSettings.LatencyMode = GCLatencyMode.SustainedLowLatency;

            InitializeComponent();

            WindowStartupLocation = WindowStartupLocation.Manual;
            Left   = _settings.GetPositionSetting(SettingsKeys.ClientX).DoubleValue;
            Top    = _settings.GetPositionSetting(SettingsKeys.ClientY).DoubleValue;
            Title += " - 1.12.0.0 - ";
            Title += Properties.Settings.Default.ServerShortName;

            _logger.Debug("Connecting on Startup");

            var resolvedAddresses = Dns.GetHostAddresses(Properties.Settings.Default.SRSHost);

            _resolvedIp = resolvedAddresses.FirstOrDefault(xa => xa.AddressFamily == AddressFamily.InterNetwork); // Ensure we get an IPv4 address in case the host resolves to both IPv6 and IPv4

            if (_resolvedIp == null)
            {
                throw new Exception($"Could not determine IPv4 address for {Properties.Settings.Default.SRSHost}");
            }

            _port = Properties.Settings.Default.SRSPort;

            ServerName.Text     = Properties.Settings.Default.ServerName;
            ServerEndpoint.Text = Properties.Settings.Default.SRSHost + ":" + _port;

            var radioJson   = File.ReadAllText(AwacsRadiosFile);
            var awacsRadios = JsonConvert.DeserializeObject <List <RadioInformation> >(radioJson);

            var speechAuthenticated = false;

            // Wait until we have authorization with Azure before continuing. No point connecting to
            // SRS if we cannot process anything.
            var t = Task.Run(() => {
                while (speechAuthenticated == false)
                {
                    var authorizationToken = SpeechAuthorizationToken.AuthorizationToken;
                    if (authorizationToken == null)
                    {
                        Thread.Sleep(10000);
                    }
                    else
                    {
                        speechAuthenticated = true;
                    }
                }
            });

            t.Wait();

            foreach (var radio in awacsRadios)
            {
                var playerRadioInfo = new DCSPlayerRadioInfo
                {
                    LastUpdate = DateTime.Now.Ticks,
                    name       = radio.name,
                    ptt        = false,
                    radios     = new List <RadioInformation> {
                        radio
                    },
                    selected = 1,
                    latLng   = new DCSLatLngPosition {
                        lat = 0, lng = 0, alt = 0
                    },
                    simultaneousTransmission        = false,
                    simultaneousTransmissionControl = DCSPlayerRadioInfo.SimultaneousTransmissionControl.ENABLED_INTERNAL_SRS_CONTROLS,
                    unit       = "External AWACS",
                    unitId     = 100000001,
                    inAircraft = false,
                    iff        = new Transponder()
                };

                var audioManager = new AudioManager(playerRadioInfo);
                audioManager.ConnectToSrs(new IPEndPoint(_resolvedIp, _port));
                AudioManagers.Add(audioManager);
            }
            if (!string.IsNullOrEmpty(OverlordBot.Properties.Settings.Default.NewRelicApiKey))
            {
                MetricsManager.Start();
            }
        }
        public MainWindow()
        {
            GCSettings.LatencyMode = GCLatencyMode.SustainedLowLatency;

            InitializeComponent();

            DataContext = this;

            var client = ClientStateSingleton.Instance;

            WindowStartupLocation = WindowStartupLocation.Manual;
            Left = _settings.GetPositionSetting(SettingsKeys.ClientX).FloatValue;
            Top  = _settings.GetPositionSetting(SettingsKeys.ClientY).FloatValue;



            Title = Title + " - " + UpdaterChecker.VERSION;

            if (_settings.GetClientSetting(SettingsKeys.StartMinimised).BoolValue)
            {
                Hide();
                WindowState = WindowState.Minimized;

                Logger.Info("Started DCS-SimpleRadio Client " + UpdaterChecker.VERSION + " minimized");
            }
            else
            {
                Logger.Info("Started DCS-SimpleRadio Client " + UpdaterChecker.VERSION);
            }

            _guid = _settings.GetClientSetting(SettingsKeys.CliendIdShort).StringValue;

            Analytics.Log("Client", "Startup", _settings.GetClientSetting(SettingsKeys.ClientIdLong).RawValue);

            InitSettingsScreen();

            InitInput();

            InitAudioInput();

            InitAudioOutput();
            InitMicAudioOutput();

            _connectCommand           = new DelegateCommand(Connect, () => ServerAddress != null);
            FavouriteServersViewModel = new FavouriteServersViewModel(new CsvFavouriteServerStore());

            InitDefaultAddress();


            SpeakerBoost.Value = _settings.GetClientSetting(SettingsKeys.SpeakerBoost).DoubleValue;

            Speaker_VU.Value = -100;
            Mic_VU.Value     = -100;

            _audioManager = new AudioManager(_clients);
            _audioManager.SpeakerBoost = VolumeConversionHelper.ConvertVolumeSliderToScale((float)SpeakerBoost.Value);


            if ((SpeakerBoostLabel != null) && (SpeakerBoost != null))
            {
                SpeakerBoostLabel.Content = VolumeConversionHelper.ConvertLinearDiffToDB(_audioManager.SpeakerBoost);
            }

            UpdaterChecker.CheckForUpdate();


            InitFlowDocument();

            _dcsAutoConnectListener = new DCSAutoConnectListener(AutoConnect);

            _updateTimer = new DispatcherTimer {
                Interval = TimeSpan.FromMilliseconds(100)
            };
            _updateTimer.Tick += UpdateClientCount_VUMeters;
            _updateTimer.Start();
        }