public void RenderWithAnimation(Game game) { if (game != null) { this.tiles = game.GameBoard; } foreach (var transform in game.LastTransforms) { if (transform.Type == GameLib.GameBoard.TransformType.Tranlate) { var Tile = GetChildren(transform.LastY, transform.LastX); Canvas.SetZIndex(Tile.GetElement(), 1); int offsetX = transform.X - transform.LastX; int offsetY = transform.Y - transform.LastY; Tile.ApplyTransform(offsetX, offsetY); } if (transform.Type == GameLib.GameBoard.TransformType.Merge) { var Tile = GetChildren(transform.LastY, transform.LastX); Canvas.SetZIndex(Tile.GetElement(), 2); int transformX = (transform.X - transform.LastX); int transformY = (transform.Y - transform.LastY); Tile.ApplyTransform(transformX, transformY); Tile.ApplyMerge(game.GameBoard[transform.Y, transform.X]); } else if (transform.Type == GameLib.GameBoard.TransformType.New) { double x = transform.X * tileSize + (transform.X + 1) * margin; double y = transform.Y * tileSize + (transform.Y + 1) * margin; var Tile = new GameTile(game.GameBoard[transform.Y, transform.X], x, y, tileSize, transform.Y, transform.X); ch.Add(Tile); canvas.Children.Add(Tile.GetElement()); Canvas.SetZIndex(Tile.GetElement(), 3); Tile.ApplyScale(); } } }