From cb2104739c3d6520623f0a77612ad3464a1d8483 Mon Sep 17 00:00:00 2001 From: Erick Zanardo Date: Sun, 8 May 2022 21:20:16 -0300 Subject: [PATCH] feat: setting background music to 60% for better tuning --- .../pinball_audio/lib/src/pinball_audio.dart | 29 ++++++++++++++----- .../test/src/pinball_audio_test.dart | 17 +++++++---- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/packages/pinball_audio/lib/src/pinball_audio.dart b/packages/pinball_audio/lib/src/pinball_audio.dart index 19a5d583..8e83a800 100644 --- a/packages/pinball_audio/lib/src/pinball_audio.dart +++ b/packages/pinball_audio/lib/src/pinball_audio.dart @@ -59,7 +59,7 @@ typedef CreateAudioPool = Future Function( typedef PlaySingleAudio = Future Function(String); /// Defines the contract for looping a single audio. -typedef LoopSingleAudio = Future Function(String); +typedef LoopSingleAudio = Future Function(String, {double volume}); /// Defines the contract for pre fetching an audio. typedef PreCacheSingleAudio = Future Function(String); @@ -111,8 +111,8 @@ class _LoopAudio extends _Audio { Future load() => preCacheSingleAudio(prefixFile(path)); @override - void play() { - loopSingleAudio(prefixFile(path)); + void play({double volume = 1}) { + loopSingleAudio(prefixFile(path), volume: volume); } } @@ -130,14 +130,30 @@ class _SingleLoopAudio extends _LoopAudio { bool _playing = false; @override - void play() { + void play({double volume = 1}) { if (!_playing) { - super.play(); + super.play(volume: volume); _playing = true; } } } +class _BackgroundMusicAudio extends _SingleLoopAudio { + _BackgroundMusicAudio({ + required PreCacheSingleAudio preCacheSingleAudio, + required LoopSingleAudio loopSingleAudio, + }) : super( + preCacheSingleAudio: preCacheSingleAudio, + loopSingleAudio: loopSingleAudio, + path: Assets.music.background, + ); + + @override + void play({double volume = .6}) { + super.play(volume: volume); + } +} + class _RandomABAudio extends _Audio { _RandomABAudio({ required this.createAudioPool, @@ -292,10 +308,9 @@ class PinballAudioPlayer { path: Assets.sfx.cowMoo, duration: const Duration(seconds: 2), ), - PinballAudio.backgroundMusic: _SingleLoopAudio( + PinballAudio.backgroundMusic: _BackgroundMusicAudio( preCacheSingleAudio: _preCacheSingleAudio, loopSingleAudio: _loopSingleAudio, - path: 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 e7592b8f..3e147329 100644 --- a/packages/pinball_audio/test/src/pinball_audio_test.dart +++ b/packages/pinball_audio/test/src/pinball_audio_test.dart @@ -33,7 +33,7 @@ class _MockPlaySingleAudio extends Mock { } class _MockLoopSingleAudio extends Mock { - Future onCall(String url); + Future onCall(String url, {double volume}); } abstract class _PreCacheSingleAudio { @@ -77,7 +77,8 @@ void main() { when(() => playSingleAudio.onCall(any())).thenAnswer((_) async {}); loopSingleAudio = _MockLoopSingleAudio(); - when(() => loopSingleAudio.onCall(any())).thenAnswer((_) async {}); + when(() => loopSingleAudio.onCall(any(), volume: any(named: 'volume'))) + .thenAnswer((_) async {}); preCacheSingleAudio = _MockPreCacheSingleAudio(); when(() => preCacheSingleAudio.onCall(any())).thenAnswer((_) async {}); @@ -443,8 +444,10 @@ void main() { audioPlayer.play(PinballAudio.backgroundMusic); verify( - () => loopSingleAudio - .onCall('packages/pinball_audio/${Assets.music.background}'), + () => loopSingleAudio.onCall( + 'packages/pinball_audio/${Assets.music.background}', + volume: .6, + ), ).called(1); }); @@ -455,8 +458,10 @@ void main() { ..play(PinballAudio.backgroundMusic); verify( - () => loopSingleAudio - .onCall('packages/pinball_audio/${Assets.music.background}'), + () => loopSingleAudio.onCall( + 'packages/pinball_audio/${Assets.music.background}', + volume: .6, + ), ).called(1); }); });