Example #1
0
 private StructureValueCollection[] SerializePartitions()
 {
     StructureValueCollection[] results = new StructureValueCollection[Partitions.Length];
     for (int i = 0; i < Partitions.Length; i++)
     {
         StructureValueCollection values = new StructureValueCollection();
         values.SetNumber("load address", Partitions[i].BasePointer.AsAddress());
         values.SetNumber("size", Partitions[i].Size);
         results[i] = values;
     }
     return results;
 }
 private void WriteLocalePointer(IWriter writer, StringID id, int offset)
 {
     StructureValueCollection values = new StructureValueCollection();
     values.SetNumber("stringid", (uint)id.Value);
     values.SetNumber("offset", (uint)offset);
     StructureWriter.WriteStructure(values, _pointerLayout, writer);
 }
Example #3
0
        /// <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;
        }
 public StructureValueCollection Serialize()
 {
     StructureValueCollection result = new StructureValueCollection();
     result.SetNumber("string count", (uint)StringCount);
     result.SetNumber("locale table size", (uint)LocaleTableSize);
     result.SetNumber("locale index table offset", _converter.PointerToRaw(LocaleIndexTableLocation));
     result.SetNumber("locale data index offset", _converter.PointerToRaw(LocaleDataLocation));
     if (IndexTableHash != null)
         result.SetRaw("index table hash", IndexTableHash);
     if (StringDataHash != null)
         result.SetRaw("string data hash", StringDataHash);
     return result;
 }