annotate gamelib/main.py @ 389:463802281182

Add basic level support (level choosing needs work)
author Neil Muller <drnlmuller@gmail.com>
date Thu, 29 Oct 2009 20:55:37 +0000
parents 4cc0b3627f83
children 03d5cb669298
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
1 '''Game main module.
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
2
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
3 Contains the entry point used by the run_game.py script.
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
4
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
5 Feel free to put all your game code here, or in other modules in this "gamelib"
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
6 package.
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
7 '''
e057e9483488 Added pyweek skellington.
Jeremy Thurgood <firxen@gmail.com>
parents:
diff changeset
8
4
e8ddbc95cbf3 Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents: 2
diff changeset
9 import pygame
e8ddbc95cbf3 Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents: 2
diff changeset
10 from pgu import gui
11
5d58a5b13731 Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents: 7
diff changeset
11 from pygame.locals import SWSURFACE
4
e8ddbc95cbf3 Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents: 2
diff changeset
12
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
13 #from engine import Engine, MainMenuState
90
23a8b2e49e9f Added ability to initialize sound and play sounds, and handle sound not working / file being missing etc
David Fraser <davidf@sjsoft.com>
parents: 58
diff changeset
14 from sound import init_sound
5
67b79658b047 Refactor and simplify menu.
Simon Cross <hodgestar@gmail.com>
parents: 4
diff changeset
15 import constants
351
4cc0b3627f83 Use proper icon
Neil Muller <drnlmuller@gmail.com>
parents: 151
diff changeset
16 import data
389
463802281182 Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents: 351
diff changeset
17 import sys
4
e8ddbc95cbf3 Silly (and broken) first stab at menu thing.
Jeremy Thurgood <firxen@gmail.com>
parents: 2
diff changeset
18
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
19 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
20 """Create an app with a background widget."""
139
1d73de63bd71 Add basic game over screen
Neil Muller <drnlmuller@gmail.com>
parents: 124
diff changeset
21 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
22 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
23 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
24 app.init(widget, screen)
11
5d58a5b13731 Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents: 7
diff changeset
25 return app
5
67b79658b047 Refactor and simplify menu.
Simon Cross <hodgestar@gmail.com>
parents: 4
diff changeset
26
11
5d58a5b13731 Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents: 7
diff changeset
27 def main():
5d58a5b13731 Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents: 7
diff changeset
28 """Main script."""
90
23a8b2e49e9f Added ability to initialize sound and play sounds, and handle sound not working / file being missing etc
David Fraser <davidf@sjsoft.com>
parents: 58
diff changeset
29 init_sound()
11
5d58a5b13731 Extremely rudimentary game engine.
Simon Cross <hodgestar@gmail.com>
parents: 7
diff changeset
30 screen = pygame.display.set_mode(constants.SCREEN, SWSURFACE)
351
4cc0b3627f83 Use proper icon
Neil Muller <drnlmuller@gmail.com>
parents: 151
diff changeset
31 pygame.display.set_icon(pygame.image.load(
4cc0b3627f83 Use proper icon
Neil Muller <drnlmuller@gmail.com>
parents: 151
diff changeset
32 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
33 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
34
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
35 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
36
389
463802281182 Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents: 351
diff changeset
37 if len(sys.argv) > 1:
463802281182 Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents: 351
diff changeset
38 level_name = sys.argv[1]
463802281182 Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents: 351
diff changeset
39 else:
463802281182 Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents: 351
diff changeset
40 level_name = 'two_weeks'
463802281182 Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents: 351
diff changeset
41
463802281182 Add basic level support (level choosing needs work)
Neil Muller <drnlmuller@gmail.com>
parents: 351
diff changeset
42 engine = Engine(main_app, level_name)
58
2afdccfb9c67 Hide keyboard interrupt message on Ctrl-C exit.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
43 try:
2afdccfb9c67 Hide keyboard interrupt message on Ctrl-C exit.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
44 engine.run(MainMenuState(engine), screen)
2afdccfb9c67 Hide keyboard interrupt message on Ctrl-C exit.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
45 except KeyboardInterrupt:
2afdccfb9c67 Hide keyboard interrupt message on Ctrl-C exit.
Simon Cross <hodgestar@gmail.com>
parents: 11
diff changeset
46 pass