diff pyntnclick/main.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/main.py@02cf5537d74e
children 38fb04728ac5
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pyntnclick/main.py	Sat Feb 11 13:10:18 2012 +0200
@@ -0,0 +1,77 @@
+'''Game main module.
+
+Contains the entry point used by the run_game.py script.
+
+'''
+
+# Albow looks for stuff in os.path[0], which isn't always where it expects.
+# The following horribleness fixes this.
+import sys
+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
+from albow.shell import Shell
+
+from menu import MenuScreen
+from gamescreen import GameScreen
+from endscreen import EndScreen
+from constants import (
+    SCREEN, FRAME_RATE, FREQ, BITSIZE, CHANNELS, BUFFER, DEBUG)
+from sound import no_sound, disable_sound
+import state
+import data
+
+
+def parse_args(args):
+    parser = OptionParser()
+    parser.add_option("--no-sound", action="store_false", default=True,
+            dest="sound", help="disable sound")
+    if DEBUG:
+        parser.add_option("--scene", type="str", default=None,
+            dest="scene", help="initial scene")
+        parser.add_option("--no-rects", action="store_false", default=True,
+            dest="rects", help="disable debugging rects")
+    opts, _ = parser.parse_args(args or [])
+    return opts
+
+
+class MainShell(Shell):
+    def __init__(self, display):
+        Shell.__init__(self, display)
+        self.menu_screen = MenuScreen(self)
+        self.game_screen = GameScreen(self)
+        self.end_screen = EndScreen(self)
+        self.set_timer(FRAME_RATE)
+        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()
+    if DEBUG:
+        if opts.scene is not None:
+            # debug the specified scene
+            state.DEBUG_SCENE = opts.scene
+        state.DEBUG_RECTS = opts.rects
+    display = pygame.display.set_mode(SCREEN, SWSURFACE)
+    pygame.display.set_icon(pygame.image.load(
+        data.filepath('icons/suspended_sentence24x24.png')))
+    pygame.display.set_caption("Suspended Sentence")
+    shell = MainShell(display)
+    try:
+        shell.run()
+    except KeyboardInterrupt:
+        pass