Mercurial > pyntnclick
diff gamelib/main.py @ 107:5213b45fcc7e
Initial event sound support
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Tue, 24 Aug 2010 14:07:07 +0200 |
parents | 65976205fc2d |
children | 97322b78d1c1 |
line wrap: on
line diff
--- a/gamelib/main.py Tue Aug 24 13:53:49 2010 +0200 +++ b/gamelib/main.py Tue Aug 24 14:07:07 2010 +0200 @@ -10,6 +10,7 @@ import os.path right_path = os.path.dirname(os.path.dirname(__file__)) sys.path.insert(0, right_path) +from optparse import OptionParser import pygame from pygame.locals import SWSURFACE @@ -18,7 +19,15 @@ from menu import MenuScreen from gamescreen import GameScreen -from constants import SCREEN, FRAME_RATE +from constants import SCREEN, FRAME_RATE, FREQ, BITSIZE, CHANNELS, BUFFER +from sound import no_sound, disable_sound + +def parse_args(args): + parser = OptionParser() + parser.add_option("--no-sound", action="store_false", default=True, + dest="sound", help="disable sound") + opts, _ = parser.parse_args(args or []) + return opts class MainShell(Shell): def __init__(self, display): @@ -29,8 +38,17 @@ self.show_screen(self.menu_screen) def main(): + opts = parse_args(sys.argv) pygame.display.init() pygame.font.init() + if opts.sound: + try: + pygame.mixer.init(FREQ, BITSIZE, CHANNELS, BUFFER) + except pygame.error, exc: + no_sound(exc) + else: + # Ensure get_sound returns nothing, so everything else just works + disable_sound() display = pygame.display.set_mode(SCREEN, SWSURFACE) shell = MainShell(display) shell.run()