/// <summary> /// Loads data from a StructureValueCollection containing data read from a unic tag. /// </summary> /// <param name="values">The StructureValueCollection to retrieve values from.</param> private void Load(StructureValueCollection values) { // Load ranges StructureValueCollection[] rangeValues = values.GetArray("language ranges"); Ranges = new LocaleRange[rangeValues.Length]; for (int i = 0; i < rangeValues.Length; i++) { int startIndex = (int)rangeValues[i].GetNumber("range start index"); int size = (int)rangeValues[i].GetNumber("range size"); Ranges[i] = new LocaleRange(startIndex, size); } }
private List<ThirdGenLanguage> LoadLanguages(StructureValueCollection values, IndexOffsetConverter converter, BuildInformation buildInfo) { StructureValueCollection[] languageSet = values.GetArray("languages"); var result = from language in languageSet select new ThirdGenLanguage(this, language, converter, buildInfo); return result.ToList<ThirdGenLanguage>(); }
private void Load(StructureValueCollection values) { _addrConverter = LoadAddressConverter(values); _indexConverter = LoadIndexOffsetConverter(values); _stringOffsetConverter = LoadHeaderOffsetConverter(values); FileSize = values.GetNumber("file size"); IndexHeaderLocation = new Pointer(values.GetNumber("index header address"), _addrConverter); MetaSize = values.GetNumber("virtual size"); Type = (CacheFileType)values.GetNumber("type"); StringIDCount = (int)values.GetNumber("string table count"); StringIDTableSize = (int)values.GetNumber("string table size"); StringIDIndexTableLocation = new Pointer(values.GetNumber("string index table offset"), _stringOffsetConverter); StringIDDataLocation = new Pointer(values.GetNumber("string table offset"), _stringOffsetConverter); InternalName = values.GetString("internal name"); ScenarioName = values.GetString("scenario name"); FileNameCount = (int)values.GetNumber("file table count"); FileNameDataLocation = new Pointer(values.GetNumber("file table offset"), _stringOffsetConverter); FileNameTableSize = (int)values.GetNumber("file table size"); FileNameIndexTableLocation = new Pointer(values.GetNumber("file index table offset"), _stringOffsetConverter); XDKVersion = (int)values.GetNumber("xdk version"); Partitions = LoadPartitions(values.GetArray("partitions")); LocaleDataLocation = new Pointer(values.GetNumberOrDefault("locale data index offset", (uint)HeaderSize), _indexConverter); LocaleDataSize = (int)values.GetNumberOrDefault("locale data size", 0); }