/// <summary> /// Serializes the language data into a StructureValueCollection. /// </summary> /// <returns>The StructureValueCollection that was created from the language table.</returns> public StructureValueCollection Serialize() { StructureValueCollection[] languageSet = new StructureValueCollection[_languages.Count]; for (int i = 0; i < _languages.Count; i++) languageSet[i] = _languages[i].Serialize(); StructureValueCollection result = new StructureValueCollection(); result.SetArray("languages", languageSet); return result; }
/// <summary> /// Serializes the header's values, storing them into a StructureValueCollection. /// </summary> /// <returns>The resulting StructureValueCollection.</returns> public StructureValueCollection Serialize() { StructureValueCollection values = new StructureValueCollection(); if (_originalRawTableOffset != 0) values.SetNumber("raw table offset", RawTableOffset); else values.SetNumber("meta offset", MetaOffset); values.SetNumber("virtual base address", VirtualBaseAddress); values.SetNumber("raw table offset from header", (uint)(RawTableOffset - HeaderSize)); values.SetNumber("raw table size", RawTableSize); values.SetNumber("locale offset magic", LocaleOffsetMask); values.SetNumber("file size", FileSize); values.SetNumber("index header address", IndexHeaderLocation.AsAddress()); values.SetNumber("virtual size", MetaSize); values.SetNumber("type", (uint)Type); values.SetNumber("string table count", (uint)StringIDCount); values.SetNumber("string table size", (uint)StringIDTableSize); values.SetNumber("string index table offset", _stringOffsetConverter.PointerToRaw(StringIDIndexTableLocation)); values.SetNumber("string table offset", _stringOffsetConverter.PointerToRaw(StringIDDataLocation)); values.SetString("internal name", InternalName); values.SetString("scenario name", ScenarioName); values.SetNumber("file table count", (uint)FileNameCount); values.SetNumber("file table offset", _stringOffsetConverter.PointerToRaw(FileNameDataLocation)); values.SetNumber("file table size", (uint)FileNameTableSize); values.SetNumber("file index table offset", _stringOffsetConverter.PointerToRaw(FileNameIndexTableLocation)); values.SetNumber("xdk version", (uint)XDKVersion); values.SetArray("partitions", SerializePartitions()); values.SetNumber("locale data index offset", _indexConverter.PointerToRaw(LocaleDataLocation)); values.SetNumber("locale data size", (uint)LocaleDataSize); return values; }