private void Import_Click(object sender, RoutedEventArgs e) { UndertaleEmbeddedAudio target = DataContext as UndertaleEmbeddedAudio; OpenFileDialog dlg = new OpenFileDialog(); dlg.DefaultExt = ".wav"; dlg.Filter = "WAV files (.wav)|*.png|All files|*"; if (dlg.ShowDialog() == true) { try { byte[] data = File.ReadAllBytes(dlg.FileName); // TODO: Make sure it's valid WAV target.Data = data; } catch (Exception ex) { MessageBox.Show("Failed to import file: " + ex.Message, "Failed to import file", MessageBoxButton.OK, MessageBoxImage.Error); } } }
private void Play_Click(object sender, RoutedEventArgs e) { UndertaleEmbeddedAudio target = DataContext as UndertaleEmbeddedAudio; if (target.Data.Length > 4) { try { if (target.Data[0] == 'R' && target.Data[1] == 'I' && target.Data[2] == 'F' && target.Data[3] == 'F') { wavReader = new WaveFileReader(new MemoryStream(target.Data)); InitAudio(); waveOut.Init(wavReader); waveOut.Play(); } else if (target.Data[0] == 'O' && target.Data[1] == 'g' && target.Data[2] == 'g' && target.Data[3] == 'S') { oggReader = new VorbisWaveReader(new MemoryStream(target.Data)); InitAudio(); waveOut.Init(oggReader); waveOut.Play(); } else { mainWindow.ShowError("Failed to play audio!\r\nNot a WAV or OGG.", "Audio failure"); } } catch (Exception ex) { waveOut = null; mainWindow.ShowError("Failed to play audio!\r\n" + ex.Message, "Audio failure"); } } }
private void Export_Click(object sender, RoutedEventArgs e) { UndertaleEmbeddedAudio target = DataContext as UndertaleEmbeddedAudio; SaveFileDialog dlg = new SaveFileDialog(); dlg.DefaultExt = ".wav"; dlg.Filter = "WAV files (.wav)|*.wav|All files|*"; if (dlg.ShowDialog() == true) { try { File.WriteAllBytes(dlg.FileName, target.Data); } catch (Exception ex) { MessageBox.Show("Failed to export file: " + ex.Message, "Failed to export file", MessageBoxButton.OK, MessageBoxImage.Error); } } }