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

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

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

class ApplicationConfig {
  // game mode
  static const String parameterCodeGameMode = 'activity.gameMode';
  static const String gameModeHumanVsHuman = 'human-vs-human';
  static const String gameModeHumanVsRobot = 'human-vs-robot';
  static const String gameModeRobotVsHuman = 'robot-vs-human';
  static const String gameModeRobotVsRobot = 'robot-vs-robot';

  // size
  static const String parameterCodeBoardSize = 'activity.size';
  static const String boardSizeValueMedium = '7x6';

  static final ApplicationConfigDefinition config = ApplicationConfigDefinition(
    appTitle: 'Puissance4',
    activitySettings: [
      // game mode
      ApplicationSettingsParameter(
        code: parameterCodeGameMode,
        values: [
          ApplicationSettingsParameterItemValue(
            value: gameModeHumanVsHuman,
            color: Colors.green,
            text: '🧑⚡🧑',
            isDefault: true,
          ),
          ApplicationSettingsParameterItemValue(
            value: gameModeHumanVsRobot,
            color: Colors.pink,
            text: '🧑⚡🤖',
          ),
          ApplicationSettingsParameterItemValue(
            value: gameModeRobotVsHuman,
            color: Colors.pink,
            text: '🤖⚡🧑',
          ),
          ApplicationSettingsParameterItemValue(
            value: gameModeRobotVsRobot,
            color: Colors.brown,
            text: '🤖⚡🤖',
          ),
        ],
      ),

      // board size
      ApplicationSettingsParameter(
        code: parameterCodeBoardSize,
        values: [
          ApplicationSettingsParameterItemValue(
            value: boardSizeValueMedium,
            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();
    },
  );
}