URI:
       tsound_cocoa.m - vaccinewars - be a doctor and try to vaccinate the world
  HTML git clone git://src.adamsgaard.dk/vaccinewars
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tsound_cocoa.m (2648B)
       ---
            1 /************************************************************************
            2  * sound_cocoa.m  Implementation of dopewars sound system (Cocoa driver)*
            3  * Copyright (C)  1998-2021  Ben Webb                                   *
            4  *                Email: benwebb@users.sf.net                           *
            5  *                WWW: https://dopewars.sourceforge.io/                 *
            6  *                                                                      *
            7  * This program is free software; you can redistribute it and/or        *
            8  * modify it under the terms of the GNU General Public License          *
            9  * as published by the Free Software Foundation; either version 2       *
           10  * of the License, or (at your option) any later version.               *
           11  *                                                                      *
           12  * This program is distributed in the hope that it will be useful,      *
           13  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
           14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
           15  * GNU General Public License for more details.                         *
           16  *                                                                      *
           17  * You should have received a copy of the GNU General Public License    *
           18  * along with this program; if not, write to the Free Software          *
           19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston,               *
           20  *                   MA  02111-1307, USA.                               *
           21  ************************************************************************/
           22 
           23 #ifdef HAVE_CONFIG_H
           24 #include <config.h>
           25 #endif
           26 
           27 #ifdef HAVE_COCOA
           28 #include <glib.h>
           29 #include "../sound.h"
           30 
           31 #import <Foundation/Foundation.h>
           32 #import <AppKit/AppKit.h>
           33 
           34 /* Cache player by name of sound file */
           35 NSMutableDictionary *play_by_name;
           36 
           37 static gboolean SoundOpen_Cocoa(void)
           38 {
           39   play_by_name = [[NSMutableDictionary alloc] init];
           40   return TRUE;
           41 }
           42 
           43 static void SoundClose_Cocoa(void)
           44 {
           45   [play_by_name release];
           46 }
           47 
           48 static void SoundPlay_Cocoa(const gchar *snd)
           49 {
           50   NSString *sound = [[NSString alloc] initWithUTF8String:snd];
           51   NSSound *p;
           52   p = [play_by_name objectForKey:sound];
           53   if (!p) {
           54     p = [[NSSound alloc] initWithContentsOfFile:sound byReference:YES];
           55     /* If the sound file doesn't exist, do nothing */
           56     if (!p) return;
           57     [play_by_name setObject:p forKey:sound];
           58   }
           59   /* First, stop any currently playing sound */
           60   [p stop];
           61   [p play];
           62 }
           63 
           64 SoundDriver *sound_cocoa_init(void)
           65 {
           66   static SoundDriver driver;
           67 
           68   driver.name = "cocoa";
           69   driver.open = SoundOpen_Cocoa;
           70   driver.close = SoundClose_Cocoa;
           71   driver.play = SoundPlay_Cocoa;
           72   return &driver;
           73 }
           74 #endif