changeset 555:b83ca72063ea

Fix bug where one NPC's dialogue could close anothers.
author Simon Cross <hodgestar@gmail.com>
date Sun, 10 Apr 2011 01:54:58 +0200
parents 51bc11e3b693
children 354f84b945f8
files skaapsteker/levelscene.py
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/skaapsteker/levelscene.py	Sun Apr 10 01:49:55 2011 +0200
+++ b/skaapsteker/levelscene.py	Sun Apr 10 01:54:58 2011 +0200
@@ -161,8 +161,11 @@
         self._world.freeze()
         self._dialogue = NotificationWidget(text)
 
-    def _close_dialogue(self):
-        if self._dialogue is not None:
+    def _close_dialogue(self, npc):
+        if isinstance(npc, basestring):
+            npc = self._npcs[npc]
+        # below works for notifications too since they don't have .npc and send None
+        if self._dialogue is not None and getattr(self._dialogue, 'npc', None) is npc:
             self._world.thaw()
             self._dialogue.close()
             self._dialogue = None
@@ -366,6 +369,6 @@
         elif engine.OpenNotification.matches(ev):
             self._open_notification(ev.text)
         elif engine.CloseDialog.matches(ev):
-            self._close_dialogue()
+            self._close_dialogue(ev.npc)
         elif engine.AddSpriteEvent.matches(ev):
             self._world.add(ev.item)