public Spawnset DownloadSpawnset(string fileName) { string url = UrlUtils.ApiGetSpawnset(fileName); try { Spawnset spawnset; using (TimeoutWebClient client = new TimeoutWebClient(Timeout)) using (Stream stream = new MemoryStream(client.DownloadData(url))) if (!Spawnset.TryParse(stream, out spawnset)) { App.Instance.ShowError("Error parsing file", "Could not parse file."); } return(spawnset); } catch (WebException ex) { App.Instance.ShowError("Error downloading file", $"Could not connect to '{url}'.", ex); return(null); } catch (Exception ex) { App.Instance.ShowError("Unexpected error", "An unexpected error occurred.", ex); return(null); } }
private void loadFileToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult result = openFileDialog.ShowDialog(); if (result == DialogResult.OK) { Spawns = SpawnFs.ParseFile(openFileDialog.FileName); UpdateEnemyList(); UpdateTextboxesValues(); } }
public static bool TryWriteSpawnsetToFile(Spawnset spawnset, string destinationPath) { try { if (spawnset.TryGetBytes(out byte[] bytes)) { File.WriteAllBytes(destinationPath, bytes); return(true); } else { App.Instance.ShowError("Unexpected error", "Error while trying to convert spawnset to binary."); return(false); } } catch (Exception ex) { App.Instance.ShowError("Unexpected error", $"Error while trying to write file to {destinationPath}.", ex); return(false); } }
private void FileOpen_Click(object sender, RoutedEventArgs e) { SpawnsetHandler.Instance.ProceedWithUnsavedChanges(); OpenFileDialog dialog = new OpenFileDialog(); bool? result = dialog.ShowDialog(); if (result.HasValue && result.Value) { if (!Spawnset.TryParse(new FileStream(dialog.FileName, FileMode.Open, FileAccess.Read), out SpawnsetHandler.Instance.spawnset)) { App.Instance.ShowError("Could not parse file", "Please open a valid Devil Daggers V3 spawnset file."); return; } App.Instance.MainWindow.SpawnsetSpawns.UpdateSpawnset(); App.Instance.MainWindow.SpawnsetArena.UpdateSpawnset(); SpawnsetHandler.Instance.UpdateSpawnsetState(Path.GetFileName(dialog.FileName), dialog.FileName); } }
private void SurvivalOpen_Click(object sender, RoutedEventArgs e) { SpawnsetHandler.Instance.ProceedWithUnsavedChanges(); if (!UserHandler.Instance.settings.SurvivalFileExists) { App.Instance.ShowError("Survival file does not exist", "Please make sure to correct the survival file location in the Options > Settings menu."); return; } if (!Spawnset.TryParse(new FileStream(UserHandler.Instance.settings.SurvivalFileLocation, FileMode.Open, FileAccess.Read), out SpawnsetHandler.Instance.spawnset)) { App.Instance.ShowError("Could not parse file", "Failed to parse the 'survival' file."); return; } App.Instance.MainWindow.SpawnsetSpawns.UpdateSpawnset(); App.Instance.MainWindow.SpawnsetArena.UpdateSpawnset(); SpawnsetHandler.Instance.UpdateSpawnsetState("(survival)", UserHandler.Instance.settings.SurvivalFileLocation); }
private void Download_Click(string fileName) { Close(); Spawnset download = null; BackgroundWorker thread = new BackgroundWorker(); thread.DoWork += (object senderDoWork, DoWorkEventArgs eDoWork) => { download = NetworkHandler.Instance.DownloadSpawnset(fileName); if (download != null) { SpawnsetHandler.Instance.spawnset = download; SpawnsetHandler.Instance.UpdateSpawnsetState(fileName, ""); } }; thread.RunWorkerCompleted += (object senderRunWorkerCompleted, RunWorkerCompletedEventArgs eRunWorkerCompleted) => { if (download == null) { return; } Dispatcher.Invoke(() => { App.Instance.MainWindow.SpawnsetSpawns.UpdateSpawnset(); App.Instance.MainWindow.SpawnsetArena.UpdateSpawnset(); ConfirmWindow confirmWindow = new ConfirmWindow("Replace 'survival' file", "Do you want to replace the currently active 'survival' file as well?"); confirmWindow.ShowDialog(); if (confirmWindow.Confirmed && SpawnsetFileUtils.TryWriteSpawnsetToFile(SpawnsetHandler.Instance.spawnset, UserHandler.Instance.settings.SurvivalFileLocation)) { App.Instance.ShowMessage("Success", $"Successfully replaced 'survival' file with '{SpawnsetFile.GetName(fileName)}'."); } }); }; thread.RunWorkerAsync(); }
private string CalculateCurrentSurvivalHash() { try { using (FileStream fs = new FileStream(Path.Combine(Path.GetDirectoryName(Process.MainModule.FileName), "dd", "survival"), FileMode.Open, FileAccess.Read)) { if (Spawnset.TryParse(fs, out Spawnset spawnset)) { return(spawnset.GetHashString()); } Logging.Log.Error("Failed to calculate spawnset hash because the survival file could not be parsed."); } return(string.Empty); } catch (Exception ex) { Logging.Log.Error("Failed to calculate spawnset hash.", ex); return(string.Empty); } }