private void Window_Loaded(object sender, RoutedEventArgs e) { if (silentStart) { WindowState = WindowState.Minimized; } using (var wc = new WebClient()) { try { ChangelogContent.Text = wc.DownloadString("http://167.114.156.21:81/honline/changelog.data"); } catch { ChangelogContent.Text = "You are offline. No changelog available."; } } LoadSettings(); SaveSettings(); try { settingsJson = JObject.Parse(File.ReadAllText("dewrito.json")); if (settingsJson["gameFiles"] == null || settingsJson["updateServiceUrl"] == null) { SetStatus("Failed to read Dewrito updater configuration.", Color.FromRgb(255, 0, 0)); SetStatusLabels("Error", true); return; } } catch { SetStatus("Failed to read Dewrito updater configuration.", Color.FromRgb(255, 0, 0)); btnAction.Content = "PLAY"; var MainWindow = new MsgBox2( "Could not connect to update servers. You can still play, but game files can not be updated or verified against the latest versions."); isPlayEnabled = true; btnAction.IsEnabled = true; MainWindow.Show(); MainWindow.Focus(); return; } // CreateHashJson(); validateThread = new Thread(BackgroundThread); validateThread.Start(); }
private void btnAction_Click(object sender, RoutedEventArgs e) { if (isPlayEnabled) { var sInfo = new ProcessStartInfo(BasePath + "/eldorado.exe"); sInfo.Arguments = "-launcher"; try { Process.Start(sInfo); } catch { //MessageBox.Show("Game executable not found."); var MainWindow = new MsgBox2("Game executable not found."); MainWindow.Show(); MainWindow.Focus(); } } else if (btnAction.Content == "UPDATE") { foreach (var file in filesToDownload) { SetStatus("Downloading file \"" + file + "\"...", Color.FromRgb(255, 255, 0)); var url = latestUpdate["baseUrl"].ToString().Replace("\"", "") + file; var destPath = Path.Combine(BasePath, file); var dialog = new FileDownloadDialog(this, url, destPath); var result = dialog.ShowDialog(); if (result.HasValue && result.Value) { // TOD: Refactor this. It's hacky } else { SetStatus("Download for file \"" + file + "\" failed.", Color.FromRgb(255, 0, 0)); SetStatus("Error: " + dialog.Error.Message, Color.FromRgb(255, 0, 0), false); if (dialog.Error.InnerException != null) { SetStatus("Error: " + dialog.Error.InnerException.Message, Color.FromRgb(255, 0, 0), false); } return; } } if (filesToDownload.Contains("DewritoUpdater.exe")) { //MessageBox.Show("Update complete! Please restart the launcher.", "ElDewrito Launcher"); //Application.Current.Shutdown(); var MainWindow = new MsgBox("Update complete! Please restart the launcher."); MainWindow.Show(); MainWindow.Focus(); } btnAction.Content = "PLAY GAME"; isPlayEnabled = true; //imgAction.Source = new BitmapImage(new Uri(@"/Resourves/playEnabled.png", UriKind.Relative)); SetStatus("Update successful. You have the latest version! (" + latestUpdateVersion + ")", Color.FromRgb(0, 255, 0)); } }
private void BackgroundThread() { if (!CompareHashesWithJson()) { return; } SetStatus("Game files validated, contacting update server...", Color.FromRgb(255, 255, 255)); if (!ProcessUpdateData()) { SetStatus("Failed to retrieve update information.", Color.FromRgb(255, 0, 0)); SetStatusLabels("Error", true); return; } if (filesToDownload.Count <= 0) { SetStatus("You have the latest version! (" + latestUpdateVersion + ")", Color.FromRgb(0, 255, 0)); btnAction.Dispatcher.Invoke( new Action( () => { btnAction.Content = "PLAY GAME"; isPlayEnabled = true; var fade = (Storyboard)TryFindResource("fade"); fade.Stop(); // Start animation btnAction.IsEnabled = true; })); if (silentStart) { btnAction_Click(new object(), new RoutedEventArgs()); } return; } SetStatus("An update is available. (" + latestUpdateVersion + ")", Color.FromRgb(255, 255, 0)); btnAction.Dispatcher.Invoke( new Action( () => { btnAction.Content = "UPDATE"; var fade = (Storyboard)TryFindResource("fade"); fade.Stop(); // Stop /* * Storyboard fadeStat = (Storyboard)TryFindResource("fadeStat"); * fadeStat.Stop(); // Start * Storyboard fadeServer = (Storyboard)TryFindResource("fadeServer"); * fadeServer.Stop(); // Start */ btnAction.IsEnabled = true; })); if (silentStart) { //MessageBox.Show("Sorry, you need to update before the game can be started silently.", "ElDewrito Launcher"); var MainWindow = new MsgBox2("Sorry, you need to update before the game can be started silently."); MainWindow.Show(); MainWindow.Focus(); } }