Changeset 266:be516ca5e3b8


Ignore:
Timestamp:
04/08/11 13:34:02 (12 years ago)
Author:
Neil Muller <drnlmuller@…>
Branch:
default
Phase:
public
Rebase:
61323837636331373235616639346538666461323064396365326165373864323766653863633437
Message:

Add sprinting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • skaapsteker/sprites/player.py

    r263 r266  
    1616    collides_with = set([MONSTER_LAYER])
    1717    wants_updates = True
     18
     19    _max_sprint_time = 2
    1820
    1921    def __init__(self, the_world, soundsystem):
     
    2931        self.attacking = 0
    3032        self.running = False
     33        self.sprinting = False
    3134        self.jumping = False
    3235        self.flying = False
     
    9295                self._animation_frame = old_frame + 1
    9396                self._last_time = time.time()
     97        if self.sprinting:
     98            if (time.time() - self._sprint_start_time) > self._max_sprint_time:
     99                self.sprinting = False
    94100        if abs(v_x) < 80:
    95101            # Clamp when we're not moving at least 5 pixel / s
     
    175181            self.facing = 'left'
    176182            self.set_image()
    177         self.deltav((-450.0, 0.0))
     183        if self.sprinting:
     184            self.deltav((-900.0, 0.0))
     185        else:
     186            self.deltav((-450.0, 0.0))
     187
     188    def action_double_left(self):
     189        # FIXME: Tie this to the tails
     190        if self.sprinting:
     191            return
     192        self.sprinting = True
     193        self._sprint_start_time = time.time()
     194
     195    def action_double_down(self):
     196        print 'double down tap'
     197
     198    def action_double_right(self):
     199        if self.sprinting:
     200            return
     201        self.sprinting = True
     202        self._sprint_start_time = time.time()
    178203
    179204    def action_right(self):
     
    181206            self.facing = 'right'
    182207            self.set_image()
    183         self.deltav((450.0, 0.0))
     208        if self.sprinting:
     209            self.deltav((900.0, 0.0))
     210        else:
     211            self.deltav((450.0, 0.0))
     212
    184213
    185214    def action_up(self):
     
    205234        if self.attacking:
    206235            return 'attacking'
     236        if self.sprinting and self.running:
     237            return 'sprinting'
    207238        if self.running:
    208239            return 'running'
     
    233264                            continue
    234265                        image = load_image('%s/%s' % (directory, image_file))
     266                        if action == 'running':
     267                            sprint_key = self._make_key(tails, 'sprinting')
     268                            if sprint_key not in self._image_dict:
     269                                self._image_dict[sprint_key] = []
     270                            shockwave = load_image('sprites/kitsune_shockwave.png')
     271                            if facing == 'right':
     272                                shockwave = pygame.transform.flip(shockwave, True, False)
    235273                        if facing == 'right':
    236274                            image = pygame.transform.flip(image, True, False)
    237275                        self._image_dict[key].append(image)
     276                        if action == 'running':
     277                            sprint_image = image.copy()
     278                            sprint_image.blit(shockwave, (0, 0))
     279                            self._image_dict[sprint_key].append(sprint_image)
    238280
    239281
Note: See TracChangeset for help on using the changeset viewer.