Select Git revision
activity_cubit.dart
settings_game_cubit.dart 1.90 KiB
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:jeweled/models/settings_game.dart';
import 'package:jeweled/utils/tools.dart';
part 'settings_game_state.dart';
class GameSettingsCubit extends HydratedCubit<GameSettingsState> {
GameSettingsCubit() : super(GameSettingsState(settings: GameSettings.createDefault()));
void setValues({
int? boardSize,
int? colorsCount,
}) {
emit(
GameSettingsState(
settings: GameSettings(
boardSize: boardSize ?? state.settings.boardSize,
colorsCount: colorsCount ?? state.settings.colorsCount,
),
),
);
}
int getParameterValue(String code) {
switch (code) {
case 'boardSize':
return GameSettings.getBoardSizeValueFromUnsafe(state.settings.boardSize);
case 'colorsCount':
return GameSettings.getColorsCountValueFromUnsafe(state.settings.colorsCount);
}
return 0;
}
void setParameterValue(String code, int value) {
printlog('GameSettingsCubit.setParameterValue');
printlog('code: $code / value: $value');
int boardSize = code == 'boardSize' ? value : getParameterValue('boardSize');
int colorsCount = code == 'colorsCount' ? value : getParameterValue('colorsCount');
setValues(
boardSize: boardSize,
colorsCount: colorsCount,
);
}
@override
GameSettingsState? fromJson(Map<String, dynamic> json) {
int boardSize = json['boardSize'] as int;
int colorsCount = json['colorsCount'] as int;
return GameSettingsState(
settings: GameSettings(
boardSize: boardSize,
colorsCount: colorsCount,
),
);
}
@override
Map<String, dynamic>? toJson(GameSettingsState state) {
return <String, dynamic>{
'boardSize': state.settings.boardSize,
'colorsCount': state.settings.colorsCount,
};
}
}