Skip to content
Snippets Groups Projects
Select Git revision
  • e7099855e01653fbdaa1379ca354db98387683fb
  • master default protected
  • 100-upgrade-framework-and-dependencies
  • 65-improve-app-metadata
  • Release_1.8.0_80 protected
  • Release_1.7.2_79 protected
  • Release_1.7.1_78 protected
  • Release_1.7.0_77 protected
  • Release_1.6.0_76 protected
  • Release_1.5.0_75 protected
  • Release_1.4.0_74 protected
  • Release_1.3.2_73 protected
  • Release_1.3.1_72 protected
  • Release_1.3.0_71 protected
  • Release_1.2.1_70 protected
  • Release_1.2.0_69 protected
  • Release_1.1.3_68 protected
  • Release_1.1.2_67 protected
  • Release_1.1.1_66 protected
  • Release_1.1.0_65 protected
  • Release_1.0.63_64 protected
  • Release_1.0.62_63 protected
  • Release_1.0.61_62 protected
  • Release_1.0.60_61 protected
24 results

settings_state.dart

Blame
  • cell.dart 4.26 KiB
    import 'package:flutter/material.dart';
    
    import 'package:minehunter/provider/data.dart';
    import 'package:minehunter/utils/board_animate.dart';
    import 'package:minehunter/utils/board_utils.dart';
    
    class Cell {
      bool isMined = false;
      bool isExplored = false;
      bool isMarked = false;
      bool isExploded = false;
      int minesCountAround = 0;
    
      bool isAnimated = false;
    
      Cell(
        this.isMined,
      );
    
      /*
      * Build widget for board cell, with interactions
      */
      Container widget(Data myProvider, int row, int col) {
        String imageAsset = getImageAssetName(myProvider);
    
        return Container(
          decoration: BoxDecoration(
            color: getBackgroundColor(myProvider),
            border: getCellBorders(myProvider, row, col),
          ),
          child: GestureDetector(
            child: AnimatedSwitcher(
              duration: const Duration(milliseconds: 100),
              transitionBuilder: (Widget child, Animation<double> animation) {
                return ScaleTransition(scale: animation, child: child);
              },
              child: Image(
                image: AssetImage(imageAsset),
                fit: BoxFit.fill,
                key: ValueKey<int>(imageAsset.hashCode),
              ),
            ),
            onTap: () {
              // Set mines on board after first player try
              if (!myProvider.isBoardMined) {
                myProvider.updateCells(BoardUtils.createBoard(myProvider, row, col));
                myProvider.updateIsBoardMined(true);
              }
    
              if (!(myProvider.gameWin || myProvider.gameFail)) {
                if (myProvider.reportMode) {
                  BoardUtils.reportCell(myProvider, row, col);
                } else {
                  BoardUtils.walkOnCell(myProvider, row, col);
                }
                if (BoardUtils.checkGameIsFinished(myProvider)) {
                  myProvider.updateReportMode(false);
                  BoardAnimate.startAnimation(myProvider, myProvider.gameWin ? 'win' : 'fail');
                }
              }
            },
          ),
        );
      }
    
      /*
      * Compute image asset name, from skin and cell value/state
      */
      String getImageAssetName(Data myProvider) {
        String imageAsset = 'assets/skins/${myProvider.parameterSkin}_tile_unknown.png';