Mercurial > mamba
annotate mamba/__main__.py @ 548:af8e16742b23
Fix uncurated level loading.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sun, 18 Sep 2011 03:06:55 +0200 |
parents | e94f2b7df88d |
children | 55e9c1b8e94c |
rev | line source |
---|---|
3
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
1 """Main module for the game""" |
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
2 |
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
3 import sys |
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
4 import pygame |
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
5 from pygame.locals import SWSURFACE |
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
6 |
450 | 7 from mamba.constants import SCREEN, NAME, WINDOW_ICON |
48
a70ded879f46
Move argument checking into mamba.options.
Simon Cross <hodgestar@gmail.com>
parents:
42
diff
changeset
|
8 from mamba.options import options, parse_args, check_args |
12 | 9 from mamba.engine import Engine |
402
001c3797a63b
Editor now uses templates and the user level directory.
Jeremy Thurgood <firxen@gmail.com>
parents:
366
diff
changeset
|
10 from mamba.gamestate import load_state |
30 | 11 from mamba.sound import SoundSystem |
15
ad2bcbf492bf
Hook up top-level habitat support.
Simon Cross <hodgestar@gmail.com>
parents:
12
diff
changeset
|
12 from mamba.habitats.mainmenu import MainMenu |
408
98ccef2a1a3c
Level loading refactorage.
Jeremy Thurgood <firxen@gmail.com>
parents:
402
diff
changeset
|
13 from mamba.habitats.levelmenu import OfficialLevelMenu |
362
cc8be536a7fc
Add ability to play uncurated levels via the command line.
Simon Cross <hodgestar@gmail.com>
parents:
361
diff
changeset
|
14 from mamba.habitats.userlevelmenu import UserLevelApi |
22
a396e34476ca
Put LevelHabitat into __main__.
Simon Cross <hodgestar@gmail.com>
parents:
17
diff
changeset
|
15 from mamba.habitats.level import LevelHabitat |
42
8521c142cd43
Add habitat for editor and reshuffle when options are checked to before initializing the display window.
Simon Cross <hodgestar@gmail.com>
parents:
39
diff
changeset
|
16 from mamba.habitats.editor import EditorHabitat |
314
fba74abad7b7
Pass Level() objects to LevelHabitat and LevelEditorHabitat, in preparation for generating thumbnails from levels in levelmenu
Stefano Rivera <stefano@rivera.za.net>
parents:
166
diff
changeset
|
17 from mamba.level import Level |
450 | 18 from mamba.data import load_image |
3
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
19 |
17
236de980209a
Add simple command line processing
Neil Muller <drnlmuller@gmail.com>
parents:
15
diff
changeset
|
20 |
0 | 21 def main(): |
3
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
22 """Launch the currently unnamed mamab game""" |
39 | 23 parse_args(sys.argv) |
48
a70ded879f46
Move argument checking into mamba.options.
Simon Cross <hodgestar@gmail.com>
parents:
42
diff
changeset
|
24 if not check_args(): |
a70ded879f46
Move argument checking into mamba.options.
Simon Cross <hodgestar@gmail.com>
parents:
42
diff
changeset
|
25 sys.exit(1) |
42
8521c142cd43
Add habitat for editor and reshuffle when options are checked to before initializing the display window.
Simon Cross <hodgestar@gmail.com>
parents:
39
diff
changeset
|
26 |
366
d759f49c477d
Option for printing list of uncurated levels.
Simon Cross <hodgestar@gmail.com>
parents:
362
diff
changeset
|
27 if options.list_uncurated: |
d759f49c477d
Option for printing list of uncurated levels.
Simon Cross <hodgestar@gmail.com>
parents:
362
diff
changeset
|
28 api = UserLevelApi("uncurated") |
d759f49c477d
Option for printing list of uncurated levels.
Simon Cross <hodgestar@gmail.com>
parents:
362
diff
changeset
|
29 api.print_levels() |
d759f49c477d
Option for printing list of uncurated levels.
Simon Cross <hodgestar@gmail.com>
parents:
362
diff
changeset
|
30 sys.exit() |
d759f49c477d
Option for printing list of uncurated levels.
Simon Cross <hodgestar@gmail.com>
parents:
362
diff
changeset
|
31 |
39 | 32 SoundSystem(options.sound) |
3
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
33 pygame.display.init() |
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
34 pygame.font.init() |
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
35 pygame.display.set_mode(SCREEN, SWSURFACE) |
450 | 36 pygame.display.set_icon(load_image(WINDOW_ICON)) |
52
d09f63429b80
Add screen size fiddling to editor habitat
Neil Muller <drnlmuller@gmail.com>
parents:
51
diff
changeset
|
37 pygame.display.set_caption(NAME) |
3
6b9fa5e2fbc6
Add initial window that does very little
Neil Muller <drnlmuller@gmail.com>
parents:
0
diff
changeset
|
38 |
166
bea4857487de
Game state and level list
Stefano Rivera <stefano@rivera.za.net>
parents:
52
diff
changeset
|
39 load_state() |
bea4857487de
Game state and level list
Stefano Rivera <stefano@rivera.za.net>
parents:
52
diff
changeset
|
40 |
48
a70ded879f46
Move argument checking into mamba.options.
Simon Cross <hodgestar@gmail.com>
parents:
42
diff
changeset
|
41 if options.edit: |
361
d4062344d8f4
Level namespaces (for telling that a level is complete, no matter where it came from)
Stefano Rivera <stefano@rivera.za.net>
parents:
355
diff
changeset
|
42 start = EditorHabitat(Level(options.level, 'official')) |
48
a70ded879f46
Move argument checking into mamba.options.
Simon Cross <hodgestar@gmail.com>
parents:
42
diff
changeset
|
43 elif options.level is not None: |
361
d4062344d8f4
Level namespaces (for telling that a level is complete, no matter where it came from)
Stefano Rivera <stefano@rivera.za.net>
parents:
355
diff
changeset
|
44 start = LevelHabitat(Level(options.level, 'official'), |
511 | 45 OfficialLevelMenu.go_menu, |
408
98ccef2a1a3c
Level loading refactorage.
Jeremy Thurgood <firxen@gmail.com>
parents:
402
diff
changeset
|
46 OfficialLevelMenu.go_menu) |
362
cc8be536a7fc
Add ability to play uncurated levels via the command line.
Simon Cross <hodgestar@gmail.com>
parents:
361
diff
changeset
|
47 elif options.uncurated is not None: |
cc8be536a7fc
Add ability to play uncurated levels via the command line.
Simon Cross <hodgestar@gmail.com>
parents:
361
diff
changeset
|
48 api = UserLevelApi("uncurated") |
cc8be536a7fc
Add ability to play uncurated levels via the command line.
Simon Cross <hodgestar@gmail.com>
parents:
361
diff
changeset
|
49 start = LevelHabitat(api.get_level(options.uncurated), |
548
af8e16742b23
Fix uncurated level loading.
Simon Cross <hodgestar@gmail.com>
parents:
511
diff
changeset
|
50 sys.exit, sys.exit) |
48
a70ded879f46
Move argument checking into mamba.options.
Simon Cross <hodgestar@gmail.com>
parents:
42
diff
changeset
|
51 else: |
a70ded879f46
Move argument checking into mamba.options.
Simon Cross <hodgestar@gmail.com>
parents:
42
diff
changeset
|
52 start = MainMenu() |
a70ded879f46
Move argument checking into mamba.options.
Simon Cross <hodgestar@gmail.com>
parents:
42
diff
changeset
|
53 |
12 | 54 engine = Engine() |
17
236de980209a
Add simple command line processing
Neil Muller <drnlmuller@gmail.com>
parents:
15
diff
changeset
|
55 engine.set_habitat(start) |
348 | 56 try: |
57 engine.run() | |
58 except KeyboardInterrupt: | |
59 pass | |
51
e5f36843f7cd
Add on_enter and on_exit methods to habitats.
Simon Cross <hodgestar@gmail.com>
parents:
48
diff
changeset
|
60 engine.set_habitat(None) # clear habitat |