import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:snake/config/default_activity_settings.dart'; class ActivitySettings { String difficultyLevel; String parameterSize; ActivitySettings({ required this.difficultyLevel, required this.parameterSize, }); static String getLevelValueFromUnsafe(String level) { if (DefaultActivitySettings.allowedDifficultyLevelValues.contains(level)) { return level; } return DefaultActivitySettings.defaultDifficultyLevelValue; } static String getSizeValueFromUnsafe(String size) { if (DefaultActivitySettings.allowedBoardSizeValues.contains(size)) { return size; } return DefaultActivitySettings.defaultBoardSizeValue; } factory ActivitySettings.createDefault() { return ActivitySettings( difficultyLevel: DefaultActivitySettings.defaultDifficultyLevelValue, parameterSize: DefaultActivitySettings.defaultBoardSizeValue, ); } int getBoardSizeFromParameter(String parameterSize) { const Map<String, int> values = { DefaultActivitySettings.boardSizeValueSmall: 12, DefaultActivitySettings.boardSizeValueMedium: 20, DefaultActivitySettings.boardSizeValueLarge: 30, DefaultActivitySettings.boardSizeValueExtra: 40, }; return values[parameterSize] ?? getBoardSizeFromParameter(DefaultActivitySettings.defaultBoardSizeValue); } int get boardSize => getBoardSizeFromParameter(parameterSize); void dump() { printlog('$ActivitySettings:'); printlog(' ${DefaultActivitySettings.parameterCodeDifficultyLevel}: $difficultyLevel'); printlog(' ${DefaultActivitySettings.parameterCodeBoardSize}: $parameterSize'); printlog(''); } @override String toString() { return '$ActivitySettings(${toJson()})'; } Map<String, dynamic>? toJson() { return <String, dynamic>{ DefaultActivitySettings.parameterCodeDifficultyLevel: difficultyLevel, DefaultActivitySettings.parameterCodeBoardSize: parameterSize, }; } }