import 'package:flutter/material.dart';

import '../layout/board.dart';
import '../provider/data.dart';
import '../utils/game_utils.dart';

class Game {

  static Container buildGameWidget(Data myProvider) {
    return Container(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.start,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Board.buildGameBoard(myProvider),
          SizedBox(height: 2),
          (myProvider.gameWin || myProvider.gameFail)
            ? Game.buildEndGameMessage(myProvider)
            : Board.buildToggleFlagModeLayout(myProvider)
        ],
      ),
    );
  }

  static FlatButton buildRestartGameButton(Data myProvider) {
    return FlatButton(
      child: Container(
        child: Image(
          image: AssetImage('assets/icons/button_back.png'),
          fit: BoxFit.fill,
        ),
      ),
      onPressed: () => GameUtils.resetGame(myProvider),
    );
  }

  static Container buildEndGameMessage(Data myProvider) {
    Image decorationImage = Image(
      image: AssetImage(
        myProvider.gameWin
          ? 'assets/icons/game_win.png'
          : myProvider.gameFail
            ? 'assets/icons/game_fail.png'
            : ''
      ),
      fit: BoxFit.fill,
    );

    return Container(
      margin: EdgeInsets.all(2),
      padding: EdgeInsets.all(2),

      child: Table(
        defaultColumnWidth: IntrinsicColumnWidth(),
        children: [
          TableRow(
            children: [
              Column(children: [ decorationImage ]),
              Column(children: [ myProvider.animationInProgress ? decorationImage : buildRestartGameButton(myProvider) ]),
              Column(children: [ decorationImage ]),
            ],
          ),
        ]
      )
    );
  }

}