static void Main(string[] args) { if (args[0] == "-g") { GenTables(); return; } // Get source ArrayList alsFiles = new ArrayList(); for (int n = 0; n < args.Length; n++) { string strFileT = Path.GetFileName(args[n]); string strDirT = Path.GetDirectoryName(args[n]); if (strDirT == "") strDirT = "."; string[] astrFiles = Directory.GetFiles(strDirT, strFileT); alsFiles.AddRange(astrFiles); } foreach (string strFileWav in alsFiles) { // Read in wav Pcm pcm = new Pcm(strFileWav); // Write out .snd file string strFileSnd = Path.ChangeExtension(strFileWav, ".snd"); Console.WriteLine(Path.GetFileName(strFileWav) + " -> " + Path.GetFileName(strFileSnd)); BinaryWriter bwtr = new BinaryWriter(new FileStream(strFileSnd, FileMode.Create, FileAccess.Write, FileShare.None)); bwtr.Write(pcm.GetSndEncoding()); bwtr.Close(); } }
void SetSoundsDir(string strDir) { m_fFillingListBox = true; try { textBoxSoundsDir.Text = strDir; ArrayList alsFiles = new ArrayList(); alsFiles.AddRange(Directory.GetFiles(strDir, "*.wav")); alsFiles.AddRange(Directory.GetFiles(strDir, "*.snd")); ArrayList alsItems = new ArrayList(); string strPath = Path.GetFullPath(textBoxSoundsDir.Text); foreach (string strFileFull in alsFiles) { string strFile = Path.GetFileName(strFileFull); Pcm pcm = new Pcm(strPath + "\\" + strFile); pcm.ConvertTo8Bit(); alsItems.Add(strFile + ", " + pcm.Data8Bit.Length / 2 + " bytes"); } listBoxSounds.DataSource = (string[])alsItems.ToArray(typeof(string)); } catch { MessageBox.Show("Invalid directory!"); } m_fFillingListBox = false; }
void PlaySound(string strFile) { try { if (!m_fFillingListBox && m_fPlaySound) { string strPath = Path.GetFullPath(textBoxSoundsDir.Text); Pcm pcm = new Pcm(strPath + "\\" + strFile); pcm.Play(); } } catch { } }
void SavePdb(string strPdbFile) { // Make a list of unique sound files PdbPacker pdbp = new PdbPacker(); int cSfx = m_alsNames.Count; StringCollection strcUniqueSounds = new StringCollection(); ArrayList alsPcm = new ArrayList(); for (int iSfx = 0; iSfx < cSfx; iSfx++) { if (!listViewSfx.Items[iSfx].Checked) continue; if (!(bool)m_alsSfxEnabled[iSfx]) continue; string strFile = listViewSfx.Items[iSfx].SubItems[1].Text; if (strFile == null) continue; strFile.Trim(); if (strFile.Length == 0) continue; int istr = strcUniqueSounds.IndexOf(strFile); if (istr == -1) istr = strcUniqueSounds.Add(strFile); } // Serialize names out ArrayList alsStringOffsets = new ArrayList(); BinaryWriter bwtr = new BinaryWriter(new MemoryStream()); bwtr.Write(Misc.SwapUShort((ushort)strcUniqueSounds.Count)); for (int iSound = 0; iSound < strcUniqueSounds.Count; iSound++) { alsStringOffsets.Add(bwtr.BaseStream.Position); string strFile = Path.ChangeExtension(strcUniqueSounds[iSound], ".snd"); char[] sz = strFile.ToCharArray(); bwtr.Write(sz); bwtr.Write((byte)0); } byte[] abSoundFiles = new byte[bwtr.BaseStream.Length]; bwtr.BaseStream.Seek(0, SeekOrigin.Begin); bwtr.BaseStream.Read(abSoundFiles, 0, (int)bwtr.BaseStream.Length); bwtr.Close(); // soundfiles file PdbPacker.File fileSounds = new PdbPacker.File("soundfiles", abSoundFiles); pdbp.Add(fileSounds); // Now serialize the sfx entries in the order of the names bwtr = new BinaryWriter(new MemoryStream()); for (int iName = 0; iName < m_alsNames.Count; iName++) { // Need to find the entry in listViewSfx for this name since the persist // order needs to match soundeffects.h. string strName = ((StringCollection)m_alsNames[iName])[0]; int iSfx; bool fFound = false; for (iSfx = 0; iSfx < cSfx; iSfx++) { if (strName == listViewSfx.Items[iSfx].SubItems[0].Text) { fFound = true; break; } } if (!fFound) throw new Exception("Internal error"); string strFile = listViewSfx.Items[iSfx].SubItems[1].Text; if (!listViewSfx.Items[iSfx].Checked) strFile = null; if (!(bool)m_alsSfxEnabled[iSfx]) strFile = null; if (strFile == null) { bwtr.Write((byte)0xff); } else { strFile.Trim(); if (strFile.Length == 0) { bwtr.Write((byte)0xff); } else { bwtr.Write((byte)strcUniqueSounds.IndexOf(strFile)); } } bwtr.Write((byte)0); // bwtr.Write(byte.Parse(listViewSfx.Items[iSfx].SubItems[2].Text)); int nPriority = m_strcPriorities.IndexOf(listViewSfx.Items[iSfx].SubItems[3].Text); if (nPriority < 0) { MessageBox.Show("Warning: " + listViewSfx.Items[iSfx].SubItems[0].Text + " has an unfamiliar priority."); } bwtr.Write((byte)nPriority); } byte[] abSfxEntries = new byte[bwtr.BaseStream.Length]; bwtr.BaseStream.Seek(0, SeekOrigin.Begin); bwtr.BaseStream.Read(abSfxEntries, 0, (int)bwtr.BaseStream.Length); bwtr.Close(); PdbPacker.File fileSfxEntries = new PdbPacker.File("SfxEntries", abSfxEntries); pdbp.Add(fileSfxEntries); // Now add in all the sounds for (int istrFile = 0; istrFile < strcUniqueSounds.Count; istrFile++) { string strFile = Path.GetFullPath(textBoxSoundsDir.Text) + "\\" + strcUniqueSounds[istrFile]; Pcm pcm = new Pcm(strFile); PdbPacker.File fileT = new PdbPacker.File(); fileT.str = Path.ChangeExtension(strcUniqueSounds[istrFile], ".snd"); fileT.ab = pcm.GetSndEncoding(); fileT.fCompress = false; pdbp.Add(fileT); } // Ready to save pdb pdbp.Save(strPdbFile, "WARI"); }
private void menuItemPlayOnPalm_Click(object sender, System.EventArgs e) { int iItem = listBoxSounds.SelectedIndex; if (iItem == -1) return; string strFile = GetListboxItemFileName(iItem); try { string strPath = Path.GetFullPath(textBoxSoundsDir.Text); Pcm pcm = new Pcm(strPath + "\\" + strFile); PlayOnPalm(strFile, pcm.GetSndEncoding()); } catch { MessageBox.Show("Couldn't load " + strFile); } }