From 8f540b0510891aa15f02e0bb60b9a710b7525a52 Mon Sep 17 00:00:00 2001 From: Allison Ryan Date: Sun, 8 May 2022 15:57:29 -0500 Subject: [PATCH] refactor: add RandomABAudio --- .../pinball_audio/lib/src/pinball_audio.dart | 68 +++++++------------ .../test/src/pinball_audio_test.dart | 4 ++ 2 files changed, 27 insertions(+), 45 deletions(-) diff --git a/packages/pinball_audio/lib/src/pinball_audio.dart b/packages/pinball_audio/lib/src/pinball_audio.dart index 0e0ef85b..98074fc5 100644 --- a/packages/pinball_audio/lib/src/pinball_audio.dart +++ b/packages/pinball_audio/lib/src/pinball_audio.dart @@ -116,73 +116,45 @@ class _LoopAudio extends _Audio { } } -class _BumperAudio extends _Audio { - _BumperAudio({ +class _RandomABAudio extends _Audio { + _RandomABAudio({ required this.createAudioPool, required this.seed, + required this.audioAssetA, + required this.audioAssetB, + this.volume, }); final CreateAudioPool createAudioPool; final Random seed; + final String audioAssetA; + final String audioAssetB; + final double? volume; - late AudioPool bumperA; - late AudioPool bumperB; + late AudioPool audioA; + late AudioPool audioB; @override Future load() async { await Future.wait( [ createAudioPool( - prefixFile(Assets.sfx.bumperA), + prefixFile(audioAssetA), maxPlayers: 4, prefix: '', - ).then((pool) => bumperA = pool), + ).then((pool) => audioA = pool), createAudioPool( - prefixFile(Assets.sfx.bumperB), + prefixFile(audioAssetB), maxPlayers: 4, prefix: '', - ).then((pool) => bumperB = pool), + ).then((pool) => audioB = pool), ], ); } @override void play() { - (seed.nextBool() ? bumperA : bumperB).start(volume: 0.6); - } -} - -class _KickerAudio extends _Audio { - _KickerAudio({ - required this.createAudioPool, - required this.seed, - }); - - final CreateAudioPool createAudioPool; - final Random seed; - - late AudioPool kickerA; - late AudioPool kickerB; - - @override - Future load() async { - await Future.wait( - [ - createAudioPool( - prefixFile(Assets.sfx.kickerA), - prefix: '', - ).then((pool) => kickerA = pool), - createAudioPool( - prefixFile(Assets.sfx.kickerB), - prefix: '', - ).then((pool) => kickerB = pool), - ], - ); - } - - @override - void play() { - (seed.nextBool() ? kickerA : kickerB).start(volume: 0.6); + (seed.nextBool() ? audioA : audioB).start(volume: volume ?? 1); } } @@ -278,13 +250,19 @@ class PinballAudioPlayer { playSingleAudio: _playSingleAudio, path: Assets.sfx.gameOverVoiceOver, ), - PinballAudio.bumper: _BumperAudio( + PinballAudio.bumper: _RandomABAudio( createAudioPool: _createAudioPool, seed: _seed, + audioAssetA: Assets.sfx.bumperA, + audioAssetB: Assets.sfx.bumperB, + volume: 0.6, ), - PinballAudio.kicker: _KickerAudio( + PinballAudio.kicker: _RandomABAudio( createAudioPool: _createAudioPool, seed: _seed, + audioAssetA: Assets.sfx.kickerA, + audioAssetB: Assets.sfx.kickerB, + volume: 0.6, ), PinballAudio.cowMoo: _ThrottledAudio( 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 aaec1198..df21b1ad 100644 --- a/packages/pinball_audio/test/src/pinball_audio_test.dart +++ b/packages/pinball_audio/test/src/pinball_audio_test.dart @@ -125,6 +125,7 @@ void main() { verify( () => createAudioPool.onCall( 'packages/pinball_audio/${Assets.sfx.kickerA}', + maxPlayers: 4, prefix: '', ), ).called(1); @@ -132,6 +133,7 @@ void main() { verify( () => createAudioPool.onCall( 'packages/pinball_audio/${Assets.sfx.kickerB}', + maxPlayers: 4, prefix: '', ), ).called(1); @@ -263,6 +265,7 @@ void main() { when( () => createAudioPool.onCall( 'packages/pinball_audio/${Assets.sfx.kickerA}', + maxPlayers: any(named: 'maxPlayers'), prefix: any(named: 'prefix'), ), ).thenAnswer((_) async => kickerAPool); @@ -273,6 +276,7 @@ void main() { when( () => createAudioPool.onCall( 'packages/pinball_audio/${Assets.sfx.kickerB}', + maxPlayers: any(named: 'maxPlayers'), prefix: any(named: 'prefix'), ), ).thenAnswer((_) async => kickerBPool);