using System.IO; using System.Text; using Wabbajack.Common; namespace Compression.BSA { public static class BSADispatch { public static IBSAReader OpenRead(AbsolutePath filename) { var fourcc = ""; using (var file = filename.OpenRead()) { fourcc = Encoding.ASCII.GetString(new BinaryReader(file).ReadBytes(4)); } if (fourcc == TES3Reader.TES3_MAGIC) return new TES3Reader(filename); if (fourcc == "BSA\0") return new BSAReader(filename); if (fourcc == "BTDX") return new BA2Reader(filename); throw new InvalidDataException("Filename is not a .bsa or .ba2, magic " + fourcc); } } }