From 62be5f636d23b477aa83f152de036244bc6b1df0 Mon Sep 17 00:00:00 2001 From: Erick Date: Tue, 3 May 2022 13:36:02 -0300 Subject: [PATCH] feat: adding start screen sfx (#308) * feat: adding start screen sfx * fix: lint * fix: lint * feat: PR suggestions * fix: lint * Apply suggestions from code review Co-authored-by: Allison Ryan <77211884+allisonryan0002@users.noreply.github.com> Co-authored-by: Allison Ryan <77211884+allisonryan0002@users.noreply.github.com> --- .../widgets/how_to_play_dialog.dart | 7 ++++- .../assets/sfx/io_pinball_voice_over.mp3 | Bin 0 -> 55308 bytes .../pinball_audio/lib/gen/assets.gen.dart | 1 + .../pinball_audio/lib/src/pinball_audio.dart | 6 ++++ .../test/src/pinball_audio_test.dart | 18 +++++++++++ test/how_to_play/how_to_play_dialog_test.dart | 28 ++++++++++++++++++ 6 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 packages/pinball_audio/assets/sfx/io_pinball_voice_over.mp3 diff --git a/lib/how_to_play/widgets/how_to_play_dialog.dart b/lib/how_to_play/widgets/how_to_play_dialog.dart index 3dc2c62b..e91698f5 100644 --- a/lib/how_to_play/widgets/how_to_play_dialog.dart +++ b/lib/how_to_play/widgets/how_to_play_dialog.dart @@ -3,8 +3,10 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:pinball/gen/gen.dart'; import 'package:pinball/l10n/l10n.dart'; +import 'package:pinball_audio/pinball_audio.dart'; import 'package:pinball_ui/pinball_ui.dart'; import 'package:platform_helper/platform_helper.dart'; @@ -50,10 +52,13 @@ extension on Control { } Future showHowToPlayDialog(BuildContext context) { + final audio = context.read(); return showDialog( context: context, builder: (_) => HowToPlayDialog(), - ); + ).then((_) { + audio.ioPinballVoiceOver(); + }); } class HowToPlayDialog extends StatefulWidget { diff --git a/packages/pinball_audio/assets/sfx/io_pinball_voice_over.mp3 b/packages/pinball_audio/assets/sfx/io_pinball_voice_over.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..7829086c476ecf2b6ea5a0f2e130eafc089f6dc7 GIT binary patch literal 55308 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 z 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 G!2bf@%362; literal 0 HcmV?d00001 diff --git a/packages/pinball_audio/lib/gen/assets.gen.dart b/packages/pinball_audio/lib/gen/assets.gen.dart index 1b3bdfb9..0f68e170 100644 --- a/packages/pinball_audio/lib/gen/assets.gen.dart +++ b/packages/pinball_audio/lib/gen/assets.gen.dart @@ -15,6 +15,7 @@ class $AssetsSfxGen { const $AssetsSfxGen(); String get google => 'assets/sfx/google.mp3'; + String get ioPinballVoiceOver => 'assets/sfx/io_pinball_voice_over.mp3'; String get plim => 'assets/sfx/plim.mp3'; } diff --git a/packages/pinball_audio/lib/src/pinball_audio.dart b/packages/pinball_audio/lib/src/pinball_audio.dart index 8bda14e5..f87b05d1 100644 --- a/packages/pinball_audio/lib/src/pinball_audio.dart +++ b/packages/pinball_audio/lib/src/pinball_audio.dart @@ -74,6 +74,7 @@ class PinballAudio { await Future.wait([ _preCacheSingleAudio(_prefixFile(Assets.sfx.google)), + _preCacheSingleAudio(_prefixFile(Assets.sfx.ioPinballVoiceOver)), _preCacheSingleAudio(_prefixFile(Assets.music.background)), ]); } @@ -88,6 +89,11 @@ class PinballAudio { _playSingleAudio(_prefixFile(Assets.sfx.google)); } + /// Plays the I/O Pinball voice over audio. + void ioPinballVoiceOver() { + _playSingleAudio(_prefixFile(Assets.sfx.ioPinballVoiceOver)); + } + /// Plays the background music void backgroundMusic() { _loopSingleAudio(_prefixFile(Assets.music.background)); diff --git a/packages/pinball_audio/test/src/pinball_audio_test.dart b/packages/pinball_audio/test/src/pinball_audio_test.dart index c92b876d..9d6dff98 100644 --- a/packages/pinball_audio/test/src/pinball_audio_test.dart +++ b/packages/pinball_audio/test/src/pinball_audio_test.dart @@ -125,6 +125,11 @@ void main() { () => preCacheSingleAudio .onCall('packages/pinball_audio/assets/sfx/google.mp3'), ).called(1); + verify( + () => preCacheSingleAudio.onCall( + 'packages/pinball_audio/assets/sfx/io_pinball_voice_over.mp3', + ), + ).called(1); verify( () => preCacheSingleAudio .onCall('packages/pinball_audio/assets/music/background.mp3'), @@ -163,6 +168,19 @@ void main() { }); }); + group('ioPinballVoiceOver', () { + test('plays the correct file', () async { + await audio.load(); + audio.ioPinballVoiceOver(); + + verify( + () => playSingleAudio.onCall( + 'packages/pinball_audio/${Assets.sfx.ioPinballVoiceOver}', + ), + ).called(1); + }); + }); + group('backgroundMusic', () { test('plays the correct file', () async { await audio.load(); diff --git a/test/how_to_play/how_to_play_dialog_test.dart b/test/how_to_play/how_to_play_dialog_test.dart index 2570c846..232aa1d5 100644 --- a/test/how_to_play/how_to_play_dialog_test.dart +++ b/test/how_to_play/how_to_play_dialog_test.dart @@ -3,10 +3,13 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; import 'package:pinball/how_to_play/how_to_play.dart'; import 'package:pinball/l10n/l10n.dart'; +import 'package:pinball_audio/pinball_audio.dart'; import 'package:platform_helper/platform_helper.dart'; import '../helpers/helpers.dart'; +class _MockPinballAudio extends Mock implements PinballAudio {} + class _MockPlatformHelper extends Mock implements PlatformHelper {} void main() { @@ -93,5 +96,30 @@ void main() { await tester.pumpAndSettle(); expect(find.byType(HowToPlayDialog), findsNothing); }); + + testWidgets( + 'plays the I/O Pinball voice over audio on dismiss', + (tester) async { + final audio = _MockPinballAudio(); + await tester.pumpApp( + Builder( + builder: (context) { + return TextButton( + onPressed: () => showHowToPlayDialog(context), + child: const Text('test'), + ); + }, + ), + pinballAudio: audio, + ); + expect(find.byType(HowToPlayDialog), findsNothing); + await tester.tap(find.text('test')); + await tester.pumpAndSettle(); + + await tester.tapAt(Offset.zero); + await tester.pumpAndSettle(); + verify(audio.ioPinballVoiceOver).called(1); + }, + ); }); }