annotate 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
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
107
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
22 from constants import SCREEN, FRAME_RATE, FREQ, BITSIZE, CHANNELS, BUFFER
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
23 from sound import no_sound, disable_sound
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
24
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
25 def parse_args(args):
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
26 parser = OptionParser()
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
27 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
28 dest="sound", help="disable sound")
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
29 opts, _ = parser.parse_args(args or [])
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
30 return opts
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
31
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
32 class MainShell(Shell):
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
33 def __init__(self, display):
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
34 Shell.__init__(self, display)
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
35 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
36 self.game_screen = GameScreen(self)
105
65976205fc2d Rough Stab at basic animation support
Neil Muller <neil@dip.sun.ac.za>
parents: 102
diff changeset
37 self.set_timer(FRAME_RATE)
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
38 self.show_screen(self.menu_screen)
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
39
0
f2c3b516741b Theme is 'Caught'. Start with Skellington 1.9.
Simon Cross <hodgestar+bzr@gmail.com>
parents:
diff changeset
40 def main():
107
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
41 opts = parse_args(sys.argv)
25
f9e697e0c6ba Don't initialise the entire pygame
Stefano Rivera <stefano@rivera.za.net>
parents: 24
diff changeset
42 pygame.display.init()
f9e697e0c6ba Don't initialise the entire pygame
Stefano Rivera <stefano@rivera.za.net>
parents: 24
diff changeset
43 pygame.font.init()
107
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
44 if opts.sound:
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
45 try:
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
46 pygame.mixer.init(FREQ, BITSIZE, CHANNELS, BUFFER)
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
47 except pygame.error, exc:
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
48 no_sound(exc)
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
49 else:
5213b45fcc7e Initial event sound support
Neil Muller <neil@dip.sun.ac.za>
parents: 105
diff changeset
50 # 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
51 disable_sound()
37
d449c4674da8 Fix call to set mode.
Simon Cross <hodgestar+bzr@gmail.com>
parents: 28
diff changeset
52 display = pygame.display.set_mode(SCREEN, SWSURFACE)
17
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
53 shell = MainShell(display)
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
54 shell.run()
55f1969e41c9 Add simple menu screen
Neil Muller <neil@dip.sun.ac.za>
parents: 0
diff changeset
55