Example #1
0
        public DataCenter(Stream stream, DataCenterMode mode, DataCenterStringOptions options)
        {
            options.CheckFlagsValidity(nameof(options));

            Mode = mode.CheckValidity(nameof(mode));

            using var reader = new GameBinaryReader(stream, true);

            Header     = ReadHeader(reader);
            Extensions = ReadSimpleRegion(reader, false, ExtensionSize);
            Attributes = ReadSegmentedRegion(reader, AttributeSize);
            Elements   = ReadSegmentedRegion(reader, ElementSize);
            Values     = ReadStringTable(reader, 1024, false, options);
            Names      = ReadStringTable(reader, 512, true, options);
            Footer     = ReadFooter(reader);

            var diff = stream.Length - stream.Position;

            if (diff != 0)
            {
                throw new InvalidDataException($"{diff} bytes remain unread.");
            }
        }
Example #2
0
 public DataCenter(uint version)
 {
     Mode   = DataCenterMode.Persistent;
     Header = new DataCenterHeader(Version, 0, 0, -16400, version, 0, 0, 0, 0);
     Footer = new DataCenterFooter(0);
 }
Example #3
0
 public DataCenter(uint version)
 {
     Header = new DataCenterHeader(0, 0, 0, version, 0, 0, 0, 0);
     Footer = new DataCenterFooter(0);
     Root   = new DataCenterElement(this, DataCenterAddress.Zero);
 }