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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
f81c2ad8929b Set pygame window icon.
Simon Cross <hodgestar@gmail.com>
parents: 408
diff changeset
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
0196455fa432 Minimal event loop.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
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
cccf1675731c Add sound framework
Neil Muller <drnlmuller@gmail.com>
parents: 26
diff changeset
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
f81c2ad8929b Set pygame window icon.
Simon Cross <hodgestar@gmail.com>
parents: 408
diff changeset
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
08941f788c15 Skellington! Inna repo!
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
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
3ab5097e8757 Refactor options.
Simon Cross <hodgestar@gmail.com>
parents: 30
diff changeset
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
3ab5097e8757 Refactor options.
Simon Cross <hodgestar@gmail.com>
parents: 30
diff changeset
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
f81c2ad8929b Set pygame window icon.
Simon Cross <hodgestar@gmail.com>
parents: 408
diff changeset
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
e94f2b7df88d Fix --level.
Simon Cross <hodgestar@gmail.com>
parents: 450
diff changeset
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
0196455fa432 Minimal event loop.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
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
ca2c98447453 Gracefull Ctrl-C.
Simon Cross <hodgestar@gmail.com>
parents: 314
diff changeset
56 try:
ca2c98447453 Gracefull Ctrl-C.
Simon Cross <hodgestar@gmail.com>
parents: 314
diff changeset
57 engine.run()
ca2c98447453 Gracefull Ctrl-C.
Simon Cross <hodgestar@gmail.com>
parents: 314
diff changeset
58 except KeyboardInterrupt:
ca2c98447453 Gracefull Ctrl-C.
Simon Cross <hodgestar@gmail.com>
parents: 314
diff changeset
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