import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:jeweled/config/default_game_settings.dart'; class GameSettings { final String boardSize; final String colorsCount; GameSettings({ required this.boardSize, required this.colorsCount, }); // Getters to convert String to int int get boardSizeValue => int.parse(boardSize); int get colorsCountValue => int.parse(colorsCount); static String getBoardSizeValueFromUnsafe(String size) { if (DefaultGameSettings.allowedBoardSizeValues.contains(size)) { return size; } return DefaultGameSettings.defaultBoardSizeValue; } static String getColorsCountValueFromUnsafe(String colorsCount) { if (DefaultGameSettings.allowedColorsCountValues.contains(colorsCount)) { return colorsCount; } return DefaultGameSettings.defaultColorsCountValue; } factory GameSettings.createDefault() { return GameSettings( boardSize: DefaultGameSettings.defaultBoardSizeValue, colorsCount: DefaultGameSettings.defaultColorsCountValue, ); } void dump() { printlog('$GameSettings:'); printlog(' ${DefaultGameSettings.parameterCodeBoardSize}: $boardSize'); printlog(' ${DefaultGameSettings.parameterCodeColorsCount}: $colorsCount'); printlog(''); } @override String toString() { return '$GameSettings(${toJson()})'; } Map<String, dynamic>? toJson() { return <String, dynamic>{ DefaultGameSettings.parameterCodeBoardSize: boardSize, DefaultGameSettings.parameterCodeColorsCount: colorsCount, }; } }