Exemplo n.º 1
0
        internal static Sprite ReadFromStream(Stream stream)
        {
            var sprite = new Sprite();

            using (var reader = new BinaryReader(stream, Encoding.UTF8, true))
            {
                var    magicNumber = reader.ReadBytes(4);
                UInt32 frameCount  = 0;

                sprite.Version             = reader.ReadUInt32();
                sprite.Type                = (SpriteType)reader.ReadUInt32();
                sprite.Format              = (SpriteFormat)reader.ReadUInt32();
                sprite.BoudingRadius       = reader.ReadSingle();
                sprite.MaxWidth            = reader.ReadUInt32();
                sprite.MaxHeight           = reader.ReadUInt32();
                frameCount                 = reader.ReadUInt32();
                sprite.BeamLength          = reader.ReadSingle();
                sprite.SynchronizationType = (SpriteSynchronizationType)reader.ReadUInt32();
                sprite.Palette             = SpritePalette.ReadFromStream(stream);

                List <SpriteFrame> frames = new List <SpriteFrame>();

                for (int i = 0; i < frameCount; ++i)
                {
                    frames.Add(SpriteFrame.ReadFromStream(stream));
                }

                sprite.Frames = frames;
            }

            return(sprite);
        }
Exemplo n.º 2
0
        internal static SpritePalette ReadFromStream(Stream stream)
        {
            var palette = new SpritePalette();

            using (var reader = new BinaryReader(stream, Encoding.UTF8, true))
            {
                palette.Size = reader.ReadUInt16();

                var colorEntries = new List <Color>();

                for (int i = 0; i < palette.Size; ++i)
                {
                    var colorEntry = reader.ReadBytes(3);
                    colorEntries.Add(Color.FromArgb(0xFF, colorEntry[0], colorEntry[1], colorEntry[2]));
                }

                palette.Entries = colorEntries;
            }

            return(palette);
        }