Mercurial > boomslang
comparison pyntnclick/engine.py @ 639:fdc63049b08c pyntnclick
Add game_description to the widgets,, since it looks a useful thing to do
author | Neil Muller <neil@dip.sun.ac.za> |
---|---|
date | Sun, 12 Feb 2012 01:31:14 +0200 |
parents | 660ef5793886 |
children | 363b603794f5 |
comparison
equal
deleted
inserted
replaced
638:d1ec9e739e23 | 639:fdc63049b08c |
---|---|
11 # takes an event type | 11 # takes an event type |
12 MUSIC_ENDED = USEREVENT + 1 | 12 MUSIC_ENDED = USEREVENT + 1 |
13 | 13 |
14 | 14 |
15 class Engine(object): | 15 class Engine(object): |
16 def __init__(self, game_description): | 16 def __init__(self, gd): |
17 self._screen = None | 17 self._screen = None |
18 self._game_description = game_description | 18 self._gd = gd |
19 self.screens = {} | 19 self.screens = {} |
20 | 20 |
21 def set_screen(self, screen_name): | 21 def set_screen(self, screen_name): |
22 if self._screen is not None: | 22 if self._screen is not None: |
23 self._screen.on_exit() | 23 self._screen.on_exit() |
38 events = get_events() | 38 events = get_events() |
39 for ev in events: | 39 for ev in events: |
40 if ev.type == QUIT: | 40 if ev.type == QUIT: |
41 return | 41 return |
42 elif ev.type == MUSIC_ENDED: | 42 elif ev.type == MUSIC_ENDED: |
43 self._game_description.sound.music_ended() | 43 self._gd.sound.music_ended() |
44 elif ScreenChangeEvent.matches(ev): | 44 elif ScreenChangeEvent.matches(ev): |
45 self.set_screen(ev.screen_name) | 45 self.set_screen(ev.screen_name) |
46 elif ScreenEvent.matches(ev): | 46 elif ScreenEvent.matches(ev): |
47 self.screens[ev.screen_name].process_event(ev.event_name, | 47 self.screens[ev.screen_name].process_event(ev.event_name, |
48 ev.data) | 48 ev.data) |
50 self._screen.dispatch(ev) | 50 self._screen.dispatch(ev) |
51 surface = pygame.display.get_surface() | 51 surface = pygame.display.get_surface() |
52 self._screen.draw(surface) | 52 self._screen.draw(surface) |
53 flip() | 53 flip() |
54 self._fps = 1000.0 / clock.tick( | 54 self._fps = 1000.0 / clock.tick( |
55 self._game_description.constants.frame_rate) | 55 self._gd.constants.frame_rate) |
56 | 56 |
57 | 57 |
58 class Screen(object): | 58 class Screen(object): |
59 """A top level object for the screen being displayed""" | 59 """A top level object for the screen being displayed""" |
60 | 60 |
61 def __init__(self, game_description): | 61 def __init__(self, gd): |
62 # Avoid import loop | 62 # Avoid import loop |
63 from pyntnclick.widgets.base import Container | 63 from pyntnclick.widgets.base import Container |
64 | 64 |
65 self.game_description = game_description | 65 self.gd = gd |
66 self.resource = game_description.resource | 66 self.resource = gd.resource |
67 | 67 |
68 self.surface_size = game_description.constants.screen | 68 self.surface_size = gd.constants.screen |
69 self.surface = None | 69 self.surface = None |
70 self.container = Container(pygame.Rect((0, 0), self.surface_size)) | 70 self.container = Container(pygame.Rect((0, 0), self.surface_size), |
71 self.gd) | |
71 self.setup() | 72 self.setup() |
72 | 73 |
73 def on_enter(self): | 74 def on_enter(self): |
74 """Called when this becomes the current screen.""" | 75 """Called when this becomes the current screen.""" |
75 # Create the surface here as flipping between editor and | 76 # Create the surface here as flipping between editor and |