public MainForm() { // Create form controls InitializeComponent(); // Set instance Instance = this; // Make sure the basic configuration settings are setup by the user, // and load the BF2 server and installed mods if (!SetupManager.Run()) { this.Load += (s, e) => this.Close(); return; } // Load Bf2 mods LoadModList(); // Load client settings ClientSettings.Load(); ReloadProviders(); ReloadServers(); // Setup theme metroStyleManager1.Theme = MetroThemeStyle.Light; metroStyleManager1.Style = MetroColorStyle.Blue; // Set default texts InstallDirTextbox.Text = Program.Config.Bf2InstallDir; // Load Redirector bool AllSystemsGo = Redirector.Initialize(); // Select provider if we have redirects detected if (Redirector.RedirectsEnabled) { ServiceProvider Provider; if (String.IsNullOrEmpty(Program.Config.LastUsedProvider)) { Provider = ClientSettings.ServiceProviders .Where(x => x.StatsAddress == Redirector.StatsServerAddress.ToString() && x.GamespyAddress == Redirector.GamespyServerAddress.ToString()) .FirstOrDefault(); } else { Provider = ClientSettings.ServiceProviders .Where(x => x.Name == Program.Config.LastUsedProvider) .FirstOrDefault(); } // Set the last used provider if we have one if (Provider != null) { ProviderComboBox.SelectedItem = Provider; } } // Set redirect mode IcsRadioButton.Checked = false; switch (Program.Config.RedirectMode) { case RedirectMode.HostsIcsFile: IcsRadioButton.Checked = true; break; case RedirectMode.HostsFile: HostsRadioButton.Checked = true; break; case RedirectMode.DnsServer: DnsRadioButton.Checked = true; break; } // Set redirect removal switch (Program.Config.RedirectRemoveMethod) { case RedirectRemoveMethod.Never: NeverRadioButton.Checked = true; break; case RedirectRemoveMethod.OnAppClose: AppExitsRadioButton.Checked = true; break; case RedirectRemoveMethod.OnGameClose: break; } // Auto Login Settings CredentialsCheckBox.Checked = Program.Config.PromptCredentials; ProgramUpdateCheckBox.Checked = Program.Config.CheckForUpdates; // Load our params Params = new ParamsCollection(Program.Config.LaunchParams); LaunchParamsTextBox.Text = Params.BuildString(false); // Register for events BF2Client.PathChanged += LoadModList; BF2Client.Started += BF2Client_Started; BF2Client.Exited += BF2Client_Exited; // Focus the mod select first on the Launcher tab! MainTabControl.SelectedIndex = 0; // Start updater if (Program.Config.CheckForUpdates) { ProgramUpdater.CheckCompleted += ProgramUpdater_CheckCompleted; ProgramUpdater.CheckForUpdateAsync(); } // Once the form is shown, asynchronously load the redirect service this.Shown += (s, e) => { // Focus the mod select combobox ModComboBox.Focus(); // Since we werent registered for Bf2Client events before, do this here if (BF2Client.IsRunning) { BF2Client_Started(); } }; }
private async void ProgramUpdater_CheckCompleted(object sender, EventArgs e) { if (ProgramUpdater.UpdateAvailable) { // Show overlay first, which provides the smokey (Modal) background using (ModalOverlay overlay = new ModalOverlay(this, 0.3)) { // Show overlay overlay.Show(this); // Make sure a mod is selected DialogResult r = MetroMessageBox.Show(overlay, "An Update for this program is avaiable for download (" + ProgramUpdater.NewVersion + ")." + Environment.NewLine.Repeat(1) + "Would you like to download and install this update now?", "Update Available", MessageBoxButtons.YesNo, MessageBoxIcon.Question, 150 ); // Apply update if (r == DialogResult.Yes) { bool success = false; try { success = await ProgramUpdater.DownloadUpdateAsync(overlay); } catch (Exception ex) { // Create Exception Log TraceLog.TraceWarning("Unable to Download new update archive :: Generating Exception Log"); ExceptionHandler.GenerateExceptionLog(ex); // Alert User MetroMessageBox.Show(overlay, "Failed to download update archive! Reason: " + ex.Message + Environment.NewLine.Repeat(1) + "An exception log has been generated and created inside the My Documents/BF2Statistics folder.", "Download Failed", MessageBoxButtons.OK, MessageBoxIcon.Error ); } // If the file downloaded successfully if (success) { try { ProgramUpdater.RunUpdate(); } catch (Exception ex) { MetroMessageBox.Show(overlay, "An Occured while trying to install the new update. You will need to manually apply the update." + Environment.NewLine.Repeat(1) + "Error Message: " + ex.Message, "Installation Error", MessageBoxButtons.OK, MessageBoxIcon.Error ); } } } // Close overlay overlay.Close(); // Focus the mod select ModComboBox.Focus(); } } }