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