diff skaapsteker/sprites/player.py @ 144:6b488e1351a5

Buggy ground implementation. Make the world less bouncy
author Neil Muller <drnlmuller@gmail.com>
date Tue, 05 Apr 2011 15:46:13 +0200
parents 51bcc909873d
children 887d69907b22
line wrap: on
line diff
--- a/skaapsteker/sprites/player.py	Tue Apr 05 15:00:31 2011 +0200
+++ b/skaapsteker/sprites/player.py	Tue Apr 05 15:46:13 2011 +0200
@@ -39,16 +39,16 @@
         if self._animation_frame >= len(images):
             self._animation_frame = 0.0
         if self.rect:
-            cur_pos = self.rect.topleft
+            cur_pos = self.collide_rect.topleft
         else:
             cur_pos = (0, 0)
         self.image = images[int(self._animation_frame)]
         self.rect = self.image.get_rect()
         self.collide_rect = self.image.get_bounding_rect(1)
-        self.rect_offset = self.collide_rect.left - self.rect.left, self.collide_rect.top - self.rect.top
-        self.rect.topleft = cur_pos
-        self.collide_rect.topleft = cur_pos[0] + self.rect_offset[0], cur_pos[1] + self.rect_offset[1]
-
+        self.rect_offset = self.rect.left - self.collide_rect.left, self.rect.top - self.collide_rect.top
+        self.collide_rect.topleft = cur_pos
+        self.rect.topleft = cur_pos[0] + self.rect_offset[0], cur_pos[1] + self.rect_offset[1]
+        self.init_pos()
 
     def update(self):
         v_x, v_y = self.velocity
@@ -65,8 +65,8 @@
 
     def set_pos(self, pos):
         self.starting_tile_pos = pos
-        self.collide_rect.topleft = pos[0] * TILE_SIZE[0] + self.rect_offset[0], pos[1] * TILE_SIZE[1] + self.rect_offset[1]
-        self.rect.topleft = pos[0] * TILE_SIZE[0], pos[1] * TILE_SIZE[1]
+        self.rect.topleft = pos[0] * TILE_SIZE[0] + self.rect_offset[0], pos[1] * TILE_SIZE[1] + self.rect_offset[1]
+        self.collide_rect.topleft = pos[0] * TILE_SIZE[0], pos[1] * TILE_SIZE[1]
 
     def action_left(self):
         if self.facing != 'left':
@@ -81,7 +81,9 @@
         self.deltav((100.0, 0.0))
 
     def action_up(self):
-        self.deltav((0.0, -100.0))
+        if self.on_ground:
+            self.deltav((0.0, -350.0))
+            self.on_ground = False
 
     def action_down(self):
         self.deltav((0.0, 100.0))