// ignore_for_file: public_member_api_docs import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:meta/meta.dart'; part 'game_event.dart'; part 'game_state.dart'; class GameBloc extends Bloc { GameBloc() : super(const GameState.initial()) { on(_onBallLost); on(_onScored); on(_onBonusActivated); on(_onSparkyTurboChargeActivated); } void _onBallLost(BallLost event, Emitter emit) { emit(state.copyWith(balls: state.balls - 1)); } void _onScored(Scored event, Emitter emit) { if (!state.isGameOver) { emit(state.copyWith(score: state.score + event.points)); } } void _onBonusActivated(BonusActivated event, Emitter emit) { emit( state.copyWith( bonusHistory: [...state.bonusHistory, event.bonus], ), ); } Future _onSparkyTurboChargeActivated( SparkyTurboChargeActivated event, Emitter emit, ) async { emit( state.copyWith( bonusHistory: [ ...state.bonusHistory, GameBonus.sparkyTurboCharge, ], ), ); } }