Esempio n. 1
0
    private void UpdateConnections(EnergyBlock block)
    {
        if (block == startBlock)
        {
            EnergyBlock rightBlock = GetBlockAtPosition(Vector2Int.zero);

            if (rightBlock != null && CollectionContains(startBlock.ValidConnectionsRight, rightBlock.BlockType))
            {
                rightBlock.Connect();

                UpdateConnections(rightBlock);
            }
        }
        else
        {
            EnergyBlock leftBlock  = GetBlockAtPosition(block.GetCoordinates() + Vector2Int.left);
            EnergyBlock upBlock    = GetBlockAtPosition(block.GetCoordinates() + Vector2Int.down);
            EnergyBlock rightBlock = GetBlockAtPosition(block.GetCoordinates() + Vector2Int.right);
            EnergyBlock downBlock  = GetBlockAtPosition(block.GetCoordinates() + Vector2Int.up);

            if (block.BlockType == 1)
            {
                CheckBlockValid(leftBlock, block.ValidConnectionsLeft);
                CheckBlockValid(rightBlock, block.ValidConnectionsRight);
            }
            else if (block.BlockType == 2)
            {
                CheckBlockValid(upBlock, block.ValidConnectionsUp);
                CheckBlockValid(downBlock, block.ValidConnectionsDown);
            }
            else if (block.BlockType == 3)
            {
                CheckBlockValid(leftBlock, block.ValidConnectionsLeft);
                CheckBlockValid(upBlock, block.ValidConnectionsUp);
            }
            else if (block.BlockType == 4)
            {
                CheckBlockValid(upBlock, block.ValidConnectionsUp);
                CheckBlockValid(rightBlock, block.ValidConnectionsRight);
            }
            else if (block.BlockType == 5)
            {
                CheckBlockValid(rightBlock, block.ValidConnectionsRight);
                CheckBlockValid(downBlock, block.ValidConnectionsDown);
            }
            else if (block.BlockType == 6)
            {
                CheckBlockValid(leftBlock, block.ValidConnectionsLeft);
                CheckBlockValid(downBlock, block.ValidConnectionsDown);
            }
        }
    }
Esempio n. 2
0
    private void SwapBlocks(EnergyBlock blockToMove, EnergyBlock swapBlock)
    {
        isBusy = true;

        blockGrid[blockToMove.GetCoordinates().x, blockToMove.GetCoordinates().y] = swapBlock;
        blockGrid[swapBlock.GetCoordinates().x, swapBlock.GetCoordinates().y]     = blockToMove;

        Vector3 tempPosition = blockToMove.transform.position;

        MoveBlockToPosition(blockToMove, swapBlock.transform.position);
        MoveBlockToPosition(swapBlock, tempPosition);

        Vector2Int tempCoordinates = blockToMove.GetCoordinates();

        blockToMove.SetCoordinates(swapBlock.GetCoordinates());
        swapBlock.SetCoordinates(tempCoordinates);
    }
Esempio n. 3
0
    private EnergyBlock GetBlockAtPosition(Vector2Int position)
    {
        if (position.x >= 0 && position.y >= 0)
        {
            foreach (EnergyBlock block in blocks)
            {
                if (block.GetCoordinates() == position)
                {
                    return(block);
                }
            }

            if (endBlock.GetCoordinates() == position)
            {
                return(endBlock);
            }
        }

        return(null);
    }