import 'package:solitaire/config/default_game_settings.dart';
import 'package:solitaire/utils/tools.dart'; 

class GameSettings {
  final String layout;

  GameSettings({
    required this.layout,
  });

  static String getLayoutValueFromUnsafe(String layout) {
    if (DefaultGameSettings.allowedLayoutValues.contains(layout)) {
      return layout;
    }

    return DefaultGameSettings.defaultLayoutValue;
  }

  factory GameSettings.createDefault() {
    return GameSettings(
      layout: DefaultGameSettings.defaultLayoutValue,
    );
  }

  void dump() {
    printlog('$GameSettings:');
    printlog('  ${DefaultGameSettings.parameterCodeLayout}: $layout');
    printlog('');
  }

  @override
  String toString() {
    return '$GameSettings(${toJson()})';
  }

  Map<String, dynamic>? toJson() {
    return <String, dynamic>{
      DefaultGameSettings.parameterCodeLayout: layout,
    };
  }
}