예제 #1
0
        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));
        }