changeset 65:cab924519037

Move some description management from widget to state object
author Neil Muller <neil@dip.sun.ac.za>
date Mon, 23 Aug 2010 19:45:07 +0200
parents c21e4521512e
children 05346a412b55
files gamelib/gamescreen.py gamelib/state.py
diffstat 2 files changed, 16 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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()
 
--- 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