import 'package:shared_preferences/shared_preferences.dart'; /// This class handles the configuration settings for the app. /// It uses SharedPreferences to store and retrieve the personal configuration of the app. /// Currently it provides methods to initialize, get, and set the point limit and cabo penalty. class ConfigService { static const String _keyPointLimit = 'pointLimit'; static const String _keyCaboPenalty = 'caboPenalty'; static const String _keyGameMode = 'gameMode'; // Actual values used in the app static int pointLimit = 100; static int caboPenalty = 5; static int gameMode = -1; // Default values static const int _defaultPointLimit = 100; static const int _defaultCaboPenalty = 5; static const int _defaultGameMode = -1; static Future initConfig() async { final prefs = await SharedPreferences.getInstance(); // Default values only set if they are not already set prefs.setInt( _keyPointLimit, prefs.getInt(_keyPointLimit) ?? _defaultPointLimit); prefs.setInt( _keyCaboPenalty, prefs.getInt(_keyCaboPenalty) ?? _defaultCaboPenalty); prefs.setInt(_keyGameMode, prefs.getInt(_keyGameMode) ?? _defaultGameMode); } static Future setGameMode(int newGameMode) async { final prefs = await SharedPreferences.getInstance(); await prefs.setInt(_keyGameMode, newGameMode); gameMode = newGameMode; } /// Getter for the point limit. static Future getPointLimit() async { final prefs = await SharedPreferences.getInstance(); return prefs.getInt(_keyPointLimit) ?? _defaultPointLimit; } /// Setter for the point limit. /// [newPointLimit] is the new point limit to be set. static Future setPointLimit(int newPointLimit) async { final prefs = await SharedPreferences.getInstance(); await prefs.setInt(_keyPointLimit, newPointLimit); pointLimit = newPointLimit; } /// Getter for the cabo penalty. static Future getCaboPenalty() async { final prefs = await SharedPreferences.getInstance(); return prefs.getInt(_keyCaboPenalty) ?? _defaultCaboPenalty; } /// Setter for the cabo penalty. /// [newCaboPenalty] is the new cabo penalty to be set. static Future setCaboPenalty(int newCaboPenalty) async { final prefs = await SharedPreferences.getInstance(); await prefs.setInt(_keyCaboPenalty, newCaboPenalty); caboPenalty = newCaboPenalty; } /// Resets the configuration to default values. static Future resetConfig() async { ConfigService.pointLimit = _defaultPointLimit; ConfigService.caboPenalty = _defaultCaboPenalty; final prefs = await SharedPreferences.getInstance(); await prefs.setInt(_keyPointLimit, _defaultPointLimit); await prefs.setInt(_keyCaboPenalty, _defaultCaboPenalty); } }