# HG changeset patch # User Neil Muller # Date 1282585507 -7200 # Node ID cab924519037ca18e8740d5ff458869eb6ef16a1 # Parent c21e4521512e9f69cbb46fd03f2008a04b8166aa Move some description management from widget to state object diff -r c21e4521512e -r cab924519037 gamelib/gamescreen.py --- a/gamelib/gamescreen.py Mon Aug 23 19:07:35 2010 +0200 +++ b/gamelib/gamescreen.py Mon Aug 23 19:45:07 2010 +0200 @@ -63,11 +63,12 @@ # FIXME: add some timer to invalidate msgs print msg self.state.clear_message() + desc = self.state.get_description() + if desc: + print desc def mouse_move(self, event): - old_desc = self.description - self.description = self.state.get_description(event.pos) - if self.description != old_desc: + if self.state.check_for_new_description(event.pos): # queue a redraw self.invalidate() diff -r c21e4521512e -r cab924519037 gamelib/state.py --- a/gamelib/state.py Mon Aug 23 19:07:35 2010 +0200 +++ b/gamelib/state.py Mon Aug 23 19:45:07 2010 +0200 @@ -36,6 +36,7 @@ self.inventory = [] # Result of the most recent action self.msg = None + self.description = None # current scene self.current_scene = None @@ -68,9 +69,16 @@ def clear_message(self): self.msg = None - def get_description(self, pos): - """Get the description associated with current mouse position""" - return self.current_scene.get_description(pos) + # FIXME: sort out how state.interact and description updating should work + + def check_for_new_description(self, pos): + """Check if the current mouse position causes a new description""" + old_desc = self.description + self.description = self.current_scene.check_description(pos) + return old_desc != self.description + + def get_description(self): + return self.description def message(self, msg): self.msg = msg @@ -136,7 +144,7 @@ self.draw_background(surface) self.draw_things(surface) - def get_description(self, pos): + def check_description(self, pos): desc = None for thing in self.things.itervalues(): # Last thing in the list that matches wins