public override Character Read(BinaryReader reader) { var stats = ComplexSerializer.Read <Statistics>(reader); var worlds = new Dictionary <long, WorldData>(); foreach (var world in ComplexSerializer.ReadCollection <WorldData>(reader)) { if (world.MapData != null && world.MapData.Length > 0) { ReadMapData(world, world.MapData); } world.MapData = null; worlds.Add(world.WorldId, world); } var character = ComplexSerializer.Read <Character>(reader); var hasPlayerData = TypeSerializer.Read <bool>(reader); if (hasPlayerData) { var pd = TypeSerializer.ReadBytes(reader); ReadPlayerData(character, pd); } character.Statistics = stats; character.WorldData = worlds; return(character); }
public virtual T Read(Stream stream) { var data = TypeSerializer.ReadBytes(stream); using var ms = new MemoryStream(data); using var br = new BinaryReader(ms); return(Read(br)); }