private void CreateRow(int row)
 {
     BoardLogic.GetColumnStartEnd(row, contexts.game.board.isFirstRowShifted, gameConfig.boardSize.x, out var columnStart, out var columnEnd);
     for (int x = columnStart; x < columnEnd; x += 2)
     {
         var bubble = contexts.game.CreateRandomBoardBubble(x, row);
         bubble.AddStartPosition(new Vector2Int(x, row));
     }
 }
        private void MarkTopRowAsConnectedToTop(List <GameEntity> bubblesToCheck)
        {
            BoardLogic.GetColumnStartEnd(0, board.isFirstRowShifted, boardSize.x, out var columnStart, out var columnEnd);

            for (int x = columnStart; x < columnEnd; x += 2)
            {
                var bubble = contexts.game.GetBubbleWithPosition(new Vector2Int(x, 0));
                if (bubble == null)
                {
                    continue;
                }
                bubble.isConnectedToTop = true;
                bubblesToCheck.Add(bubble);
            }
        }
    public void Initialize()
    {
        var entity    = contexts.game.CreateEntity();
        var boardSize = contexts.config.gameConfig.value.boardSize;

        entity.AddBoard(boardSize, false);
        contexts.game.board.isFirstRowShifted = false;

        for (int y = 0; y < boardSize.y; y++)
        {
            BoardLogic.GetColumnStartEnd(y, contexts.game.board.isFirstRowShifted, boardSize.x, out var columnStart, out var columnEnd);
            for (int x = columnStart; x < columnEnd; x += 2)
            {
                contexts.game.CreateRandomBoardBubble(x, y);
            }
        }
    }