Skip to content
Snippets Groups Projects
settings_activity.dart 1.63 KiB
Newer Older
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';

import 'package:reversi/config/default_activity_settings.dart';

class ActivitySettings {
  final String itemsCount;
  final String timerValue;

  ActivitySettings({
    required this.itemsCount,
    required this.timerValue,
  });

  // Getters to convert String to int
  int get itemsCountValue => int.parse(itemsCount);
  int get timerCountValue => int.parse(timerValue);

  static String getItemsCountValueFromUnsafe(String itemsCount) {
    if (DefaultActivitySettings.allowedGameModeValues.contains(itemsCount)) {
      return itemsCount;
    }

    return DefaultActivitySettings.defaultGameModeValue;
  }

  static String getTimerValueFromUnsafe(String timerValue) {
    if (DefaultActivitySettings.allowedDifficultyLevelValues.contains(timerValue)) {
      return timerValue;
    }

    return DefaultActivitySettings.difficultyLevelValue;
  }

  factory ActivitySettings.createDefault() {
    return ActivitySettings(
      itemsCount: DefaultActivitySettings.defaultGameModeValue,
      timerValue: DefaultActivitySettings.difficultyLevelValue,
    );
  }

  void dump() {
    printlog('$ActivitySettings:');
    printlog('  ${DefaultActivitySettings.parameterCodeGameMode}: $itemsCount');
    printlog('  ${DefaultActivitySettings.parameterCodeDifficultyLevel}: $timerValue');
    printlog('');
  }

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

  Map<String, dynamic>? toJson() {
    return <String, dynamic>{
      DefaultActivitySettings.parameterCodeGameMode: itemsCount,
      DefaultActivitySettings.parameterCodeDifficultyLevel: timerValue,
    };
  }
}