private void StartGame_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                WriteConfig writeConfig = new WriteConfig(_errorHandler);
                writeConfig.UpdateLauncherConfig(new Dictionary<string, string>() { { "<lastLaunchGame>", (string)ListOfMods.SelectedItem }, { "<lastLaunchMode>", (string)ListOfLaunchMode.SelectedItem } });

                writeConfig.WriteConfigBySelectionGame(ListOfMods.SelectedValue.ToString(), _configReader.Games, _configReader.ListBaseConfigDictionary);

                var hdMode = _configReader.ReadHdMode();

                switch (hdMode)
                {
                    case "WithOutHD":
                        writeConfig.WriteConfigBySelectionGame(ListOfMods.SelectedValue.ToString(), _configReader.Games, _configReader.ListWithOutHdConfigDictionary);
                        break;
                    case "WithHDWithDefaultSight":
                        writeConfig.WriteConfigBySelectionGame(ListOfMods.SelectedValue.ToString(), _configReader.Games, _configReader.ListWithHdWithDefaultSightConfigDictionary);
                        break;
                    case "WithHDWithSmallSight":
                        writeConfig.WriteConfigBySelectionGame(ListOfMods.SelectedValue.ToString(), _configReader.Games, _configReader.ListWithHdWithSmallSightConfigDictionary);
                        break;
                    case "WithHDWithHardcoreSight":
                        writeConfig.WriteConfigBySelectionGame(ListOfMods.SelectedValue.ToString(), _configReader.Games, _configReader.ListWithHdWithHardcoreSightConfigDictionary);
                        break;
                    case "WithHDWithOvalSight":
                        writeConfig.WriteConfigBySelectionGame(ListOfMods.SelectedValue.ToString(), _configReader.Games, _configReader.ListWithHdWithOvalSightConfigDictionary);
                        break;
                }

                var fullScreenList = new List<Dictionary<string, string>>();
                for (var i = 0; i < _configReader.Games.Length; i++)
                {
                    fullScreenList.Add(new Dictionary<string, string>() {{"r_fullScreen", _configReader.FullScreen}});
                }
                writeConfig.WriteConfigBySelectionGame(ListOfMods.SelectedValue.ToString(), _configReader.Games, fullScreenList);

                string parametr = string.Empty;
                string console = string.Empty;

                if (ListOfLaunchMode.SelectedIndex == 0)
                {
                    parametr = " /AFFINITY 0x2";
                }

                if (_configReader.Console)
                {
                    console = "-console";
                }

                string command = String.Format("{0} {1} {2} {3}", "/C start", parametr,
                    "\"Ex Machina\" " + _configReader.ExeName, console);
                Process cmd = new Process();
                cmd.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory();
                cmd.StartInfo.FileName = "cmd.exe";
                cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                cmd.StartInfo.Arguments = command;
                cmd.Start();
                this.Close();

            }
            catch (Exception ex)
            {
                _errorHandler.CallErrorWindows(ex, "StartGame_Click");
            }
        }
        private void Save_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                WriteConfig writeConfig = new WriteConfig(_errorHandler);

                var resolution = ResolutionComboBox.SelectedItem.ToString().Split('×');
                _gameSettings.DesiredHeight = Convert.ToInt32(resolution[1]);
                _gameSettings.DesiredWidth = Convert.ToInt32(resolution[0]);
                _gameSettings.Height = Convert.ToInt32(resolution[1]);
                _gameSettings.Width = Convert.ToInt32(resolution[0]);
                _gameSettings.LsViewDistanceDivider = ViewDistanceSlider.Value;
                _gameSettings.ProjectorsFarDist = Convert.ToInt32(ProjectorsFarDistSlider.Value);
                _gameSettings.GrassDrawDist = GrassDrawDistSlider.Value;
                switch ((string)WaterQualityComboBox.SelectedItem)
                {
                    case "Низкое":
                        _gameSettings.WaterQuality = 1;
                        break;
                    case "Среднее":
                        _gameSettings.WaterQuality = 2;
                        break;
                    case "Высокое":
                        _gameSettings.WaterQuality = 3;
                        break;
                }
                switch ((string)ShadowsQualityComboBox.SelectedItem)
                {
                    case "Низкое":
                        _gameSettings.DsShadows = false;
                        _gameSettings.DetShadowTexSz = 512;
                        _gameSettings.LgtShadowTexSz = 256;
                        break;
                    case "Среднее":
                        _gameSettings.DsShadows = true;
                        _gameSettings.DetShadowTexSz = 512;
                        _gameSettings.LgtShadowTexSz = 256;
                        break;
                    case "Высокое":
                        _gameSettings.DsShadows = true;
                        _gameSettings.DetShadowTexSz = 1024;
                        _gameSettings.LgtShadowTexSz = 512;
                        break;
                }
                _gameSettings.ShadowBlurCoeff = ShadowBlurCoeffSlider.Value;
                switch ((string)PostEffectBloomComboBox.SelectedItem)
                {
                    case "Низкое":
                        _gameSettings.PostEffectBloom = 0;
                        break;
                    case "Среднее":
                        _gameSettings.PostEffectBloom = 1;
                        break;
                    case "Высокое":
                        _gameSettings.PostEffectBloom = 2;
                        break;
                }
                switch ((string)SmoothingComboBox.SelectedItem)
                {
                    case "Отключено":
                        _gameSettings.MultiSamplesNum = 0;
                        break;
                    case "×2":
                        _gameSettings.MultiSamplesNum = 2;
                        break;
                    case "×4":
                        _gameSettings.MultiSamplesNum = 4;
                        break;
                    case "×8":
                        _gameSettings.MultiSamplesNum = 8;
                        break;
                }
                switch ((string)TexturesFilterComboBox.SelectedItem)
                {
                    case "Билинейная":
                        _gameSettings.TexturesFilter = 4;
                        _gameSettings.ShaderMacro1 = "MIP_FILTER Point";
                        break;
                    case "Трилинейная":
                        _gameSettings.TexturesFilter = 5;
                        _gameSettings.ShaderMacro1 = "MIP_FILTER Linear";
                        break;
                    case "Анизотропная":
                        _gameSettings.TexturesFilter = 3;
                        _gameSettings.ShaderMacro1 = "MIP_FILTER Linear";
                        break;
                }
                _gameSettings.Gamma = GammaGammaSlider.Value;
                if (AutoPlayVideoCheckBox.IsChecked != null) _gameSettings.AutoPlayVideo = (bool)AutoPlayVideoCheckBox.IsChecked;
                if (DoNotLoadMainmenuLevelCheckBox.IsChecked != null) _gameSettings.DoNotLoadMainmenuLevel = (bool)!DoNotLoadMainmenuLevelCheckBox.IsChecked;
                _gameSettings.Fov = FovSlider.Value;
                if (SwitchCameraAllowCheckBox.IsChecked != null) _gameSettings.SwitchCameraAllow = (bool)SwitchCameraAllowCheckBox.IsChecked;
                _gameSettings.CamSpeed = Convert.ToInt32(CamSpeedSlider.Value);
                _gameSettings.Volume = Convert.ToInt32(MusicVolumeSlider.Value);
                _gameSettings.Volume3D = Convert.ToInt32(EffectVolumeSlider.Value);
                _gameSettings.Volume2D = Convert.ToInt32(SpeakVolumeSlider.Value);

                _gameSettings.SaveSettingsToConfig();

                if (HdCheckBox.IsChecked != null && (bool)HdCheckBox.IsChecked)
                {
                    string sightQualityToConfig;
                    switch ((string)SightComboBox.SelectedItem)
                    {
                        case "Маленький":
                            sightQualityToConfig = "WithHDWithSmallSight";
                            break;
                        case "Овальный":
                            sightQualityToConfig = "WithHDWithOvalSight";
                            break;
                        case "Реалистичный":
                            sightQualityToConfig = "WithHDWithHardcoreSight";
                            break;
                        default:
                            sightQualityToConfig = "WithHDWithDefaultSight";
                            break;
                    }
                    writeConfig.UpdateLauncherConfig(new Dictionary<string, string>() { { "<launcherHDMode>", sightQualityToConfig } });
                }
                else
                {
                    writeConfig.UpdateLauncherConfig(new Dictionary<string, string>() { { "<launcherHDMode>", "WithOutHD" } });
                }

                this.Close();
            }
            catch (Exception ex)
            {
                _errorHandler.CallErrorWindows(ex, "Save_Click");
                this.Close();
            }
        }