ME3Explorer.AutoTOC.CreateTOC C# (CSharp) Method

CreateTOC() static private method

static private CreateTOC ( string basepath, string tocFile, string files ) : void
basepath string
tocFile string
files string
return void
        static void CreateTOC(string basepath, string tocFile, string[] files)
        {
            
            byte[] SHA1 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
            using (FileStream fs = new FileStream(tocFile, FileMode.Create, FileAccess.Write, FileShare.None, 4096, useAsync: true))
            {
                fs.Write(BitConverter.GetBytes(0x3AB70C13), 0, 4);
                fs.Write(BitConverter.GetBytes(0x0), 0, 4);
                fs.Write(BitConverter.GetBytes(0x1), 0, 4);
                fs.Write(BitConverter.GetBytes(0x8), 0, 4);
                fs.Write(BitConverter.GetBytes(files.Length), 0, 4);
                for (int i = 0; i < files.Length; i++)
                {
                    string file = files[i];
                    if (i == files.Length - 1)//Entry Size
                        fs.Write(new byte[2], 0, 2);
                    else
                        fs.Write(BitConverter.GetBytes((ushort)(0x1D + file.Length)), 0, 2);
                    fs.Write(BitConverter.GetBytes((ushort)0), 0, 2);//Flags
                    if (Path.GetFileName(file).ToLower() != "pcconsoletoc.bin")
                    {
                        fs.Write(BitConverter.GetBytes((int)(new FileInfo(basepath + file)).Length), 0, 4);//Filesize
                    }
                    else
                    {
                        fs.Write(BitConverter.GetBytes(0), 0, 4);//Filesize
                    }
                    fs.Write(SHA1, 0, 20);
                    foreach (char c in file)
                        fs.WriteByte((byte)c);
                    fs.WriteByte(0);
                } 
            }
        }