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()