Select Git revision
activity_cubit.dart
-
Benoît Harrault authoredBenoît Harrault authored
activity_cubit.dart 3.84 KiB
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_custom_toolbox/flutter_toolbox.dart';
import 'package:snake/models/activity/activity.dart';
import 'package:snake/models/settings/settings_activity.dart';
import 'package:snake/models/settings/settings_global.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,
globalSettings: state.currentActivity.globalSettings,
// State
isRunning: state.currentActivity.isRunning,
isStarted: state.currentActivity.isStarted,
isFinished: state.currentActivity.isFinished,
animationInProgress: state.currentActivity.animationInProgress,
// Base data
snake: state.currentActivity.snake,
board: state.currentActivity.board,
boardSize: state.currentActivity.boardSize,
// Game data
score: state.currentActivity.score,
gameWon: state.currentActivity.gameWon,
);
// game.dump();
updateState(activity);
}
void startNewActivity({
required ActivitySettings activitySettings,
required GlobalSettings globalSettings,
}) {
final Activity newActivity = Activity.createNew(
// Settings
activitySettings: activitySettings,
globalSettings: globalSettings,
);
newActivity.dump();
updateState(newActivity);
updateGameIsRunning(true);
startSnake();
refresh();
}
void quitActivity() {
state.currentActivity.isRunning = false;
refresh();
}