Select Git revision
game_top_indicator.dart
-
Benoît Harrault authoredBenoît Harrault authored
settings_game_cubit.dart 2.08 KiB
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:puissance4/config/default_game_settings.dart';
import 'package:puissance4/models/settings/settings_game.dart';
part 'settings_game_state.dart';
class GameSettingsCubit extends HydratedCubit<GameSettingsState> {
GameSettingsCubit() : super(GameSettingsState(settings: GameSettings.createDefault()));
void setValues({
String? gameMode,
String? size,
}) {
emit(
GameSettingsState(
settings: GameSettings(
gameMode: gameMode ?? state.settings.gameMode,
size: size ?? state.settings.size,
),
),
);
}
String getParameterValue(String code) {
switch (code) {
case DefaultGameSettings.parameterCodeGameMode:
return GameSettings.getGameModeValueFromUnsafe(state.settings.gameMode);
case DefaultGameSettings.parameterCodeSize:
return GameSettings.getSizeValueFromUnsafe(state.settings.size);
}
return '';
}
void setParameterValue(String code, String value) {
final String gameMode = code == DefaultGameSettings.parameterCodeGameMode
? value
: getParameterValue(DefaultGameSettings.parameterCodeGameMode);
final String size = code == DefaultGameSettings.parameterCodeSize
? value
: getParameterValue(DefaultGameSettings.parameterCodeSize);
setValues(
gameMode: gameMode,
size: size,
);
}
@override
GameSettingsState? fromJson(Map<String, dynamic> json) {
final String gameMode = json[DefaultGameSettings.parameterCodeGameMode] as String;
final String size = json[DefaultGameSettings.parameterCodeSize] as String;
return GameSettingsState(
settings: GameSettings(
gameMode: gameMode,
size: size,
),
);
}
@override
Map<String, dynamic>? toJson(GameSettingsState state) {
return <String, dynamic>{
DefaultGameSettings.parameterCodeGameMode: state.settings.gameMode,
DefaultGameSettings.parameterCodeSize: state.settings.size,
};