Пример #1
0
    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);
    }
Пример #2
0
    // 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);
        }
    }
Пример #3
0
 public void TransferTo(DropPiecePreview target)
 {
     for (var c = 0; c < NumColumns; c++)
     {
         for (var r = 0; r < NumRows; r++)
         {
             target._tiles[c, r] = _tiles[c, r];
             _tiles[c, r]        = null;
         }
     }
     target.DropPiece = DropPiece;
     DropPiece        = null;
 }