Пример #1
0
        public void SetModeFromExtension(string extension)
        {
            switch (Path.GetExtension(extension).ToLower())
            {
            case ".adx":
                Mode = CriAaxArchiveMode.Adx;
                break;

            case ".dsp":
                Mode = CriAaxArchiveMode.Dsp;
                break;

            case ".wav":
                Mode = CriAaxArchiveMode.Wav;
                break;
            }
        }
Пример #2
0
        public override void Read(Stream source)
        {
            using (CriTableReader reader = CriTableReader.Create(source))
            {
                switch (reader.TableName)
                {
                // ADX wrapper
                case "AAX":
                    Mode = CriAaxArchiveMode.Adx;
                    break;

                // DSP wrapper
                case "ADPCM_WII":
                    Mode = CriAaxArchiveMode.Dsp;
                    break;

                // WAV wrapper
                case "SWLPCM":
                    Mode = CriAaxArchiveMode.Wav;
                    break;

                // Unknown
                default:
                    throw new InvalidDataException($"Unknown AAX type '{reader.TableName}'. Please report the error with the file(s).");
                }

                if (Mode == CriAaxArchiveMode.Dsp)
                {
                    // TODO
                    throw new NotImplementedException("DSP files aren't supported yet.");
                }

                else
                {
                    while (reader.Read())
                    {
                        CriAaxEntry entry = new CriAaxEntry();
                        entry.Flag     = (CriAaxEntryFlag)reader.GetByte("lpflg");
                        entry.Position = reader.GetPosition("data");
                        entry.Length   = reader.GetLength("data");
                        entries.Add(entry);
                    }
                }
            }
        }