Mercurial > boomslang
diff pyntnclick/sound.py @ 548:ded4324b236e pyntnclick
Moved stuff around, broke everything.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 11 Feb 2012 13:10:18 +0200 |
parents | gamelib/sound.py@6df527142e69 |
children | 2f7aa3cad77c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyntnclick/sound.py Sat Feb 11 13:10:18 2012 +0200 @@ -0,0 +1,75 @@ +# Sound management for Suspended Sentence + +# This re-implements some of the albow.resource code to +# a) work around an annoying bugs +# b) add some missing functionality (disable_sound) + +import os + +import pygame +from pygame.mixer import music +from albow.resource import _resource_path, dummy_sound +import albow.music + +sound_cache = {} + + +def get_sound(*names): + if sound_cache is None: + return dummy_sound + path = _resource_path("sounds", names) + sound = sound_cache.get(path) + if not sound: + if not os.path.isfile(path): + missing_sound("File does not exist", path) + return dummy_sound + try: + from pygame.mixer import Sound + except ImportError, e: + no_sound(e) + return dummy_sound + try: + sound = Sound(path) + except pygame.error, e: + missing_sound(e, path) + return dummy_sound + sound_cache[path] = sound + return sound + + +def no_sound(e): + global sound_cache + print "get_sound: %s" % e + print "get_sound: Sound not available, continuing without it" + sound_cache = None + albow.music.music_enabled = False + + +def disable_sound(): + global sound_cache + sound_cache = None + albow.music.music_enabled = False + + +def missing_sound(e, name): + print "albow.resource.get_sound: %s: %s" % (name, e) + + +def start_next_music(): + """Start playing the next item from the current playlist immediately.""" + if albow.music.music_enabled and albow.music.current_playlist: + next_music = albow.music.current_playlist.next() + if next_music: + #print "albow.music: loading", repr(next_music) + music.load(next_music) + music.play() + albow.music.next_change_delay = albow.music.change_delay + albow.music.current_music = next_music + + +def get_current_playlist(): + if albow.music.music_enabled and albow.music.current_playlist: + return albow.music.current_playlist + +# Monkey patch +albow.music.start_next_music = start_next_music