示例#1
0
        private void Load(StructureValueCollection values, FileSegmenter segmenter, FileSegmentGroup localeArea)
        {
            StringCount = (int)values.GetInteger("string count");
            if (StringCount > 0)
            {
                // Index table offset, segment, and pointer
                int localeIndexTableOffset = localeArea.PointerToOffset((uint)values.GetInteger("locale index table offset"));
                LocaleIndexTable         = segmenter.WrapSegment(localeIndexTableOffset, StringCount * 8, 8, SegmentResizeOrigin.End);
                LocaleIndexTableLocation = localeArea.AddSegment(LocaleIndexTable);

                // Data offset, segment, and pointer
                int localeDataOffset = localeArea.PointerToOffset((uint)values.GetInteger("locale data index offset"));
                var localeDataSize   = (int)values.GetInteger("locale table size");
                LocaleData         = segmenter.WrapSegment(localeDataOffset, localeDataSize, _sizeAlign, SegmentResizeOrigin.End);
                LocaleDataLocation = localeArea.AddSegment(LocaleData);

                // Load hashes if they exist
                if (values.HasRaw("index table hash"))
                {
                    IndexTableHash = values.GetRaw("index table hash");
                }
                if (values.HasRaw("string data hash"))
                {
                    StringDataHash = values.GetRaw("string data hash");
                }
            }
        }