mirror of https://github.com/flutter/pinball.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.3 KiB
42 lines
1.3 KiB
import 'package:flame/components.dart';
|
|
import 'package:flame_bloc/flame_bloc.dart';
|
|
import 'package:pinball/game/game.dart';
|
|
import 'package:pinball_audio/pinball_audio.dart';
|
|
import 'package:pinball_flame/pinball_flame.dart';
|
|
|
|
/// Behavior that handles playing a bonus sound effect
|
|
class BonusNoiseBehavior extends Component {
|
|
@override
|
|
Future<void> onLoad() async {
|
|
await add(
|
|
FlameBlocListener<GameBloc, GameState>(
|
|
listenWhen: (previous, current) {
|
|
return previous.bonusHistory.length != current.bonusHistory.length;
|
|
},
|
|
onNewState: (state) {
|
|
final bonus = state.bonusHistory.last;
|
|
final audioPlayer = readProvider<PinballAudioPlayer>();
|
|
|
|
switch (bonus) {
|
|
case GameBonus.googleWord:
|
|
audioPlayer.play(PinballAudio.google);
|
|
break;
|
|
case GameBonus.sparkyTurboCharge:
|
|
audioPlayer.play(PinballAudio.sparky);
|
|
break;
|
|
case GameBonus.dinoChomp:
|
|
audioPlayer.play(PinballAudio.dino);
|
|
break;
|
|
case GameBonus.androidSpaceship:
|
|
audioPlayer.play(PinballAudio.android);
|
|
break;
|
|
case GameBonus.dashNest:
|
|
audioPlayer.play(PinballAudio.dash);
|
|
break;
|
|
}
|
|
},
|
|
),
|
|
);
|
|
}
|
|
}
|