private void Load(StructureValueCollection values) { Magic = (int)values.GetNumber("magic"); ParentMagic = (int)values.GetNumber("parent magic"); GrandparentMagic = (int)values.GetNumber("grandparent magic"); Description = new StringID((int)values.GetNumberOrDefault("stringid", 0)); }
private HeaderOffsetConverter LoadHeaderOffsetConverter(StructureValueCollection values) { // Only apply a modifier if the original raw table offset wasn't zero StringOffsetMagic = (uint)HeaderSize; if (values.HasNumber("raw table offset") && values.GetNumber("raw table offset") > 0) StringOffsetMagic = values.GetNumberOrDefault("string offset magic", (uint)HeaderSize); return new HeaderOffsetConverter(this); }
private IndexOffsetConverter LoadIndexOffsetConverter(StructureValueCollection values) { LocaleOffsetMask = values.GetNumberOrDefault("locale offset magic", 0); return new IndexOffsetConverter(this); }
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); }