protected override void ReadData(BinaryReader reader) { _timestamp = reader.ReadInt64(); _saveName = StringBlock.FromSave(GameSave, ReadAddress(reader)); _chunkTable = ChunkTable.FromSave(GameSave, ReadAddress(reader)); }
protected override void ReadData(BinaryReader reader) { ushort blockTypeNameCount = reader.ReadUInt16(); _blockSubTypes = new int[blockTypeNameCount]; _blockTypeNames = new StringBlock[blockTypeNameCount]; for (int i = 0; i < blockTypeNameCount; i++) { _blockTypeNames[i] = StringBlock.FromSave(GameSave, ReadAddress(reader)); _blockSubTypes[i] = reader.ReadInt32(); } }
protected override void ReadData(BinaryReader reader) { int length = reader.ReadInt32(); _keyValuePairs = new KeyValuePair <StringBlock, TValue> [length]; ConstructorInfo blockConstructorInfo = typeof(TValue).GetConstructor(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance, null, new[] { typeof(GameSave), typeof(Tuple <int, uint>) }, null); if (blockConstructorInfo == null) { throw new Exception("Constructor for bound " + typeof(TValue) + " not found."); } for (int i = 0; i < length; i++) { var key = StringBlock.FromSave(GameSave, ReadAddress(reader)); var value = (TValue)(blockConstructorInfo.Invoke(new object[] { GameSave, ReadAddress(reader) })); _keyValuePairs[i] = new KeyValuePair <StringBlock, TValue>(key, value); } }