Mercurial > rinkhals
annotate gamelib/main.py @ 591:6b21b2140262 1.5.x
Merge r594 and r595 from trunk.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sat, 28 Nov 2009 23:27:38 +0000 |
parents | 36e1939c732a |
children |
rev | line source |
---|---|
2 | 1 '''Game main module. |
2 | |
3 Contains the entry point used by the run_game.py script. | |
4 | |
5 Feel free to put all your game code here, or in other modules in this "gamelib" | |
6 package. | |
7 ''' | |
8 | |
411
03d5cb669298
Add config file and command line parameters.
Jeremy Thurgood <firxen@gmail.com>
parents:
389
diff
changeset
|
9 import sys |
03d5cb669298
Add config file and command line parameters.
Jeremy Thurgood <firxen@gmail.com>
parents:
389
diff
changeset
|
10 |
4
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
2
diff
changeset
|
11 import pygame |
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
2
diff
changeset
|
12 from pgu import gui |
586
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
13 from pygame.locals import SWSURFACE, SRCALPHA |
4
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
2
diff
changeset
|
14 |
591
6b21b2140262
Merge r594 and r595 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
586
diff
changeset
|
15 import sound |
5
67b79658b047
Refactor and simplify menu.
Simon Cross <hodgestar@gmail.com>
parents:
4
diff
changeset
|
16 import constants |
411
03d5cb669298
Add config file and command line parameters.
Jeremy Thurgood <firxen@gmail.com>
parents:
389
diff
changeset
|
17 from config import config |
351 | 18 import data |
586
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
19 from misc import WarnDialog |
4
e8ddbc95cbf3
Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents:
2
diff
changeset
|
20 |
151
082868bea873
Refactor UI so that only a single gui.App is used. Pass all UI events via main_app. Change Toolbar table to use .td() everywhere. Move toolbar to top.
Simon Cross <hodgestar@gmail.com>
parents:
139
diff
changeset
|
21 def create_main_app(screen): |
082868bea873
Refactor UI so that only a single gui.App is used. Pass all UI events via main_app. Change Toolbar table to use .td() everywhere. Move toolbar to top.
Simon Cross <hodgestar@gmail.com>
parents:
139
diff
changeset
|
22 """Create an app with a background widget.""" |
139
1d73de63bd71
Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents:
124
diff
changeset
|
23 app = gui.App() |
151
082868bea873
Refactor UI so that only a single gui.App is used. Pass all UI events via main_app. Change Toolbar table to use .td() everywhere. Move toolbar to top.
Simon Cross <hodgestar@gmail.com>
parents:
139
diff
changeset
|
24 background = pygame.Surface(screen.get_size()) |
082868bea873
Refactor UI so that only a single gui.App is used. Pass all UI events via main_app. Change Toolbar table to use .td() everywhere. Move toolbar to top.
Simon Cross <hodgestar@gmail.com>
parents:
139
diff
changeset
|
25 widget = gui.Image(background) |
082868bea873
Refactor UI so that only a single gui.App is used. Pass all UI events via main_app. Change Toolbar table to use .td() everywhere. Move toolbar to top.
Simon Cross <hodgestar@gmail.com>
parents:
139
diff
changeset
|
26 app.init(widget, screen) |
11
5d58a5b13731
Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents:
7
diff
changeset
|
27 return app |
5
67b79658b047
Refactor and simplify menu.
Simon Cross <hodgestar@gmail.com>
parents:
4
diff
changeset
|
28 |
586
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
29 def complaint_dialog(message): |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
30 """Create a complaint dialog""" |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
31 app = gui.App() |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
32 |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
33 def close(_w): |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
34 app.quit() |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
35 |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
36 app.close = close |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
37 |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
38 dialog = WarnDialog('Problem starting Fox Assault', |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
39 message) |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
40 app.run(dialog) |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
41 sys.exit(1) |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
42 |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
43 def sanity_check(): |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
44 """Run some sanity checks, and complain if they fail""" |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
45 try: |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
46 pygame.Surface((100, 100), flags=SRCALPHA) |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
47 except Exception, e: |
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
48 complaint_dialog("Unable to create a suitable screen, please check your display settings") |
591
6b21b2140262
Merge r594 and r595 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
586
diff
changeset
|
49 if sound.SOUND_INITIALIZED: |
6b21b2140262
Merge r594 and r595 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
586
diff
changeset
|
50 try: |
6b21b2140262
Merge r594 and r595 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
586
diff
changeset
|
51 sound.play_sound('silence.ogg') |
6b21b2140262
Merge r594 and r595 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
586
diff
changeset
|
52 sound.background_music('silence.ogg') |
6b21b2140262
Merge r594 and r595 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
586
diff
changeset
|
53 except pygame.error: |
6b21b2140262
Merge r594 and r595 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
586
diff
changeset
|
54 complaint_dialog('Error trying to play sound. Please run with --no-sound') |
6b21b2140262
Merge r594 and r595 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
586
diff
changeset
|
55 sound.stop_background_music() |
586
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
56 |
11
5d58a5b13731
Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents:
7
diff
changeset
|
57 def main(): |
5d58a5b13731
Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents:
7
diff
changeset
|
58 """Main script.""" |
411
03d5cb669298
Add config file and command line parameters.
Jeremy Thurgood <firxen@gmail.com>
parents:
389
diff
changeset
|
59 config.configure(sys.argv[1:]) |
591
6b21b2140262
Merge r594 and r595 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
586
diff
changeset
|
60 sound.init_sound() |
586
36e1939c732a
Merge r588, r589 and r590 from trunk.
Simon Cross <hodgestar@gmail.com>
parents:
411
diff
changeset
|
61 sanity_check() |
11
5d58a5b13731
Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents:
7
diff
changeset
|
62 screen = pygame.display.set_mode(constants.SCREEN, SWSURFACE) |
351 | 63 pygame.display.set_icon(pygame.image.load( |
64 data.filepath('icons/foxassault24x24.png'))) | |
151
082868bea873
Refactor UI so that only a single gui.App is used. Pass all UI events via main_app. Change Toolbar table to use .td() everywhere. Move toolbar to top.
Simon Cross <hodgestar@gmail.com>
parents:
139
diff
changeset
|
65 main_app = create_main_app(screen) |
082868bea873
Refactor UI so that only a single gui.App is used. Pass all UI events via main_app. Change Toolbar table to use .td() everywhere. Move toolbar to top.
Simon Cross <hodgestar@gmail.com>
parents:
139
diff
changeset
|
66 |
082868bea873
Refactor UI so that only a single gui.App is used. Pass all UI events via main_app. Change Toolbar table to use .td() everywhere. Move toolbar to top.
Simon Cross <hodgestar@gmail.com>
parents:
139
diff
changeset
|
67 from engine import Engine, MainMenuState |
082868bea873
Refactor UI so that only a single gui.App is used. Pass all UI events via main_app. Change Toolbar table to use .td() everywhere. Move toolbar to top.
Simon Cross <hodgestar@gmail.com>
parents:
139
diff
changeset
|
68 |
411
03d5cb669298
Add config file and command line parameters.
Jeremy Thurgood <firxen@gmail.com>
parents:
389
diff
changeset
|
69 engine = Engine(main_app, config.level_name) |
58
2afdccfb9c67
Hide keyboard interrupt message on Ctrl-C exit.
Simon Cross <hodgestar@gmail.com>
parents:
11
diff
changeset
|
70 try: |
2afdccfb9c67
Hide keyboard interrupt message on Ctrl-C exit.
Simon Cross <hodgestar@gmail.com>
parents:
11
diff
changeset
|
71 engine.run(MainMenuState(engine), screen) |
2afdccfb9c67
Hide keyboard interrupt message on Ctrl-C exit.
Simon Cross <hodgestar@gmail.com>
parents:
11
diff
changeset
|
72 except KeyboardInterrupt: |
2afdccfb9c67
Hide keyboard interrupt message on Ctrl-C exit.
Simon Cross <hodgestar@gmail.com>
parents:
11
diff
changeset
|
73 pass |