fix: prevent overlapping background music (#422)

* fix: prevent overlaping background music

* coverage
pull/426/head
Erick 2 years ago committed by GitHub
parent 48c5c80b38
commit 1316712383
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -116,6 +116,28 @@ class _LoopAudio extends _Audio {
}
}
class _SingleLoopAudio extends _LoopAudio {
_SingleLoopAudio({
required PreCacheSingleAudio preCacheSingleAudio,
required LoopSingleAudio loopSingleAudio,
required String path,
}) : super(
preCacheSingleAudio: preCacheSingleAudio,
loopSingleAudio: loopSingleAudio,
path: path,
);
bool _playing = false;
@override
void play() {
if (!_playing) {
super.play();
_playing = true;
}
}
}
class _RandomABAudio extends _Audio {
_RandomABAudio({
required this.createAudioPool,
@ -270,7 +292,7 @@ class PinballAudioPlayer {
path: Assets.sfx.cowMoo,
duration: const Duration(seconds: 2),
),
PinballAudio.backgroundMusic: _LoopAudio(
PinballAudio.backgroundMusic: _SingleLoopAudio(
preCacheSingleAudio: _preCacheSingleAudio,
loopSingleAudio: _loopSingleAudio,
path: Assets.music.background,

@ -447,6 +447,18 @@ void main() {
.onCall('packages/pinball_audio/${Assets.music.background}'),
).called(1);
});
test('plays only once', () async {
await Future.wait(audioPlayer.load());
audioPlayer
..play(PinballAudio.backgroundMusic)
..play(PinballAudio.backgroundMusic);
verify(
() => loopSingleAudio
.onCall('packages/pinball_audio/${Assets.music.background}'),
).called(1);
});
});
test(

Loading…
Cancel
Save