Пример #1
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);
    }
Пример #2
0
    public override void Init(PuzzleController controller, string puzzleId)
    {
        base.Init(controller, puzzleId);

        blocks = new EnergyBlock[components.Length];
        for (int i = 0; i < components.Length; ++i)
        {
            blocks[i] = components[i] as EnergyBlock;

            if (!blocks[i].IsActive)
            {
                blocks[i].gameObject.SetActive(false);
            }
        }

        blockGrid = new EnergyBlock[gridSizeX, gridSizeY];
        int temp = 0;

        for (int col = 0; col < gridSizeY; ++col)
        {
            for (int row = 0; row < gridSizeX; ++row)
            {
                blocks[temp].SetCoordinates(new Vector2Int(row, col));

                blockGrid[row, col] = blocks[temp];
                ++temp;
            }
        }

        startBlock.Connect();
        endBlock.Disconnect();

        startBlock.SetCoordinates(new Vector2Int(-1, 0));
        endBlock.SetCoordinates(new Vector2Int(3, 1));

        ResetConnections();
        UpdateConnections(startBlock);
    }