update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
/* * Hedgewars-iOS, a Hedgewars port for iOS devices * Copyright (c) 2009-2012 Vittorio Giovara <vittorio.giovara@gmail.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */#import "AudioManagerController.h"#import "AVFoundation/AVAudioPlayer.h"#import "MXAudioPlayerFadeOperation.h"#define DEFAULT_VOLUME 0.45f#define FADEOUT_DURATION 3.0f#define FADEIN_DURATION 2.0fstatic AudioManagerController *mainInstance;@implementation AudioManagerController@synthesize backgroundMusic, clickSound, backSound, selSound, audioFaderQueue;+(id) mainManager { if (mainInstance == nil) mainInstance = [[self alloc] init]; return mainInstance;}-(id) init { if ((self = [super init])) { self.backgroundMusic = nil; self.clickSound = -1; self.backSound = -1; self.selSound = -1; self.audioFaderQueue = nil; } return self;}-(void) dealloc { [self unloadSounds]; releaseAndNil(backgroundMusic); releaseAndNil(audioFaderQueue); mainInstance = nil; [super dealloc];}-(void) didReceiveMemoryWarning { if (self.backgroundMusic.playing == NO) self.backgroundMusic = nil; if ([self.audioFaderQueue operationCount] == 0) self.audioFaderQueue = nil; [self unloadSounds]; MSG_MEMCLEAN();}#pragma mark -#pragma mark background music control-(void) playBackgroundMusic { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"music"] boolValue] == NO) return; if (self.backgroundMusic == nil) { NSString *musicString = [[NSBundle mainBundle] pathForResource:@"hwclassic" ofType:@"mp3"]; self.backgroundMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:musicString] error:nil]; self.backgroundMusic.delegate = nil; self.backgroundMusic.numberOfLoops = -1; } self.backgroundMusic.volume = DEFAULT_VOLUME; [self.backgroundMusic play];}-(void) pauseBackgroundMusic { [self.backgroundMusic pause];}-(void) stopBackgroundMusic { [self.backgroundMusic stop];}-(void) fadeOutBackgroundMusic { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"music"] boolValue] == NO) return; if (self.audioFaderQueue == nil) self.audioFaderQueue = [[NSOperationQueue alloc] init]; MXAudioPlayerFadeOperation *fadeOut = [[MXAudioPlayerFadeOperation alloc] initFadeWithAudioPlayer:self.backgroundMusic toVolume:0.0 overDuration:FADEOUT_DURATION]; [self.audioFaderQueue addOperation:fadeOut]; [fadeOut release];}-(void) fadeInBackgroundMusic { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"music"] boolValue] == NO) return; if (self.audioFaderQueue == nil) self.audioFaderQueue = [[NSOperationQueue alloc] init]; [self playBackgroundMusic]; MXAudioPlayerFadeOperation *fadeIn = [[MXAudioPlayerFadeOperation alloc] initFadeWithAudioPlayer:self.backgroundMusic toVolume:DEFAULT_VOLUME overDuration:FADEIN_DURATION]; [audioFaderQueue addOperation:fadeIn]; [fadeIn release];}#pragma mark -#pragma mark sound effects control-(SystemSoundID) loadSound:(NSString *)snd { SystemSoundID soundID; // get the filename of the sound file in a NSURL format NSString *path = [[NSBundle mainBundle] pathForResource:snd ofType:@"caf"]; NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO]; // use audio sevices to create and play the sound AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID); return soundID;}-(void) unloadSounds { AudioServicesDisposeSystemSoundID(clickSound), clickSound = -1; AudioServicesDisposeSystemSoundID(backSound), backSound = -1; AudioServicesDisposeSystemSoundID(selSound), selSound = -1;}-(void) playClickSound { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"sound"] boolValue] == NO) return; if (self.clickSound == -1) self.clickSound = [self loadSound:@"clickSound"]; AudioServicesPlaySystemSound(self.clickSound);}-(void) playBackSound { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"sound"] boolValue] == NO) return; if (self.backSound == -1) self.backSound = [self loadSound:@"backSound"]; AudioServicesPlaySystemSound(self.backSound);}-(void) playSelectSound { if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"sound"] boolValue] == NO) return; if (self.selSound == -1) self.selSound = [self loadSound:@"selSound"]; AudioServicesPlaySystemSound(self.selSound);}@end