You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-ios/Signal/src/audio/SoundPlayer.m

69 lines
1.6 KiB
Matlab

11 years ago
#import "SoundPlayer.h"
#import "SoundBoard.h"
@interface SoundInstance ()
-(void) play;
-(void) stop;
@end
@implementation SoundPlayer
NSMutableDictionary* currentActiveAudioPlayers;
-(SoundPlayer*) init{
currentActiveAudioPlayers = [NSMutableDictionary dictionary];
return self;
}
#pragma mark Delegate Implementations
-(void) addSoundToManifest:(SoundInstance*) sound {
@synchronized(currentActiveAudioPlayers){
[sound setCompeletionBlock:^(SoundInstance* soundInst) {
[self removeSoundFromManifest:soundInst];
}];
[currentActiveAudioPlayers setValue:sound forKey:[sound getId]];
}
}
-(void) removeSoundFromManifest:(SoundInstance*) sound {
[self removeSoundFromMainifestById:[sound getId]];
}
-(void) removeSoundFromMainifestById:(NSString*) soundId {
@synchronized(currentActiveAudioPlayers){
[currentActiveAudioPlayers removeObjectForKey:soundId];
}
}
-(void) playSound:(SoundInstance*) sound {
if (![self isSoundPlaying:sound]){
[self addSoundToManifest:sound];
[sound play];
}
}
-(void) stopSound:(SoundInstance*) sound {
SoundInstance* playingSoundInstance = currentActiveAudioPlayers[[sound getId]];
11 years ago
[self removeSoundFromManifest:sound];
[playingSoundInstance stop];
}
-(void) stopAllAudio{
for( SoundInstance* sound in currentActiveAudioPlayers.allValues){
11 years ago
[self stopSound:sound];
}
}
-(BOOL) isSoundPlaying:(SoundInstance*) sound {
return nil != currentActiveAudioPlayers[[sound getId]];
11 years ago
}
-(void) awake {
for( SoundInstance* sound in currentActiveAudioPlayers.allValues){
11 years ago
[sound play];
}
}
@end