Skip to content
Snippets Groups Projects
Select Git revision
  • 0fe6c59f66578298e6e98f471379cdf61da5bf4a
  • master default protected
  • 63-upgrade-framework-and-dependencies
  • 45-improve-app-metadata
  • Release_0.9.0_57 protected
  • Release_0.8.2_56 protected
  • Release_0.8.1_55 protected
  • Release_0.8.0_54 protected
  • Release_0.7.0_53 protected
  • Release_0.6.0_52 protected
  • Release_0.5.0_51 protected
  • Release_0.4.2_50 protected
  • Release_0.4.1_49 protected
  • Release_0.4.0_48 protected
  • Release_0.3.1_47 protected
  • Release_0.3.0_46 protected
  • Release_0.2.2_45 protected
  • Release_0.2.1_44 protected
  • Release_0.2.0_43 protected
  • Release_0.1.2_42 protected
  • Release_0.1.1_41 protected
  • Release_0.1.0_40 protected
  • Release_0.0.39_39 protected
  • Release_0.0.38_38 protected
24 results

data.dart

Blame
  • data.dart 6.74 KiB
    import 'package:flutter/foundation.dart';
    import 'package:shared_preferences/shared_preferences.dart';
    
    class Data extends ChangeNotifier {
    
      // Configuration available values
      List _availableLevelValues = ['easy', 'medium', 'hard', 'nightmare'];
      List _availableSizeValues = ['small', 'medium', 'large', 'extra'];
      List _availableColorsValues = ['5', '6', '7', '8'];
      List _availableSkinValues = ['default', 'retro', 'numbers', 'symbols'];
    
      List get availableLevelValues => _availableLevelValues;
      List get availableSizeValues => _availableSizeValues;
      List get availableColorsValues => _availableColorsValues;
      List get availableSkinValues => _availableSkinValues;
    
      // Application default configuration
      String _parameterLevel = '';
      String _parameterLevelDefault = 'medium';
      String _parameterSize = '';
      String _parameterSizeDefault = 'medium';
      String _parameterColors = '';
      String _parameterColorsDefault = '6';
      String _parameterSkin = '';
      String _parameterSkinDefault = 'default';
    
      // Application current configuration
      String get parameterLevel => _parameterLevel;
      String get parameterSize => _parameterSize;
      String get parameterColors => _parameterColors;
      String get parameterSkin => _parameterSkin;
    
      // Game data
      bool _gameIsRunning = false;
      bool _animationInProgress = false;
      bool _gameWon = false;
      int _boardSize = 0;
      int _colorsCount = 0;
      int _movesCount = 0;
      int _maxMovesCount = 0;
      List _cells = [];
    
      int _progress = 0;
      int _progressTotal = 0;
      int _progressDelta = 0;
    
    
      void updateParameterLevel(String parameterLevel) {
        _parameterLevel = parameterLevel;
        notifyListeners();
      }
      void updateParameterSize(String parameterSize) {
        _parameterSize = parameterSize;
        updateBoardSize(getBoardSizeFromParameter(parameterSize));
        notifyListeners();
      }
      void updateParameterColors(String parameterColors) {
        _parameterColors = parameterColors;
        updateColorsCount(getColorsCountFromParameter(parameterColors));
        notifyListeners();
      }
      void updateParameterSkin(String parameterSkin) {
        _parameterSkin = parameterSkin;
        notifyListeners();
      }
    
      getParameterValue(String parameterCode) {
        switch(parameterCode) {
          case 'level': { return _parameterLevel; }
          break;
          case 'size': { return _parameterSize; }
          break;
          case 'colors': { return _parameterColors; }
          break;
          case 'skin': { return _parameterSkin; }
          break;
        }
        return '';
      }
    
      List getParameterAvailableValues(String parameterCode) {
        switch(parameterCode) {
          case 'level': { return _availableLevelValues; }
          break;
          case 'size': { return _availableSizeValues; }
          break;
          case 'colors': { return _availableColorsValues; }
          break;
          case 'skin': { return _availableSkinValues; }
          break;
        }
        return [];
      }
    
      setParameterValue(String parameterCode, String parameterValue) async {
        switch(parameterCode) {
          case 'level': { updateParameterLevel(parameterValue); }
          break;
          case 'size': { updateParameterSize(parameterValue); }
          break;
          case 'colors': { updateParameterColors(parameterValue); }
          break;
          case 'skin': { updateParameterSkin(parameterValue); }
          break;
        }
        final prefs = await SharedPreferences.getInstance();
        prefs.setString(parameterCode, parameterValue);
      }
    
      void initParametersValues() async {
        final prefs = await SharedPreferences.getInstance();
        setParameterValue('level', prefs.getString('level') ?? _parameterLevelDefault);
        setParameterValue('size', prefs.getString('size') ?? _parameterSizeDefault);
        setParameterValue('colors', prefs.getString('colors') ?? _parameterColorsDefault);
        setParameterValue('skin', prefs.getString('skin') ?? _parameterSkinDefault);
      }
    
      int getBoardSizeFromParameter(String parameterSize) {
        switch(parameterSize) {
          case 'small': { return 6; }
          break;
          case 'medium': { return 10; }
          break;
          case 'large': { return 14; }
          break;
          case 'extra': { return 20; }
          break;
        }
        return getBoardSizeFromParameter(_parameterSizeDefault);
      }
    
      int getColorsCountFromParameter(String parameterColors) {
        switch(parameterColors) {
          case '5': { return 5; }
          break;
          case '6': { return 6; }
          break;
          case '7': { return 7; }
          break;
          case '8': { return 8; }
          break;
        }
        return getColorsCountFromParameter(_parameterColorsDefault);
      }
    
      int getMovesCountLimitDeltaFromLevelParameter(String parameterLevel) {
        switch(parameterLevel) {
          case 'easy': { return 5; }
          break;
          case 'medium': { return 3; }
          break;
          case 'hard': { return 1; }
          break;
          case 'nightmare': { return -1; }
          break;
        }
        return getMovesCountLimitDeltaFromLevelParameter(_parameterLevelDefault);
      }
    
      int get boardSize => _boardSize;
      void updateBoardSize(int boardSize) {
        _boardSize = boardSize;
        _progressTotal = boardSize * boardSize;
      }
    
      int get colorsCount => _colorsCount;
      void updateColorsCount(int colorsCount) {
        _colorsCount = colorsCount;
      }
    
      List get cells => _cells;
      void updateCells(List cells) {
        _cells = cells;
        notifyListeners();
      }
    
      updateCellValue(int col, int row, int value) {
        _cells[row][col].value = value;
        notifyListeners();
      }
    
      int getFirstCellValue() {
        return _cells[0][0].value;
      }
    
      int get movesCount => _movesCount;
      void updateMovesCount(int movesCount) {
        _movesCount = movesCount;
        notifyListeners();
      }
      void incrementMovesCount() {
        updateMovesCount(movesCount + 1);
      }
    
      int get maxMovesCount => _maxMovesCount;
      void updateMaxMovesCount(int maxMovesCount) {
        _maxMovesCount = maxMovesCount;
      }
    
      int get progress => _progress;
      int get progressTotal => _progressTotal;
      int get progressDelta => _progressDelta;
      void updateProgress(int progress) {
        _progress = progress;
        notifyListeners();
      }
      void updateProgressTotal(int progressTotal) {
        _progressTotal = progressTotal;
        notifyListeners();
      }
      void updateProgressDelta(int progressDelta) {
        _progressDelta = progressDelta;
        notifyListeners();
      }
    
      bool get gameIsRunning => _gameIsRunning;
      void updateGameIsRunning(bool gameIsRunning) {
        _gameIsRunning = gameIsRunning;
        notifyListeners();
      }
    
      bool isGameFinished() {
        return _gameWon;
      }
    
      bool get gameWon => _gameWon;
      void updateGameWon(bool gameWon) {
        _gameWon = gameWon;
        notifyListeners();
      }
    
      bool get animationInProgress => _animationInProgress;
      void updateAnimationInProgress(bool animationInProgress) {
        _animationInProgress = animationInProgress;
        notifyListeners();
      }
    
      void resetGame() {
        _gameIsRunning = false;
        _gameWon = false;
        _movesCount = 0;
        _maxMovesCount = 0;
        _progress = 0;
        notifyListeners();
      }
    
    }