# HG changeset patch # User Neil Muller # Date 1282812865 -7200 # Node ID 9531a22721d182f4eb743f5f48135bd00c60f62e # Parent 7bedca2376f54f714a0ec514de29edcd35d9d2f5 Add support for lists of results diff -r 7bedca2376f5 -r 9531a22721d1 gamelib/gamescreen.py --- a/gamelib/gamescreen.py Thu Aug 26 09:48:49 2010 +0200 +++ b/gamelib/gamescreen.py Thu Aug 26 10:54:25 2010 +0200 @@ -14,9 +14,10 @@ from cursor import CursorWidget from hand import HandButton from popupmenu import PopupMenu, PopupMenuButton -from state import initial_state, Item +from state import initial_state, Item, handle_result from widgets import MessageDialog + class InventoryView(PaletteView): sel_color = Color("yellow") @@ -40,8 +41,7 @@ else: if self.state.tool: result = self.state.inventory[item_no].interact(self.state.tool, self.state) - if result: - result.process(self.state_widget) + handle_result(result, self.state_widget) else: self.state.set_tool(self.state.inventory[item_no]) @@ -73,8 +73,7 @@ self._mouse_move(event.pos) else: result = self.state.interact(event.pos) - if result: - result.process(self) + handle_result(result, self) def animate(self): if self.state.animate(): @@ -83,8 +82,7 @@ # We do this here so we can get enter and leave events regardless # of what happens result = self.state.check_enter_leave(self.screen) - if result: - result.process(self) + handle_result(result, self) def mouse_move(self, event): if not self.subwidgets: @@ -134,8 +132,7 @@ self.state.set_tool(None) return result = self.state.interact_detail(self.global_to_local(event.pos)) - if result: - result.process(self) + handle_result(result, self) def mouse_move(self, event): self._mouse_move(event.pos) diff -r 7bedca2376f5 -r 9531a22721d1 gamelib/state.py --- a/gamelib/state.py Thu Aug 26 09:48:49 2010 +0200 +++ b/gamelib/state.py Thu Aug 26 10:54:25 2010 +0200 @@ -34,6 +34,16 @@ if self.detail_view: scene_widget.show_detail(self.detail_view) + +def handle_result(result, scene_widget): + """Handle dealing with result or result sequences""" + if result: + if hasattr(result, 'process'): + result.process(scene_widget) + else: + for res in result: + res.process(scene_widget) + def initial_state(): """Load the initial state.""" state = State()