/// <summary> /// Export node. /// </summary> public override void NodeExport() { Wave w = (File as SoundWaveArchive)[tree.SelectedNode.Index]; if (w != null) { //Get export path. SaveFileDialog s = new SaveFileDialog(); s.RestoreDirectory = true; s.FileName = tree.SelectedNode.Text; s.Filter = "Wave|*.wav|Wave (3ds or Wii U)|*.bfwav;*.bcwav|Wave (Switch)|*.bfwav|Stream (3ds or Wii U)|*.bfstm;*.bcstm|Stream (Switch)|*.bfstm"; s.ShowDialog(); if (Path.GetExtension(s.FileName) == "") { s.FileName += "wav"; } if (s.FileName != "") { //Get file data. WriteMode m = WriteMode.Cafe; if (Path.GetExtension(s.FileName).ToLower()[2] == 'c') { m = WriteMode.CTR; } byte[] b = null; switch (s.FilterIndex) { //Wave. case 1: b = RiffWaveFactory.CreateRiffWave(w.Wav).ToBytes(); break; //SDK Wave. case 2: if (m == WriteMode.Cafe) { b = w.Wav.ToBytes(ByteOrder.BigEndian, true); } else { b = w.Wav.ToBytes(ByteOrder.LittleEndian); } break; //SDK Wave Switch. case 3: b = w.Wav.ToBytes(ByteOrder.LittleEndian, true); break; //SDK Stream. case 4: if (m == WriteMode.Cafe) { b = StreamFactory.CreateStream(w.Wav, w.Wav.fileHeader.vMajor, w.Wav.fileHeader.vMinor, w.Wav.fileHeader.vRevision).ToBytes(ByteOrder.BigEndian, true); } else { b = StreamFactory.CreateStream(w.Wav, w.Wav.fileHeader.vMajor, w.Wav.fileHeader.vMinor, w.Wav.fileHeader.vRevision).ToBytes(ByteOrder.LittleEndian); } break; //SDK Stream Switch. case 5: b = StreamFactory.CreateStream(w.Wav, w.Wav.fileHeader.vMajor, w.Wav.fileHeader.vMinor, w.Wav.fileHeader.vRevision).ToBytes(ByteOrder.LittleEndian, true); break; } //Write if possible. if (b != null) { System.IO.File.WriteAllBytes(s.FileName, b); } } } else { MessageBox.Show("You can't export a null file!", "Notice:"); } }