/// <summary> /// Encodes a byte array /// </summary> /// <param name="data"></param> /// <param name="encodingMap"></param> /// <param name="rootName">Root filename</param> /// <returns></returns> public static CASRecord Encode(byte[] data, EMap encodingMap, string rootName = null) { using var bt = new BlockTableStreamWriter(encodingMap); bt.Write(data); var record = bt.Finalise(); record.FileName = rootName; return(record); }
/// <summary> /// Encodes a stream /// </summary> /// <param name="stream"></param> /// <param name="encodingMap"></param> /// <param name="rootName">Root filename</param> /// <returns></returns> public static CASRecord Encode(Stream stream, EMap encodingMap, string rootName = null) { using var bt = new BlockTableStreamWriter(encodingMap); stream.Position = 0; stream.CopyTo(bt); var record = bt.Finalise(); record.FileName = rootName; return(record); }
/// <summary> /// Encodes a file using Blizzard-esque rules /// </summary> /// <param name="filename"></param> /// <param name="rootName">Root filename</param> /// <returns></returns> public static CASRecord Encode(string filename, string rootName = null) { using var fs = File.OpenRead(filename); using var bt = new BlockTableStreamWriter(GetEMapFromExtension(filename)); fs.CopyTo(bt); var record = bt.Finalise(); record.FileName = rootName; return(record); }
/// <summary> /// Encodes a byte array and saves the result to disk /// </summary> /// <param name="data"></param> /// <param name="encodingMap"></param> /// <param name="directory"></param> /// <param name="rootName">Root filename</param> /// <returns></returns> public static CASRecord EncodeAndExport(byte[] data, EMap encodingMap, string directory, string rootName = null) { using var bt = new BlockTableStreamWriter(encodingMap); bt.Write(data); var record = bt.Finalise(); string saveLocation = Path.Combine(directory, record.EKey.ToString()); using (var fs = Helpers.Create(saveLocation)) { bt.WriteTo(fs); record.BLTEPath = saveLocation; record.FileName = rootName; } return(record); }
/// <summary> /// Encodes a stream using Blizzard-esque rules and saves the result to disk /// </summary> /// <param name="stream"></param> /// <param name="encodingMap"></param> /// <param name="directory"></param> /// <param name="rootName">Root filename</param> /// <returns></returns> public static CASRecord EncodeAndExport(Stream stream, EMap encodingMap, string directory, string rootName = null) { using (var bt = new BlockTableStreamWriter(encodingMap)) { stream.Position = 0; stream.CopyTo(bt); var record = bt.Finalise(); string saveLocation = Helpers.GetCDNPath(record.EKey.ToString(), "data", directory, true); using (var fs = Helpers.Create(saveLocation)) { bt.WriteTo(fs); record.BLTEPath = saveLocation; record.FileName = rootName; } return(record); } }
/// <summary> /// Encodes a file using Blizzard-esque rules and saves the result to disk /// </summary> /// <param name="filename"></param> /// <param name="directory"></param> /// <param name="rootName">Root filename</param> /// <returns></returns> public static CASRecord EncodeAndExport(string filename, string directory, string rootName = null) { using var bt = new BlockTableStreamWriter(GetEMapFromExtension(filename)); // read the file into the BlockTableStream using (var fs = File.OpenRead(filename)) fs.CopyTo(bt); // encode var record = bt.Finalise(); // save the encoded file string saveLocation = Path.Combine(directory, record.EKey.ToString()); using (var fs = Helpers.Create(saveLocation)) { bt.WriteTo(fs); record.BLTEPath = saveLocation; record.FileName = rootName; } return(record); }