internal void WriteLanguageString(Memory.Strings.StringMemoryPool pool)
        {
            LanguageOffsetsInitialize();

            if (JustEnglish)
            {
                var ptr = pool.Add(mLanguageStrings[0]);
                for (int x = 0, offset = (int)ptr.u32; x < mLanguageOffsets.Length; x++)
                {
                    mLanguageOffsets[x] = offset;
                }
            }
            else
            {
                for (int x = 0; x < mLanguageStrings.Length; x++)
                {
                    string str = mLanguageStrings[x];

                    var ptr = str != null
                                                ? pool.Add(str)
                                                : Values.PtrHandle.InvalidHandle32;

                    mLanguageOffsets[x] = (int)ptr.u32;
                }
            }
        }
Esempio n. 2
0
        private bool BuildFileNamesTable(IO.EndianStream blockStream)
        {
            Contract.Requires(blockStream.IsWriting);

            using (var ms = new System.IO.MemoryStream(mFiles.Count * 128))
                using (var s = new IO.EndianWriter(ms, blockStream.ByteOrder))
                {
                    var smp = new Memory.Strings.StringMemoryPool(kFileNamesTablePoolConfig);
                    for (int x = FileChunksFirstIndex; x < mFiles.Count; x++)
                    {
                        var file = mFiles[x];

                        file.FileNameOffset = smp.Add(file.FileName).u32;
                    }
                    smp.WriteStrings(s);

                    var filenames_chunk = mFiles[0];
                    PackFileNames(blockStream, ms, filenames_chunk);

                    return(true);
                }
        }