Mercurial > skaapsteker
view skaapsteker/sound.py @ 553:62569f486ede
Debug print cleanup.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 10 Apr 2011 01:46:10 +0200 |
parents | 0ffb493a6fa4 |
children | 0675f390653c |
line wrap: on
line source
"""Support for playing sounds and music""" from pygame import mixer import pygame from . import data from .constants import FREQ, BITSIZE, CHANNELS, BUFFER _GLOBAL_SOUND = None def load_sound(key, track_name, volume=None): if _GLOBAL_SOUND is not None: _GLOBAL_SOUND.load_sound(key, track_name, volume) def play_sound(key): if _GLOBAL_SOUND is not None: _GLOBAL_SOUND.play_sound(key) class SoundSystem(object): def __init__(self, want_sound): global _GLOBAL_SOUND if want_sound: # See if we can actually enabled sound try: mixer.init(FREQ, BITSIZE, CHANNELS, BUFFER) test_sound = mixer.Sound(data.filepath('sounds/silence.ogg')) test_sound.play() self.sound_enabled = True except pygame.error: print 'Unable to enable sound' self.sound_enabled = False else: self.sound_enabled = False self._sounds = {} _GLOBAL_SOUND = self def play_background_music(self, track_name, volume=1.0): if self.sound_enabled: try: mixer.music.load(data.filepath(track_name)) mixer.music.play(-1) # Loop forever mixer.music.set_volume(volume) except pygame.error: print 'Unable to load track' def stop_music(self): if self.sound_enabled: mixer.music.stop() def load_sound(self, key, track_name, volume=None): if key in self._sounds: # First caller wins on duplicate keys return if not self.sound_enabled: self._sounds[key] = None else: self._sounds[key] = pygame.mixer.Sound(data.filepath(track_name)) if volume is not None: self._sounds[key].set_volume(volume) def play_sound(self, key): sound = self._sounds.get(key, None) if sound: sound.play() def stop_all_sounds(self): if self.sound_enabled: mixer.stop() def pause(self): if self.sound_enabled: mixer.music.pause() def unpause(self): if self.sound_enabled: mixer.music.unpause()