annotate gamelib/main.py @ 176:c6ea3b11514c

Add --scene for selecting initial scene during debugging.
author Simon Cross <simon@simonx>
date Wed, 25 Aug 2010 13:56:38 +0200
parents 7f6b11a0d404
children 3cedc4f95925
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f2c3b516741b Theme is 'Caught'. Start with Skellington 1.9.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
1 '''Game main module.
f2c3b516741b Theme is 'Caught'. Start with Skellington 1.9.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
2
f2c3b516741b Theme is 'Caught'. Start with Skellington 1.9.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
3 Contains the entry point used by the run_game.py script.
f2c3b516741b Theme is 'Caught'. Start with Skellington 1.9.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
4
f2c3b516741b Theme is 'Caught'. Start with Skellington 1.9.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
5 '''
f2c3b516741b Theme is 'Caught'. Start with Skellington 1.9.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
6
102
322cbc0a8cce Mac build stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 37
diff changeset
7 # Albow looks for stuff in os.path[0], which isn't always where it expects.
322cbc0a8cce Mac build stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 37
diff changeset
8 # The following horribleness fixes this.
322cbc0a8cce Mac build stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 37
diff changeset
9 import sys
322cbc0a8cce Mac build stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 37
diff changeset
10 import os.path
322cbc0a8cce Mac build stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 37
diff changeset
11 right_path = os.path.dirname(os.path.dirname(__file__))
322cbc0a8cce Mac build stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 37
diff changeset
12 sys.path.insert(0, right_path)
107
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
13 from optparse import OptionParser
102
322cbc0a8cce Mac build stuff.
Jeremy Thurgood <firxen@gmail.com>
parents: 37
diff changeset
14
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
15 import pygame
37
d449c4674da8 Fix call to set mode.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 28
diff changeset
16 from pygame.locals import SWSURFACE
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
17 from albow.dialogs import alert
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
18 from albow.shell import Shell
26
0a68d137f509 Initial inventory palette thing.
Jeremy Thurgood <firxen@gmail.com>
parents: 25
diff changeset
19
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
20 from menu import MenuScreen
24
9d5de13e2ac3 Add a game screen. So far, the game content looks a *lot* like the main menu.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
21 from gamescreen import GameScreen
176
c6ea3b11514c Add --scene for selecting initial scene during debugging.
Simon Cross <simon@simonx>
parents: 149
diff changeset
22 from constants import SCREEN, FRAME_RATE, FREQ, BITSIZE, CHANNELS, BUFFER, DEBUG
107
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
23 from sound import no_sound, disable_sound
176
c6ea3b11514c Add --scene for selecting initial scene during debugging.
Simon Cross <simon@simonx>
parents: 149
diff changeset
24 import state
107
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
25
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
26 def parse_args(args):
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
27 parser = OptionParser()
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
28 parser.add_option("--no-sound", action="store_false", default=True,
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
29 dest="sound", help="disable sound")
176
c6ea3b11514c Add --scene for selecting initial scene during debugging.
Simon Cross <simon@simonx>
parents: 149
diff changeset
30 if DEBUG:
c6ea3b11514c Add --scene for selecting initial scene during debugging.
Simon Cross <simon@simonx>
parents: 149
diff changeset
31 parser.add_option("--scene", type="str", default=None,
c6ea3b11514c Add --scene for selecting initial scene during debugging.
Simon Cross <simon@simonx>
parents: 149
diff changeset
32 dest="scene", help="initial scene")
107
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
33 opts, _ = parser.parse_args(args or [])
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
34 return opts
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
35
124
97322b78d1c1 Minor style cleanups
Neil Muller <neil@dip.sun.ac.za>
parents: 107
diff changeset
36
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
37 class MainShell(Shell):
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
38 def __init__(self, display):
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
39 Shell.__init__(self, display)
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
40 self.menu_screen = MenuScreen(self)
24
9d5de13e2ac3 Add a game screen. So far, the game content looks a *lot* like the main menu.
Jeremy Thurgood <firxen@gmail.com>
parents: 20
diff changeset
41 self.game_screen = GameScreen(self)
105
65976205fc2d Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents: 102
diff changeset
42 self.set_timer(FRAME_RATE)
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
43 self.show_screen(self.menu_screen)
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
44
0
f2c3b516741b Theme is 'Caught'. Start with Skellington 1.9.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
45 def main():
107
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
46 opts = parse_args(sys.argv)
25
f9e697e0c6ba Don't initialise the entire pygame
Stefano Rivera <stefano@rivera.za.net>
parents: 24
diff changeset
47 pygame.display.init()
f9e697e0c6ba Don't initialise the entire pygame
Stefano Rivera <stefano@rivera.za.net>
parents: 24
diff changeset
48 pygame.font.init()
107
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
49 if opts.sound:
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
50 try:
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
51 pygame.mixer.init(FREQ, BITSIZE, CHANNELS, BUFFER)
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
52 except pygame.error, exc:
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
53 no_sound(exc)
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
54 else:
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
55 # Ensure get_sound returns nothing, so everything else just works
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
56 disable_sound()
176
c6ea3b11514c Add --scene for selecting initial scene during debugging.
Simon Cross <simon@simonx>
parents: 149
diff changeset
57 if DEBUG and opts.scene is not None:
c6ea3b11514c Add --scene for selecting initial scene during debugging.
Simon Cross <simon@simonx>
parents: 149
diff changeset
58 # debug the specified scene
c6ea3b11514c Add --scene for selecting initial scene during debugging.
Simon Cross <simon@simonx>
parents: 149
diff changeset
59 state.DEBUG_SCENE = opts.scene
37
d449c4674da8 Fix call to set mode.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 28
diff changeset
60 display = pygame.display.set_mode(SCREEN, SWSURFACE)
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
61 shell = MainShell(display)
149
7f6b11a0d404 Exit quietly on keyboard interrupt.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 124
diff changeset
62 try:
7f6b11a0d404 Exit quietly on keyboard interrupt.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 124
diff changeset
63 shell.run()
7f6b11a0d404 Exit quietly on keyboard interrupt.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 124
diff changeset
64 except KeyboardInterrupt:
7f6b11a0d404 Exit quietly on keyboard interrupt.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 124
diff changeset
65 pass
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
66