import 'package:flutter_custom_toolbox/flutter_toolbox.dart';

class DefaultGameSettings {
  // available game parameters codes
  static const String parameterCodeLang = 'lang';
  static const String parameterCodeLength = 'length';
  static const String parameterCodeLevel = 'level';
  static const List<String> availableParameters = [
    parameterCodeLang,
    parameterCodeLength,
    parameterCodeLevel,
  ];

  // lang: available values
  static const String langValueFr = 'fr';
  static const List<String> allowedLangValues = [
    langValueFr,
  ];
  // lang: default value
  static const String defaultLangValue = langValueFr;

  // length: available values
  static const String lengthValue4 = '4';
  static const String lengthValue5 = '5';
  static const String lengthValue6 = '6';
  static const String lengthValue7 = '7';
  static const String lengthValue8 = '8';
  static const List<String> allowedLengthValues = [
    lengthValue4,
    lengthValue5,
    lengthValue6,
    lengthValue7,
    lengthValue8,
  ];
  // length: default value
  static const String defaultLengthValue = lengthValue5;

  // level: available values
  static const String levelValueEasy = 'easy';
  static const String levelValueNormal = 'normal';
  static const List<String> allowedLevelValues = [
    levelValueEasy,
    levelValueNormal,
  ];
  // level: default value
  static const String defaultLevelValue = levelValueEasy;

  // available values from parameter code
  static List<String> getAvailableValues(String parameterCode) {
    switch (parameterCode) {
      case parameterCodeLang:
        return DefaultGameSettings.allowedLangValues;
      case parameterCodeLength:
        return DefaultGameSettings.allowedLengthValues;
      case parameterCodeLevel:
        return DefaultGameSettings.allowedLevelValues;
    }

    printlog('Did not find any available value for game parameter "$parameterCode".');
    return [];
  }

  static const int maxGuessesCount = 7;
}