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"); } } }