Exemple #1
0
    private void pop(Tile t)
    {
        if (t == null)
        {
            return;
        }

        Ice iceAboveTile = (Ice)getIceTile(t.getRow(), t.getCol());

        if (iceAboveTile != null && !iceAboveTile.isBreakable())
        {
            iceTiles[t.getRow()][t.getCol()] = null;
            iceAboveTile.pop();
            poppedIceCount += 1;
        }

        if (!(t is WordTile))
        {
            return;
        }

        if (t is RootedTile)
        {
            RootedTile tile = (RootedTile)t;
            tile.pop();
            if (!tile.isBreakable())
            {
                return;
            }
        }

        WordTile k = (WordTile)t;

        if (k.crown)
        {
            consumeCrown(k);
        }

        k.disappear();
        tilePoppedThisTurn.Add(k);
        setTile(null, k.getRow(), k.getCol());

        if (k.blasterDirection == 1) //Horizontal
        {
            k.blasterAnimation();
            for (int c = 0; c < col; c++)
            {
                pop(getTile(k.getRow(), c));
            }
        }
        else if (k.blasterDirection == 2) //Vertical
        {
            k.blasterAnimation();
            for (int r = 0; r < row; r++)
            {
                pop(getTile(r, k.getCol()));
            }
        }
        else if (k.blasterDirection == 3) //diagonalArrow1
        {
            k.blasterAnimation();
            for (int i = 0; i < row; i++)
            {
                pop(getTile((k.getRow() + i), (k.getCol() + i)));
                pop(getTile((k.getRow() - i), (k.getCol() - i)));
            }
        }
        else if (k.blasterDirection == 4) //diagonalArrow2
        {
            k.blasterAnimation();
            for (int i = 0; i < row; i++)
            {
                pop(getTile((k.getRow() + i), (k.getCol() - i)));
                pop(getTile((k.getRow() - i), (k.getCol() + i)));
            }
        }
        else if (k.blasterDirection == 5) //UpDown
        {
            k.blasterAnimation();
            for (int c = 0; c < col; c++)
            {
                pop(getTile(k.getRow(), c));
            }
            for (int r = 0; r < row; r++)
            {
                pop(getTile(r, k.getCol()));
            }
        }
        else if (k.blasterDirection == 6) //Corner
        {
            k.blasterAnimation();
            for (int i = 0; i < row; i++)
            {
                pop(getTile((k.getRow() + i), (k.getCol() - i)));
                pop(getTile((k.getRow() - i), (k.getCol() + i)));
                pop(getTile((k.getRow() + i), (k.getCol() + i)));
                pop(getTile((k.getRow() - i), (k.getCol() - i)));
            }
        }
        else if (k.blasterDirection == 7) //allDirection
        {
            k.blasterAnimation();
            for (int i = 0; i < row; i++)
            {
                pop(getTile((k.getRow() + i), (k.getCol() - i)));
                pop(getTile((k.getRow() - i), (k.getCol() + i)));
                pop(getTile((k.getRow() + i), (k.getCol() + i)));
                pop(getTile((k.getRow() - i), (k.getCol() - i)));
            }
            for (int c = 0; c < col; c++)
            {
                pop(getTile(k.getRow(), c));
            }
            for (int r = 0; r < row; r++)
            {
                pop(getTile(r, k.getCol()));
            }
        }
    }