Mercurial > skaapsteker
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)