public DropPieceSimple PopPreview() { // create new preview piece: var newDpp = new DropPiecePreview(); { newDpp.GenerateTiles(GetTileVisuals, new TileAnimParams(Ease.InCubic, 0.5f)); var previewCount = _dropPiecePreviews.Count; var x = 2.0f * UpLeft.x; var y = (previewCount * TileSizes.y * 2.0f) + (previewCount * previewMargin); newDpp.UpdatePosition(new Vector2(x, y), TileSizes); } // add new piece: var dpp = _dropPiecePreviews.Dequeue(); dpp.DestroyVisuals(); _dropPiecePreviews.Enqueue(newDpp); // animate tiles: var num = 0; foreach (var piece in _dropPiecePreviews) { var y = (num * TileSizes.y * 2.0f) + num * previewMargin; var pos = new Vector2(UpLeft.x + previewX, UpLeft.y - y); piece.AnimateTo(pos, TileSizes, previewMove); num++; } return(dpp.DropPiece); }
// Use this for initialization void Start() { _audioViz = new AudioViz(); Playfield = new Logic.Playfield(NumColumns, NumRows); foreach (var c in Playfield.GetEnumeratorCells()) { c.StateChanged += this.CellStateChanged; c.RemoveStateChanged += this.CellRemoveStateChanged; c.Transferred += this.CellTransferred; } _squaresCenter = new GameObject[Playfield.NumSquareColumns, Playfield.NumSquareRows]; _squaresOutline = new GameObject[Playfield.NumSquareColumns, Playfield.NumSquareRows]; foreach (var s in Playfield.GetEnumeratorSquares()) { s.StateChanged += this.SquareStateChanged; } for (var c = 0; c < NumColumns; c++) { for (var r = 0; r < NumRows; r++) { _tiles[c, r] = new Tile(); } } var sr = GetComponent <SpriteRenderer>(); var exs = sr.bounds.extents; var center = sr.bounds.center; BackgroundTextureRect = sr.sprite.textureRect; // compute extents: BotLeft = new Vector2(center.x - exs.x, center.y - exs.y); UpLeft = new Vector2(center.x - exs.x, center.y + exs.y); BotRight = new Vector2(center.x + exs.x, center.y - exs.y); UpRight = new Vector2(center.x + exs.x, center.y + exs.y); TileSizes = new Vector2((exs.x * 2.0f) / (float)NumColumns, (exs.y * 2.0f) / (float)NumRows); SquareSizes = new Vector2(TileSizes.x * 2.0f, TileSizes.y * 2.0f); // drop piece setup: _dropPieceView = GameObject.Find("DropPiece").GetComponent <DropPieceView>(); SetLevel(); // must come after set level: for (int p = 0; p < NumPreviews; p++) { var dpp = new DropPiecePreview(); dpp.GenerateTiles(GetTileVisuals, new TileAnimParams(Ease.InCubic, 0.5f)); _dropPiecePreviews.Enqueue(dpp); } }