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); }
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); }