refactor: add RandomABAudio

pull/418/head
Allison Ryan 3 years ago
parent 031dea0389
commit 8f540b0510

@ -116,73 +116,45 @@ class _LoopAudio extends _Audio {
} }
} }
class _BumperAudio extends _Audio { class _RandomABAudio extends _Audio {
_BumperAudio({ _RandomABAudio({
required this.createAudioPool, required this.createAudioPool,
required this.seed, required this.seed,
required this.audioAssetA,
required this.audioAssetB,
this.volume,
}); });
final CreateAudioPool createAudioPool; final CreateAudioPool createAudioPool;
final Random seed; final Random seed;
final String audioAssetA;
final String audioAssetB;
final double? volume;
late AudioPool bumperA; late AudioPool audioA;
late AudioPool bumperB; late AudioPool audioB;
@override @override
Future<void> load() async { Future<void> load() async {
await Future.wait( await Future.wait(
[ [
createAudioPool( createAudioPool(
prefixFile(Assets.sfx.bumperA), prefixFile(audioAssetA),
maxPlayers: 4, maxPlayers: 4,
prefix: '', prefix: '',
).then((pool) => bumperA = pool), ).then((pool) => audioA = pool),
createAudioPool( createAudioPool(
prefixFile(Assets.sfx.bumperB), prefixFile(audioAssetB),
maxPlayers: 4, maxPlayers: 4,
prefix: '', prefix: '',
).then((pool) => bumperB = pool), ).then((pool) => audioB = pool),
], ],
); );
} }
@override @override
void play() { void play() {
(seed.nextBool() ? bumperA : bumperB).start(volume: 0.6); (seed.nextBool() ? audioA : audioB).start(volume: volume ?? 1);
}
}
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<void> 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);
} }
} }
@ -278,13 +250,19 @@ class PinballAudioPlayer {
playSingleAudio: _playSingleAudio, playSingleAudio: _playSingleAudio,
path: Assets.sfx.gameOverVoiceOver, path: Assets.sfx.gameOverVoiceOver,
), ),
PinballAudio.bumper: _BumperAudio( PinballAudio.bumper: _RandomABAudio(
createAudioPool: _createAudioPool, createAudioPool: _createAudioPool,
seed: _seed, seed: _seed,
audioAssetA: Assets.sfx.bumperA,
audioAssetB: Assets.sfx.bumperB,
volume: 0.6,
), ),
PinballAudio.kicker: _KickerAudio( PinballAudio.kicker: _RandomABAudio(
createAudioPool: _createAudioPool, createAudioPool: _createAudioPool,
seed: _seed, seed: _seed,
audioAssetA: Assets.sfx.kickerA,
audioAssetB: Assets.sfx.kickerB,
volume: 0.6,
), ),
PinballAudio.cowMoo: _ThrottledAudio( PinballAudio.cowMoo: _ThrottledAudio(
preCacheSingleAudio: _preCacheSingleAudio, preCacheSingleAudio: _preCacheSingleAudio,

@ -125,6 +125,7 @@ void main() {
verify( verify(
() => createAudioPool.onCall( () => createAudioPool.onCall(
'packages/pinball_audio/${Assets.sfx.kickerA}', 'packages/pinball_audio/${Assets.sfx.kickerA}',
maxPlayers: 4,
prefix: '', prefix: '',
), ),
).called(1); ).called(1);
@ -132,6 +133,7 @@ void main() {
verify( verify(
() => createAudioPool.onCall( () => createAudioPool.onCall(
'packages/pinball_audio/${Assets.sfx.kickerB}', 'packages/pinball_audio/${Assets.sfx.kickerB}',
maxPlayers: 4,
prefix: '', prefix: '',
), ),
).called(1); ).called(1);
@ -263,6 +265,7 @@ void main() {
when( when(
() => createAudioPool.onCall( () => createAudioPool.onCall(
'packages/pinball_audio/${Assets.sfx.kickerA}', 'packages/pinball_audio/${Assets.sfx.kickerA}',
maxPlayers: any(named: 'maxPlayers'),
prefix: any(named: 'prefix'), prefix: any(named: 'prefix'),
), ),
).thenAnswer((_) async => kickerAPool); ).thenAnswer((_) async => kickerAPool);
@ -273,6 +276,7 @@ void main() {
when( when(
() => createAudioPool.onCall( () => createAudioPool.onCall(
'packages/pinball_audio/${Assets.sfx.kickerB}', 'packages/pinball_audio/${Assets.sfx.kickerB}',
maxPlayers: any(named: 'maxPlayers'),
prefix: any(named: 'prefix'), prefix: any(named: 'prefix'),
), ),
).thenAnswer((_) async => kickerBPool); ).thenAnswer((_) async => kickerBPool);

Loading…
Cancel
Save