private void LoadFromRawFile(IArchData channel, string fullPath) { switch (channel) { case XwmaArchData xwma: xwma.Data.Data = File.ReadAllBytes(fullPath); var dpds = Path.ChangeExtension(fullPath, ".dpds"); if (File.Exists(dpds)) { xwma.Dpds.Data = File.ReadAllBytes(dpds); } var fmt = Path.ChangeExtension(fullPath, ".fmt"); if (File.Exists(fmt)) { xwma.Fmt.Data = File.ReadAllBytes(fmt); } break; case Atrac9ArchData at9: at9.Data.Data = File.ReadAllBytes(fullPath); break; case OpusArchData opus: opus.Data.Data = File.ReadAllBytes(fullPath); break; default: channel.Data.Data = File.ReadAllBytes(fullPath); //Console.WriteLine($"[WARN] {fullPath} is not used."); break; } channel.SetPsbArchData(channel.ToPsbArchData()); }
/// <summary> /// Load a common audio file into a channel /// </summary> /// <param name="channel">target channel</param> /// <param name="fullPath">path to load audio file</param> /// <param name="fileName">used in some audio types to keep file name</param> /// <param name="fileExt">common audio extension like "wav"</param> /// <param name="encodeExt">encode audio extension like "vag"</param> /// <param name="context"></param> private void LoadFileToChannel(IArchData channel, string fullPath, string fileName, string fileExt, string encodeExt, FreeMountContext context) { var newArch = context.WaveToArchData(this, encodeExt, File.ReadAllBytes(fullPath), fileName, channel.WaveExtension); if (newArch != null) { channel.SetPsbArchData(newArch.ToPsbArchData()); } else { if (channel.Extension == fileExt) { LoadFromRawFile(channel, fullPath); } else { Console.WriteLine( $"[WARN] There is no encoder for {channel.Extension}! {fullPath} is not used."); } } }