import 'package:flutter/material.dart';

import '../provider/data.dart';

class Board {

  static Container buildGameBoard(Data myProvider) {
    Color borderColor = myProvider.reportMode ? Colors.blue : Colors.black;

    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) {
    List cells = myProvider.cells;

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

  static FlatButton buildToggleFlagModeButton(Data myProvider) {
    String reportModeSuffix = myProvider.reportMode ? 'on' : 'off';

    return FlatButton(
      child: Container(
        child: Image(
          image: AssetImage('assets/skins/' + myProvider.skin  + '_button_mark_mine_' + reportModeSuffix + '.png'),
          fit: BoxFit.fill,
        ),
      ),
      onPressed: () => myProvider.updateReportMode(!myProvider.reportMode),
    );
  }

  static Table buildToggleFlagModeLayout(Data myProvider) {
    Image paddingBlock = Image(
      image: AssetImage('assets/skins/empty.png'),
      fit: BoxFit.fill,
    );

    return Table(
      defaultColumnWidth: IntrinsicColumnWidth(),
      children: [
        TableRow(
          children: [
            TableCell(child: paddingBlock),
            TableCell(child: paddingBlock),
            TableCell(child: buildToggleFlagModeButton(myProvider)),
            TableCell(child: paddingBlock),
            TableCell(child: paddingBlock),
          ],
        ),
      ],
    );
  }

}