changeset 43:bad4bebb3fff

Got rid of try_walk()
author Radomir Dopieralski <moindev@sheep.art.pl>
date Wed, 26 Dec 2007 10:30:50 +0100
parents 208429f8cc72
children b673723e3c51
files lib/game.py
diffstat 1 files changed, 23 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lib/game.py	Wed Dec 26 10:12:48 2007 +0100
+++ b/lib/game.py	Wed Dec 26 10:30:50 2007 +0100
@@ -43,30 +43,42 @@
                 self.key_pressed = event.key
 
     def player_input(self):
+        from monster import MoveError, MoveBump, MoveBlocked
         while True:
             key_pressed = self.key_pressed
             self.key_pressed = None
             keys = pygame.key.get_pressed()
-            if keys[K_UP] or key_pressed==K_UP:
-                if self.try_walk(1):
+            key = lambda k: keys[k] or key_pressed==k
+            av = self.level.player
+            try:
+                if key(K_UP):
+                    d = 1
+                    av.walk(d)
                     return
-            elif keys[K_DOWN] or key_pressed==K_DOWN:
-                if self.try_walk(3):
+                elif key(K_DOWN):
+                    d = 3
+                    av.walk(d)
                     return
-            elif keys[K_LEFT] or key_pressed==K_LEFT:
-                if self.try_walk(4):
+                elif key(K_LEFT):
+                    d = 4
+                    av.walk(d)
                     return
-            elif keys[K_RIGHT] or key_pressed==K_RIGHT:
-                if self.try_walk(2):
+                elif key(K_RIGHT):
+                    d = 2
+                    av.walk(d)
                     return
-            elif key_pressed==K_SPACE:
+            except MoveBump, bump:
+                av.attack(d, bump.monster)
+                return
+            except MoveError:
+                mesg.Mesg(self.display, av, "blocked")                
+            if key(K_SPACE):
                 av.wait()
                 return
-            elif key_pressed==K_ESCAPE:
+            elif key(K_ESCAPE):
                 sys.exit(0)
             else:
                 self.show_frame()
-            self.key_pressed = None
 
     def main_loop(self):
         self.display.refresh()