From 1ee4557855993ac50c8790623bf0c54cacc05fbe Mon Sep 17 00:00:00 2001 From: Allison Ryan <77211884+allisonryan0002@users.noreply.github.com> Date: Tue, 10 May 2022 08:57:38 -0500 Subject: [PATCH] fix: throttle dino audio (#457) --- .../pinball_audio/lib/src/pinball_audio.dart | 3 ++- .../test/src/pinball_audio_test.dart | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/pinball_audio/lib/src/pinball_audio.dart b/packages/pinball_audio/lib/src/pinball_audio.dart index c62f197d..4a3d04d8 100644 --- a/packages/pinball_audio/lib/src/pinball_audio.dart +++ b/packages/pinball_audio/lib/src/pinball_audio.dart @@ -279,10 +279,11 @@ class PinballAudioPlayer { playSingleAudio: _playSingleAudio, path: Assets.sfx.sparky, ), - PinballAudio.dino: _SimplePlayAudio( + PinballAudio.dino: _ThrottledAudio( preCacheSingleAudio: _preCacheSingleAudio, playSingleAudio: _playSingleAudio, path: Assets.sfx.dino, + duration: const Duration(seconds: 6), ), PinballAudio.dash: _SimplePlayAudio( preCacheSingleAudio: _preCacheSingleAudio, diff --git a/packages/pinball_audio/test/src/pinball_audio_test.dart b/packages/pinball_audio/test/src/pinball_audio_test.dart index 554e9752..1c82815d 100644 --- a/packages/pinball_audio/test/src/pinball_audio_test.dart +++ b/packages/pinball_audio/test/src/pinball_audio_test.dart @@ -454,6 +454,32 @@ void main() { ), ).called(1); }); + + test('only plays the sound again after 6 seconds', () async { + final clock = _MockClock(); + await withClock(clock, () async { + when(clock.now).thenReturn(DateTime(2022)); + await Future.wait( + audioPlayer.load().map((loadableBuilder) => loadableBuilder()), + ); + audioPlayer + ..play(PinballAudio.dino) + ..play(PinballAudio.dino); + + verify( + () => playSingleAudio + .onCall('packages/pinball_audio/${Assets.sfx.dino}'), + ).called(1); + + when(clock.now).thenReturn(DateTime(2022, 1, 1, 1, 6)); + audioPlayer.play(PinballAudio.dino); + + verify( + () => playSingleAudio + .onCall('packages/pinball_audio/${Assets.sfx.dino}'), + ).called(1); + }); + }); }); group('android', () {