public static void Write(CNS_File cnsFile, string path) { Directory.CreateDirectory(Path.GetDirectoryName(path)); //Saving File.WriteAllBytes(path, cnsFile.SaveToBytes()); }
public static CNS_File Read(byte[] rawBytes) { List <byte> bytes = rawBytes.ToList(); //Validation if (BitConverter.ToInt32(rawBytes, 0) != CNS_SIGNATURE) { throw new InvalidDataException("CNS_SIGNATURE not found at offset 0x0. Parse failed."); } int count = BitConverter.ToInt32(rawBytes, 8); int offset = BitConverter.ToInt32(rawBytes, 16); //Parse file CNS_File cnsFile = new CNS_File() { CnsEntries = new List <CNS_Entry>() }; cnsFile.Version = BitConverter.ToUInt16(rawBytes, 6); //Unknown values cnsFile.UnknownValues = BitConverter_Ex.ToUInt16Array(rawBytes, 20, 4); //Entries for (int i = 0; i < count; i++) { cnsFile.CnsEntries.Add(CNS_Entry.Read(rawBytes, bytes, offset)); offset += 180; } return(cnsFile); }
public static CNS_File Read(string path, bool writeXml) { byte[] rawBytes = File.ReadAllBytes(path); CNS_File cnsFile = Read(rawBytes); //Write Xml if (writeXml) { YAXSerializer serializer = new YAXSerializer(typeof(CNS_File)); serializer.SerializeToFile(cnsFile, path + ".xml"); } return(cnsFile); }