Exemple #1
0
        public static void Write(CNS_File cnsFile, string path)
        {
            Directory.CreateDirectory(Path.GetDirectoryName(path));

            //Saving
            File.WriteAllBytes(path, cnsFile.SaveToBytes());
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }