Beispiel #1
0
        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());
        }
Beispiel #2
0
        /// <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.");
                }
            }
        }