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', () {