// 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); } } } } }
// 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); } } } } }