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