comparison gamelib/gamescreen.py @ 120:48d24a48d0ce

Enter and leave hooks
author Neil Muller <neil@dip.sun.ac.za>
date Tue, 24 Aug 2010 17:24:54 +0200
parents d5f7cccfdb6c
children 2f672e98d488
comparison
equal deleted inserted replaced
119:d5f7cccfdb6c 120:48d24a48d0ce
73 self.detail = DetailWindow(state) 73 self.detail = DetailWindow(state)
74 74
75 def draw(self, surface): 75 def draw(self, surface):
76 self.state.draw(surface) 76 self.state.draw(surface)
77 77
78 def _process_result(self, result):
79 """Helper function to do the right thing with a result object"""
80 if result:
81 if result.sound:
82 result.sound.play()
83 if result.message:
84 # Display the message as a modal dialog
85 MessageDialog(result.message, 60).present()
86 # queue a redraw to show updated state
87 self.invalidate()
88
78 def mouse_down(self, event): 89 def mouse_down(self, event):
79 if self.subwidgets: 90 if self.subwidgets:
80 self.remove(self.detail) 91 self.remove(self.detail)
81 self.state.set_current_detail(None) 92 self.state.set_current_detail(None)
82 else: 93 else:
83 result = self.state.interact(event.pos) 94 result = self.state.interact(event.pos)
84 if result: 95 self._process_result(result)
85 if result.sound:
86 result.sound.play()
87 if result.message:
88 # Display the message as a modal dialog
89 MessageDialog(result.message, 60).present()
90 # queue a redraw to show updated state
91 self.invalidate()
92 96
93 def animate(self): 97 def animate(self):
94 if self.state.animate(): 98 if self.state.animate():
95 # queue a redraw 99 # queue a redraw
96 self.invalidate() 100 self.invalidate()
101 # We do this here so we can get enter and leave events regardless
102 # of what happens
103 result = self.state.check_enter_leave()
104 self._process_result(result)
97 105
98 def mouse_move(self, event): 106 def mouse_move(self, event):
99 if not self.subwidgets: 107 if not self.subwidgets:
100 self.state.mouse_move(event.pos) 108 self.state.mouse_move(event.pos)
101 109