changeset 269:c24588c7ba09

Make sprinting single use after double tap
author Neil Muller <drnlmuller@gmail.com>
date Fri, 08 Apr 2011 15:56:37 +0200
parents 401102f16a42
children e47efa33903b
files skaapsteker/sprites/player.py
diffstat 1 files changed, 16 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/skaapsteker/sprites/player.py	Fri Apr 08 15:41:01 2011 +0200
+++ b/skaapsteker/sprites/player.py	Fri Apr 08 15:56:37 2011 +0200
@@ -30,7 +30,7 @@
         # State flags and such
         self.attacking = 0
         self.running = False
-        self.sprinting = False
+        self.sprinting = 0
         self.jumping = False
         self.flying = False
         self._load_images()
@@ -94,15 +94,19 @@
                 # Force animation frame jump
                 self._animation_frame = old_frame + 1
                 self._last_time = time.time()
-        if self.sprinting:
+        if self.sprinting > 0:
             if (time.time() - self._sprint_start_time) > self._max_sprint_time:
-                self.sprinting = False
+                self.sprinting = 0
         if abs(v_x) < 80:
             # Clamp when we're not moving at least 5 pixel / s
             self.velocity = (0, v_y)
+            if self.sprinting == 1:
+                self.sprinting = 0
             self.running = not self.on_solid # if you're not on something you can't stand
         else:
             self.velocity = (0, v_y) # Standard platformer physics
+            if self.sprinting > 0:
+                self.sprinting = 1
             self.running = True
         self.set_image()
         if self._collisions_seen > 2 * len(self._last_collide):
@@ -180,32 +184,34 @@
         if self.facing != 'left':
             self.facing = 'left'
             self.set_image()
-        if self.sprinting:
+        if self.sprinting > 0:
+            self.sprinting = 1
             self.deltav((-900.0, 0.0))
         else:
             self.deltav((-450.0, 0.0))
 
     def action_double_left(self):
         # FIXME: Tie this to the tails
-        if self.sprinting:
+        if self.sprinting > 0:
             return
-        self.sprinting = True
+        self.sprinting = 2
         self._sprint_start_time = time.time()
 
     def action_double_down(self):
         print 'double down tap'
 
     def action_double_right(self):
-        if self.sprinting:
+        if self.sprinting > 0:
             return
-        self.sprinting = True
+        self.sprinting =  2
         self._sprint_start_time = time.time()
 
     def action_right(self):
         if self.facing != 'right':
             self.facing = 'right'
             self.set_image()
-        if self.sprinting:
+        if self.sprinting > 0:
+            self.sprinting = 1  # Flag so stopping works
             self.deltav((900.0, 0.0))
         else:
             self.deltav((450.0, 0.0))
@@ -233,7 +239,7 @@
     def _get_action(self):
         if self.attacking:
             return 'attacking'
-        if self.sprinting and self.running:
+        if (self.sprinting > 0) and self.running:
             return 'sprinting'
         if self.running:
             return 'running'