import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';

import 'package:reversi/common/cubit/nav/nav_cubit_pages.dart';

import 'package:reversi/cubit/activity/activity_cubit.dart';

class ApplicationConfig {
  // skin
  static const String parameterCodeSkin = 'global.skin';
  static const String skinValueDefault = 'default';

  // game mode
  static const String parameterCodeGameMode = 'gameMode';
  static const String gameModeValueMedium = 'human-vs-cpu';

  // difficulty level
  static const String parameterCodeDifficultyLevel = 'difficultyLevel';
  static const String difficultyLevelMedium = 'medium';

  static final ApplicationConfigDefinition config = ApplicationConfigDefinition(
    appTitle: 'Reversi',
    activitySettings: [
      // skin
      ApplicationSettingsParameter(
        code: parameterCodeSkin,
        values: [
          ApplicationSettingsParameterItemValue(
            value: skinValueDefault,
            isDefault: true,
          ),
        ],
      ),

      // game mode
      ApplicationSettingsParameter(
        code: parameterCodeGameMode,
        values: [
          ApplicationSettingsParameterItemValue(
            value: gameModeValueMedium,
            isDefault: true,
          ),
        ],
      ),

      // difficulty level
      ApplicationSettingsParameter(
        code: parameterCodeDifficultyLevel,
        values: [
          ApplicationSettingsParameterItemValue(
            value: difficultyLevelMedium,
            isDefault: true,
          ),
        ],
      ),
    ],
    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();
    },
  );
}