changeset 286:71bc946ce1f1

Check if paused to avoid displaing two MessageBoxes on the screen if we manage to stack up SnakeDied events
author Stefano Rivera <stefano@rivera.za.net>
date Thu, 15 Sep 2011 23:07:18 +0200
parents cacc03748580
children d57b7f668028
files mamba/widgets/game.py mamba/world.py
diffstat 2 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/widgets/game.py	Thu Sep 15 23:02:47 2011 +0200
+++ b/mamba/widgets/game.py	Thu Sep 15 23:07:18 2011 +0200
@@ -46,10 +46,12 @@
         self.world.draw(surface)
 
     def snake_died(self, ev, widget):
-        self.world.pause()
+        if not self.world.pause():
+            return False
         messagebox = MessageBox((300, 200), 'You died!', self.restart)
         self.parent.add(messagebox)
         messagebox.grab_focus()
+        self.world.snake.alive = False
         return True
 
     def restart(self):
@@ -58,7 +60,8 @@
         self.grab_focus()
 
     def level_completed(self, ev, widget):
-        self.world.pause()
+        if not self.world.pause():
+            return False
         messagebox = MessageBox((300, 200), 'Level complete!',
                                 self.go_mainmenu)
         self.parent.add(messagebox)
--- a/mamba/world.py	Thu Sep 15 23:02:47 2011 +0200
+++ b/mamba/world.py	Thu Sep 15 23:07:18 2011 +0200
@@ -37,10 +37,12 @@
             tile.interact(self, segment)
 
     def pause(self):
-        self._paused = True
+        was_paused, self._paused = self._paused, True
+        return was_paused == False
 
     def resume(self):
-        self._paused = False
+        was_paused, self._paused = self._paused, False
+        return was_paused == True
 
     def restart(self):
         self.level.restart()