Пример #1
0
    // Change color on block
    public void changeColor(Tetromino block)
    {
        Vector2 blockPos = new Vector2((int)block.transform.position.x, (int)block.transform.position.y - 1);

        if (CheckIfInsideGrid(blockPos))
        {
            if (grid [(int)blockPos.x, (int)blockPos.y] != null)
            {
                if (!(block.CompareTag(grid [(int)block.transform.position.x, (int)block.transform.position.y - 1].parent.tag)))
                {
                    if (block.tag == "BlueBlock" && grid [(int)block.transform.position.x, (int)block.transform.position.y - 1].parent.tag == "RedBlock" ||
                        block.tag == "RedBlock" && grid [(int)block.transform.position.x, (int)block.transform.position.y - 1].parent.tag == "BlueBlock")
                    {
                        block.colorOfNextSpawn = BlockColor.PURPLE;
                        DeleteBlockAt((int)block.transform.position.x, (int)block.transform.position.y);
                    }
                    else if (block.tag == "RedBlock" && grid[(int)block.transform.position.x, (int)block.transform.position.y - 1].parent.tag == "GreenBlock" ||
                             block.tag == "GreenBlock" && grid[(int)block.transform.position.x, (int)block.transform.position.y - 1].parent.tag == "RedBlock")
                    {
                        block.colorOfNextSpawn = BlockColor.YELLOW;
                        DeleteBlockAt((int)block.transform.position.x, (int)block.transform.position.y);
                    }
                    else if (block.tag == "GreenBlock" && grid[(int)block.transform.position.x, (int)block.transform.position.y - 1].parent.tag == "BlueBlock" ||
                             block.tag == "BlueBlock" && grid[(int)block.transform.position.x, (int)block.transform.position.y - 1].parent.tag == "GreenBlock")
                    {
                        block.colorOfNextSpawn = BlockColor.CYAN;
                        DeleteBlockAt((int)block.transform.position.x, (int)block.transform.position.y);
                    }
                }
            }
        }
    }
Пример #2
0
    // Check neighbours if same color put in consecutiveBlocks and blocksToCheck
    void CheckNeighbours(Tetromino block, int x, int y)
    {
        Tetromino neighbour;

        Vector2 blockPos = new Vector2((int)x, (int)y);

        if (CheckIfInsideGrid(blockPos))
        {
            if (grid [(int)blockPos.x, (int)blockPos.y] != null)               // check if position is not empty
            {
                neighbour = grid [(int)blockPos.x, (int)blockPos.y].parent.gameObject.GetComponent <Tetromino> ();
                if (block.CompareTag(grid [(int)blockPos.x, (int)blockPos.y].parent.tag)) // check if the type (color) is the same
                {
                    if (!consecutiveBlocks.Contains(neighbour))                           // check if already in the list
                    {
                        blocksToCheck.Enqueue(neighbour);
                        consecutiveBlocks.Push(neighbour);
                    }
                }
            }
        }
    }