Select Git revision
activity_cubit.dart
Benoît Harrault authored
activity_cubit.dart 5.29 KiB
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:jeweled/config/application_config.dart';
import 'package:jeweled/models/activity/cell_location.dart';
import 'package:jeweled/models/activity/activity.dart';
part 'activity_state.dart';
class ActivityCubit extends HydratedCubit<ActivityState> {
ActivityCubit()
: super(ActivityState(
currentActivity: Activity.createEmpty(),
));
void updateState(Activity activity) {
emit(ActivityState(
currentActivity: activity,
));
}
void refresh() {
final Activity activity = Activity(
// Settings
activitySettings: state.currentActivity.activitySettings,
// State
isRunning: state.currentActivity.isRunning,
isStarted: state.currentActivity.isStarted,
isFinished: state.currentActivity.isFinished,
animationInProgress: state.currentActivity.animationInProgress,
// Base data
board: state.currentActivity.board,
// Game data
shuffledColors: state.currentActivity.shuffledColors,
availableBlocksCount: state.currentActivity.availableBlocksCount,
score: state.currentActivity.score,
movesCount: state.currentActivity.movesCount,
);
// game.dump();
updateState(activity);
}
void startNewActivity(BuildContext context) {
final ActivitySettingsCubit activitySettingsCubit =
BlocProvider.of<ActivitySettingsCubit>(context);
final Activity newActivity = Activity.createNew(
// Settings
activitySettings: activitySettingsCubit.state.settings,
);
newActivity.dump();
updateState(newActivity);
postAnimate();
}
bool canBeResumed() {
return state.currentActivity.canBeResumed;
}
void quitActivity() {
state.currentActivity.isRunning = false;
refresh();
}
void resumeSavedActivity() {
state.currentActivity.isRunning = true;
refresh();