| jens@0 |      1 | /*  Copyright © 2008 Jens Alfke. All Rights Reserved.
 | 
| jens@0 |      2 | 
 | 
| jens@0 |      3 |     Redistribution and use in source and binary forms, with or without modification, are permitted
 | 
| jens@0 |      4 |     provided that the following conditions are met:
 | 
| jens@0 |      5 | 
 | 
| jens@0 |      6 |     * Redistributions of source code must retain the above copyright notice, this list of conditions
 | 
| jens@0 |      7 |       and the following disclaimer.
 | 
| jens@0 |      8 |     * Redistributions in binary form must reproduce the above copyright notice, this list of
 | 
| jens@0 |      9 |       conditions and the following disclaimer in the documentation and/or other materials provided
 | 
| jens@0 |     10 |       with the distribution.
 | 
| jens@0 |     11 | 
 | 
| jens@0 |     12 |     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
 | 
| jens@0 |     13 |     IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
 | 
| jens@0 |     14 |     FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRI-
 | 
| jens@0 |     15 |     BUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 | 
| jens@0 |     16 |     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
 | 
| jens@0 |     17 |     PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 | 
| jens@0 |     18 |     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 
 | 
| jens@0 |     19 |     THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
| jens@0 |     20 | */
 | 
| jens@0 |     21 | #import "GGBUtils.h"
 | 
| jens@0 |     22 | 
 | 
| jens@1 |     23 | #if TARGET_OS_ASPEN
 | 
| jens@1 |     24 | #import <AudioToolbox/AudioToolbox.h>
 | 
| jens@1 |     25 | #endif
 | 
| jens@1 |     26 | 
 | 
| jens@0 |     27 | 
 | 
| jens@0 |     28 | void setObj( id *variable, id newValue )
 | 
| jens@0 |     29 | {
 | 
| jens@0 |     30 |     if( *variable != newValue ) {
 | 
| jens@0 |     31 |         [*variable release];
 | 
| jens@0 |     32 |         *variable = [newValue retain];
 | 
| jens@0 |     33 |     }
 | 
| jens@0 |     34 | }
 | 
| jens@0 |     35 | 
 | 
| jens@0 |     36 | void setObjCopy( id<NSCopying> *variable, id<NSCopying> newValue )
 | 
| jens@0 |     37 | {
 | 
| jens@0 |     38 |     if( *variable != newValue ) {
 | 
| jens@0 |     39 |         [*variable release];
 | 
| jens@0 |     40 |         *variable = [(id)newValue copy];
 | 
| jens@0 |     41 |     }
 | 
| jens@0 |     42 | }
 | 
| jens@1 |     43 | 
 | 
| jens@1 |     44 | 
 | 
| jens@7 |     45 | void PreloadSound( NSString* name )
 | 
| jens@7 |     46 | {
 | 
| jens@7 |     47 | #if ! TARGET_OS_ASPEN
 | 
| jens@7 |     48 |     NSSound *sound = [[NSSound soundNamed: @"Pop"] copy];
 | 
| jens@7 |     49 |     sound.volume = 0;
 | 
| jens@7 |     50 |     [sound play];
 | 
| jens@7 |     51 |     [sound release];
 | 
| jens@7 |     52 | #endif
 | 
| jens@7 |     53 | }    
 | 
| jens@7 |     54 | 
 | 
| jens@7 |     55 | 
 | 
| jens@1 |     56 | void PlaySound( NSString* name )
 | 
| jens@1 |     57 | {
 | 
| jens@1 |     58 | #if TARGET_OS_ASPEN
 | 
| jens@1 |     59 |     NSURL *url = [NSURL fileURLWithPath: [@"/Library/Sounds/" stringByAppendingPathComponent: name]];
 | 
| jens@1 |     60 |     SystemSoundID soundID;
 | 
| jens@1 |     61 |     if( AudioServicesCreateSystemSoundID((CFURLRef)url,&soundID) != noErr ) {
 | 
| jens@1 |     62 |         NSLog(@"Couldn't load sound %@",url);
 | 
| jens@1 |     63 |         return;
 | 
| jens@1 |     64 |     }
 | 
| jens@1 |     65 |     AudioServicesPlaySystemSound(soundID);
 | 
| jens@1 |     66 | #else
 | 
| jens@1 |     67 |     [[NSSound soundNamed: name] play];
 | 
| jens@1 |     68 | #endif
 | 
| jens@1 |     69 | }
 | 
| jens@1 |     70 | 
 | 
| jens@1 |     71 | void Beep()
 | 
| jens@1 |     72 | {
 | 
| jens@1 |     73 | #if TARGET_OS_ASPEN
 | 
| jens@1 |     74 |     AudioServicesPlaySystemSound(kSystemSoundID_UserPreferredAlert);
 | 
| jens@1 |     75 | #else
 | 
| jens@1 |     76 |     NSBeep();
 | 
| jens@1 |     77 | #endif
 | 
| jens@1 |     78 | }
 |