diff -r 1edd500b2471 -r 6aeaba3ee584 project_files/HedgewarsMobile/Classes/AudioManagerController.m --- a/project_files/HedgewarsMobile/Classes/AudioManagerController.m Thu Feb 09 16:31:02 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/AudioManagerController.m Thu Feb 09 17:28:05 2012 +0100 @@ -22,13 +22,18 @@ #import "AudioManagerController.h" #import "AVFoundation/AVAudioPlayer.h" #import - +#import "MXAudioPlayerFadeOperation.h" static AVAudioPlayer *backgroundMusic = nil; static SystemSoundID clickSound = -1; static SystemSoundID backSound = -1; static SystemSoundID selSound = -1; +static NSOperationQueue *audioFaderQueue = nil; +static MXAudioPlayerFadeOperation *fadeIn = nil; +static MXAudioPlayerFadeOperation *fadeOut = nil; + + @implementation AudioManagerController #pragma mark - @@ -38,7 +43,7 @@ backgroundMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:musicString] error:nil]; backgroundMusic.delegate = nil; - backgroundMusic.volume = 0.4f; + backgroundMusic.volume = 0; backgroundMusic.numberOfLoops = -1; [backgroundMusic prepareToPlay]; } @@ -50,6 +55,7 @@ if (backgroundMusic == nil) [AudioManagerController loadBackgroundMusic]; + backgroundMusic.volume = 0.45f; [backgroundMusic play]; } @@ -61,6 +67,28 @@ [backgroundMusic stop]; } ++(void) fadeOutBackgroundMusic { + if (audioFaderQueue == nil) + audioFaderQueue = [[NSOperationQueue alloc] init]; + if (backgroundMusic == nil) + [AudioManagerController loadBackgroundMusic]; + if (fadeOut == nil) + fadeOut = [[MXAudioPlayerFadeOperation alloc] initFadeWithAudioPlayer:backgroundMusic toVolume:0.0 overDuration:3.0]; + + [audioFaderQueue addOperation:fadeOut]; +} + ++(void) fadeInBackgroundMusic { + if (audioFaderQueue == nil) + audioFaderQueue = [[NSOperationQueue alloc] init]; + if (backgroundMusic == nil) + [AudioManagerController loadBackgroundMusic]; + if (fadeIn == nil) + fadeIn = [[MXAudioPlayerFadeOperation alloc] initFadeWithAudioPlayer:backgroundMusic toVolume:0.45 overDuration:2.0]; + + [audioFaderQueue addOperation:fadeIn]; +} + #pragma mark - #pragma mark sound effects control +(SystemSoundID) loadSound:(NSString *)snd { @@ -111,6 +139,9 @@ +(void) releaseCache { [backgroundMusic stop]; [backgroundMusic release], backgroundMusic = nil; + [fadeOut release], fadeOut = nil; + [fadeIn release], fadeIn = nil; + [audioFaderQueue release], audioFaderQueue = nil; AudioServicesDisposeSystemSoundID(clickSound), clickSound = -1; AudioServicesDisposeSystemSoundID(backSound), backSound = -1; AudioServicesDisposeSystemSoundID(selSound), selSound = -1;