Exemplo n.º 1
0
        private RoFrame[] ReadAnimations()
        {
            var count = br.ReadUInt32();
            var anims = new RoFrame[count];

            for (var i = 0; i < count; i++)
            {
                fs.Seek(32, SeekOrigin.Current);
                anims[i] = ReadLayers();
            }

            return(anims);
        }
Exemplo n.º 2
0
        private RoFrame ReadLayers()
        {
            var count  = br.ReadUInt32();
            var layers = new RoLayer[count];

            var anim = new RoFrame();

            for (var i = 0; i < count; i++)
            {
                var layer = new RoLayer()
                {
                    Position = new Vector2(br.ReadInt32(), br.ReadInt32()),
                    Index    = br.ReadInt32(),
                    IsMirror = br.ReadInt32() != 0,
                    Scale    = new Vector2(1, 1),
                    Color    = Color.white,
                };

                if (version > 20)
                {
                    var r = br.ReadByte();
                    var g = br.ReadByte();
                    var b = br.ReadByte();
                    var a = br.ReadByte();

                    layer.Color = new Color(r / 255f, g / 255f, b / 255f, a / 255f);

                    var scalex = br.ReadSingle();
                    var scaley = scalex;
                    if (version > 23)
                    {
                        scaley = br.ReadSingle();
                    }

                    layer.Scale = new Vector2(scalex, scaley);

                    layer.Angle = br.ReadInt32();
                    layer.Type  = br.ReadInt32();

                    if (layer.Type == 1)
                    {
                        layer.Index += sprite.IndexCount;
                    }

                    if (version >= 25)
                    {
                        layer.Width  = br.ReadInt32();
                        layer.Height = br.ReadInt32();
                    }
                }

                layers[i] = layer;
            }

            anim.Layers = layers;

            if (version >= 20)
            {
                anim.Sound = br.ReadInt32();
            }
            else
            {
                anim.Sound = -1;
            }

            if (version >= 23)
            {
                var pcount  = br.ReadInt32();
                var posList = new RoPos[pcount];

                for (var i = 0; i < pcount; i++)
                {
                    var pos = new RoPos();

                    pos.Unknown1 = br.ReadInt32();
                    pos.Position = new Vector2(br.ReadInt32(), br.ReadInt32());
                    pos.Unknown2 = br.ReadInt32();

                    posList[i] = pos;
                }

                anim.Pos = posList;
            }

            return(anim);
        }