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; } }
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); } } } }