import 'package:flutter/material.dart'; import 'package:flutter_custom_toolbox/flutter_toolbox.dart'; import 'package:snake/common/cubit/nav/nav_cubit_pages.dart'; import 'package:snake/cubit/activity/activity_cubit.dart'; import 'package:snake/ui/parameters/parameter_painter_board_size.dart'; import 'package:snake/ui/parameters/parameter_painter_difficulty_level.dart'; class ApplicationConfig { static const String parameterCodeSkin = 'global.skin'; static const String parameterCodeDifficultyLevel = 'difficultyLevel'; static const String parameterCodeBoardSize = 'boardSize'; static const String skinValueColors = 'colors'; static const String difficultyLevelValueEasy = 'easy'; static const String difficultyLevelValueMedium = 'medium'; static const String difficultyLevelValueHard = 'hard'; static const String difficultyLevelValueNightmare = 'nightmare'; static const String boardSizeValueSmall = 'small'; static const String boardSizeValueMedium = 'medium'; static const String boardSizeValueLarge = 'large'; static const String boardSizeValueExtraLarge = 'extra'; static final ApplicationConfigDefinition config = ApplicationConfigDefinition( appTitle: 'Snake', activitySettings: [ // skin ApplicationSettingsParameter( code: parameterCodeSkin, values: [ ApplicationSettingsParameterItemValue( value: skinValueColors, isDefault: true, ), ], ), // difficulty level ApplicationSettingsParameter( code: parameterCodeDifficultyLevel, values: [ ApplicationSettingsParameterItemValue( value: difficultyLevelValueEasy, color: Colors.green, ), ApplicationSettingsParameterItemValue( value: difficultyLevelValueMedium, color: Colors.orange, isDefault: true, ), ApplicationSettingsParameterItemValue( value: difficultyLevelValueHard, color: Colors.red, ), ApplicationSettingsParameterItemValue( value: difficultyLevelValueNightmare, color: Colors.purple, ), ], customPainter: (context, value) => ParameterPainterDifficultyLevel( context: context, value: value, ), ), // board size ApplicationSettingsParameter( code: parameterCodeBoardSize, values: [ ApplicationSettingsParameterItemValue( value: boardSizeValueSmall, color: Colors.green, ), ApplicationSettingsParameterItemValue( value: boardSizeValueMedium, color: Colors.orange, isDefault: true, ), ApplicationSettingsParameterItemValue( value: boardSizeValueLarge, color: Colors.red, ), ApplicationSettingsParameterItemValue( value: boardSizeValueExtraLarge, color: Colors.purple, ), ], customPainter: (context, value) => ParameterPainterBoardSize( context: context, value: value, ), intValueGetter: (String value) { const Map<String, int> intValues = { boardSizeValueSmall: 6, boardSizeValueMedium: 10, boardSizeValueLarge: 14, boardSizeValueExtraLarge: 20, }; return intValues[value] ?? 1; }, ), ], startNewActivity: (BuildContext context) { BlocProvider.of<ActivityCubit>(context).startNewActivity(context); BlocProvider.of<NavCubitPage>(context).goToPageGame(); }, deleteCurrentActivity: (BuildContext context) { BlocProvider.of<ActivityCubit>(context).deleteSavedActivity(); }, resumeActivity: (BuildContext context) { BlocProvider.of<ActivityCubit>(context).resumeSavedActivity(); BlocProvider.of<NavCubitPage>(context).goToPageGame(); }, ); }