X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/micropolis/blobdiff_plain/6c2a32385728be100bce7c33aca3945ffc42ae4b..41b487e3e23e7e91bf518827a2523b8ec50a1f30:/src/sim/w_sound.c diff --git a/src/sim/w_sound.c b/src/sim/w_sound.c index 1c11202..a7dae78 100644 --- a/src/sim/w_sound.c +++ b/src/sim/w_sound.c @@ -237,15 +237,6 @@ MakeSound(char *channel, char *id) fprintf(stderr, "Mix_PlayChannel: %s\n", Mix_GetError()); } -MakeSoundOn(SimView *view, char *channel, char *id) -{ - if (!UserSoundOn) return; - if (!SoundInitialized) return; - - MakeSound(channel, id); -} - - StartBulldozer(void) { if (!UserSoundOn) return; @@ -269,22 +260,50 @@ StopBulldozer(void) #else /* WITH_SDL_MIXER */ InitializeSound() { + SoundInitialized = 1; } ShutDownSound() { + SoundInitialized = 0; } MakeSound(char *channel, char *id) { -} + char filename[256], player[256]; + int i; + pid_t pid; -MakeSoundOn(SimView *view, char *channel, char *id) -{ + if (!UserSoundOn) return; + if (!SoundInitialized) return; + + for (i = 0; i < SIM_NSOUNDS; i++) { + if (!strcmp(sounds[i].id, id)) + break; + } + + snprintf(filename, sizeof(filename), "%s/sounds/%s", ResourceDir, + sounds[i].file); + + snprintf(player, sizeof(player), "%s/sounds/player", ResourceDir); + + pid = fork(); + + switch(pid) { + case 0: + execl(player, player, filename, NULL); + break; + case -1: + perror("fork failed"); + break; + default: + break; + } } StartBulldozer(void) { + MakeSound(0, "Rumble"); } StopBulldozer(void) @@ -293,6 +312,15 @@ StopBulldozer(void) #endif +MakeSoundOn(SimView *view, char *channel, char *id) +{ + if (!UserSoundOn) return; + if (!SoundInitialized) return; + + MakeSound(channel, id); +} + + /* XXX comefrom: doKeyEvent */ SoundOff(void) {