import 'dart:math';

import 'package:flutter/material.dart';

import '../entities/cell.dart';
import '../provider/data.dart';
import '../utils/board_utils.dart';

class Board {

  static Container buildGameBoard(Data myProvider) {
    Color borderColor = BoardUtils.checkBoardIsSolved(myProvider) ? Colors.green : Colors.orange;

    return Container(
      margin: EdgeInsets.all(2),
      padding: EdgeInsets.all(2),
      decoration: BoxDecoration(
        color: borderColor,
        borderRadius: BorderRadius.circular(2),
        border: Border.all(
          color: borderColor,
          width: 2,
        ),
      ),

      child: buildGameTileset(myProvider),
    );
  }

  static Table buildGameTileset(Data myProvider) {
    int boardSize = myProvider.blockSizeHorizontal * myProvider.blockSizeVertical;
    List cells = myProvider.cells;

    return Table(
      defaultColumnWidth: IntrinsicColumnWidth(),
      children: [
        for (var row = 0; row < boardSize; row++)
          TableRow(children: [
            for (var col = 0; col < boardSize; col++)
              Column(children: [
                cells[row][col].widget(
                  myProvider,
                  Cell.getCellBorders(myProvider, row, col),
                  row,
                  col
                )
              ]),
          ]),
      ]
    );
  }

}